首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ML-1 单变量线性回归问题之应用实例

概要:

单变量线性回归:

假设函数

代价函数

梯度下降

注意:在使用梯度下降时,应批量同时更新。式中,a为学习率,m为训练集样本个数。

实际问题:

假设你是一家餐厅公司的首席执行官,并且正在考虑在不同的城市开设一家新的分店。这个连锁店已经有很多分店在不同的城市,你有从不同城市的利润和人口的数据。你希望使用这些数据来帮助你选择要扩展到下一个城市。文件ex1data1.txt包含线性回归问题的数据集。第一栏是城市的人口,第二栏是分店在该城市的利润,利润负值表示亏损。

本文采用Python解决该实例问题。

当拿到数据时,由于只是单变量问题,首先考虑导入数据并可视化。

导入数据并可视化

得到数据整体情况

第二步,需要得数据进行进一步处理。由于数据中只有两栏数据,假设函数中含有x0这一项,需要对训练集中的每个样本前加入一个偏差项,即X0=1;然后从数据分别提取X(偏差和人口这两列数据)和y(利润这一列数据),并将X和y矩阵化,同时也初始化系数矩阵theta。

运行查看处理后的数据

第三步,需要定义代价函数,代价函数怎么理解呢,简单说,就是假设函数所得到的值与实际值之间的偏差。

第四步,定义梯度下降算法,通过梯度下降求得最小的代价函数值,以及相应的系数矩阵theta。

第五步,需要对学习率a和循环次数赋值,学习率的赋值还是很有讲究的,取得太小话,梯度下降速度会很慢;取得太大的话,梯度下降有可能会越过最优值,从而出现发散不收敛的情况。一般按着0.001,0.01,0.1,1....或0.003,0.03,0.3,3...来取。这次,来取0.01,循环次数为1500次。

第六步,梯度下降算法运算求得系数矩阵theta以及最小代价函数值,并对人口为35.000,利润为多少进行预测。

查看所得结果

最后,我们来绘制训练出来的线性模型与数据,更直观地查看拟合情况。

查看所得结果

由于梯度下降函数在每次循环都会得到一个代价函数值,这个也可以绘制。请注意,代价函数值在不断减小,这是凸优化的一个例子。

查看运行所得结果

不难看出,随着循环次数越多,代价函数值愈来愈收敛。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180203G11DAW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券