Excel本身就能编写大量基础机器学习算法

电子说

1.2w人已加入

描述

编者按:当初学者第一次接触机器算法时,直观了解算法正在做什么是一项非常重要的任务,这也是论智一直推崇可视化方法的原因之一。虽然初级算法的数学计算并不难掌握,但当他们一看到满篇的数学理论和符号,学习下去的兴致和气势就消减了不少。

 

作为一名数据工作者,这年头“熟悉机器学习算法”远比“精通Excel”在求职市场上要抢手得多,但前者的“熟悉”究竟是熟悉到什么程度呢?Excel本身就能编写大量基础机器学习算法,而且对于初学者来说,这样的编写过程不仅能加深对算法的理解,还能帮助他们更充分地感受算法的美妙。

下面我们用一个例子来证明这一点。

从本质上来说,大多数数据科学算法其实就是优化问题,而其中最常用的算法之一就是梯度下降算法。对于初学者来说,梯度下降这个词可能乍一听有些可怕,但它真的这么复杂吗?

以下是一个房价预测任务:根据历史房价数据创建一个模型,结合房屋面积预测新房价格。让我们先用已有数据建立一个表格:

Excel

如上表所示,房屋面积是X,房价是Y,由此我们可以绘制历史房价数据折线图:

Excel

现在用一个简单的线性模型,对历史数据进行拟合,根据房屋面积X预测新房价格Y(pre):

Excel

在上图中,红线是我们的线性模型,因此鉴于横坐标和纵坐标信息,它的表达式是:Y(pred) = a + bX。

蓝线是已知的历史房价,从分布上简单给出了房价和房屋面积相关程度的基本信息。

连接红线和蓝线的黄色虚线表示对于同一面积的房屋,模型预测和实际房价的误差(E)。

所以我们的目标是找到最好的a和b,使误差项E最小:

残差平方和(SSE)= ½(真实房价-预测房价)2 = ½(Y - Ypred)2

(SSE只是一种方法,还可以用其他方法统计误差)

好了,下面我们就要用到梯度下降了。梯度下降是一种优化算法,它能帮我们找到优化权重(a,b),并保证模型预测的准确率。下面是具体步骤:

步骤1:用随机值初始化权重a和b,并计算误差(SSE)。

步骤2:计算梯度,即当权重从初始随机值逐渐变小时SSE的变化。这有助于我们把a和b朝SSE最小的方向优化。

步骤3:用梯度调整权重以使SSE最小化,以达到最佳值。

步骤4:用新权重进行预测,并计算新的SSE。

步骤5:重复步骤2和3,直到再次调整权重后不再明显降低预测错误率。

如果说这样描述有些泛泛而谈,下面我们就结合图表详细介绍。请牢记一点,事先把数据处理好有助于更高效的优化。

Excel

第一步: 为了拟合Y(pred) = a + bX,用随机值初始化a和b,并计算预测误差(SSE)。

Excel

第二步:计算权重的误差梯度。

∂SSE/∂a =-(Y-Ypred)

∂SSE/∂b =-(Y-Ypred)X

其中,SSE=½ (Y-Ypred)2 = ½(Y-(a+bX))2

虽然有一点点让人烦恼的微积分计算,但这已经很基础了,∂SSE/∂a和∂SSE/∂b是我们想要的梯度,它们给出了SSE“下降”的方向。

Excel

第三步:用梯度调整权重,使SSE获得最小值,也就是最佳值。

Excel

这之后我们就能用新权重更新a和b的值,以便模型沿着最优方向移动。

因为

a -∂SSE/∂a

b -∂SSE/∂b

所以更新规则就是:

新的a = a - r × ∂SSE/∂a = 0.45–0.01× 3.300 = 0.42

新的b = b - r × ∂SSE/∂b = 0.75–0.01×1.545 = 0.73

其中r=0.01是学习率,表示权重调整的步幅。

第四步:用新的a和b进行预测并计算新的SSE。

Excel

可以看到,SSE已经从0.677下降到0.553了,这意味着模型的预测准确率有所提高。

第五步:重复第二步和第三步,直到再改变a和b,SSE不再发生明显变化。

以上就是用Excel实现的梯度下降算法,比起一堆数学计算,这样图文并茂的演示是不是更有趣呢?

在MOOC课程中,除了吴恩达的deeplearning.ai和Udacity,李飞飞强烈推荐的Fast.ai也有其独到之处。这家公司的CEO Jeremy Howard是深度学习领域的一朵奇葩,他没有过硬的学术背景,也没有大型科技公司的就职经历,仅凭自学就在kaggle竞赛中锋芒毕露。对于这样一个人,他的课绝对值得初学者学习。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
datougege 2020-07-28
0 回复 举报
大牛,针对Excel来实现机器学习有更详细的资料么,十分想学习学习。 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分