电商运营 网站运营,台州网页设计公司,wordpress模板不一样,网站建设丶金手指花总14机器学习#xff08;一#xff09;梯度下降算法 因为算法最好能应用到实际问题中才会让读者感到它的真实的用处#xff0c;因此首先我来描述一个实际问题#xff08;梯度下降算法用以帮助解决该问题#xff09;#xff1a;给定一个指定的数据集#xff0c;比如由若干某一…机器学习一梯度下降算法 因为算法最好能应用到实际问题中才会让读者感到它的真实的用处因此首先我来描述一个实际问题梯度下降算法用以帮助解决该问题给定一个指定的数据集比如由若干某一地区的房屋面积和房屋价格这样的数据对area, price组成的集合吴恩达老师的课程是启蒙课程所以举该例子我的目标是通过一个学习算法得到一个预测房价和房屋面积之间的函数然后给定一个新的房屋面积用这个函数来预测房价。如下图所示 我的解决思路大致如下 1、我找了一个很小的数据集有两个特征X1,X2,一个输出Y 2、根据我的数据假设我的预测函数是一个线性函数 h(x): 为什么是线性函数一方面是因为通过我的数据点的分布可以预测我的预测函数模型另一方面我希望通过一个不是很复杂的函数来帮助我先理解到梯度下降算法到底做了什么这算一个线性回归问题。 3、此时我的目标是通过求得函数中的参数来得到预测函数 h (x), 合理的预测函数应该和实际值的差值越小越好因此如果我能使预测函数值和实际值的差值越小那么说明我的预测函数越好因此通过求使下面的 cost function J(Θ) 取得最小值的参数组合便能得到我的预测函数 h(x); 4、如何求 J(Θ) 的最小值呢就是应用阶梯下降算法。对于每一个参数都先设置一个初始点然后按照下面的原则不断的进行值的更新 从表达式可以看出通过对J(Θ) 求导从Θ的初始点开始相当于每次都朝着一个下降最快的方向更新值其中 α 是 learning rate, 相当于求导选定下降方向learning rate 决定下降步长 从算法实现的结果你会发现不一样的 α 会产生不一样的结果合适的步长才能得到最好的结果。通过将求导结果代入后得到 因此接下来我们要做的就是对每个参数都进行迭代更新直至收敛得到局部最优解 接下来就是算法的实现了通过实现得到参数的值然后得到预测函数最后进行预测。 这是我实现这一小块的算法截图 其中会涉及到一些向量的计算给定数据集以后将输入 X 和输出 Y 都用向量表示这可得好好儿学学另外其中的 loss 是用来记录每次迭代后得到的预测函数和实际值的差值gradient 是用来记录每次下降的梯度这样能更直观的看到这个算法究竟在干啥值得注意的还有迭代的次数 maxIteration , 它和 α 一起可以得到参数的最优解。 这是我的测试数据集输入的是X1和X2 下面是我用不同的 α 值和 maxIteration 值测试后的结果 α 0.05maxIteration 10;(因为我这次输出的辅助信息多所以只选了很少的迭代次数给大家看一下过程) 你会发现每次的loss值都在变大参数值也变得越来越离谱预测结果更是不敢恭维仅仅10次就这么大了。我又冒死试了一下迭代1000次只输出预测值别的信息不输出 结果就是 nan。 然后我改变了一下我的 α 值α 0.001 迭代10次输出一些辅助信息 你会清楚的看见 loss 在逐渐变小gradient 下降的很合理结果也令人比较满意。迭代1000次看看结果吧 嗯可以接受如果仔细的看看 上上.....图你会发现 loss 减小的速度很慢这很有可能证明你的 α 值 太小了所以逐渐增大 α 值 然后输出结果 α 0.005 maxIteration 1000 α 0.01 maxIteration 1000 α 0.01 maxIteration 2000 α 0.01 maxIteration 5000 到这就发现随着迭代次数的增加输出已经不再改变了这你应该能证明什么叫收敛了 对于大牛们来说这太小儿科了但是对于新手上路来说还是很开心的也觉得很神奇。 最后如果您有什么建议的话我非常乐意接受也希望可以一起学习 奥对如果你也想要和我一起学习算法、机器学习的内容如果你也有奇思妙想的话欢迎扫描下面的二维码关注我的公众号“说疯话的小聋瞎” 嘻嘻 注原始数据集和测试数据集来自https://www.jianshu.com/p/9bf3017e2487# 微信扫一扫关注该公众号 转载于:https://www.cnblogs.com/elsaSong/p/8620129.html