机器学习联系 逻辑回归 线性回归

感想及笔记

1.线性回归,梯度下降
1.1线性回归
线性回归在于线性和回归两字,线性回归又分为单变量回归和多变量回归。线性之前都知道,回归什么意思?回归就是尝试推测出一系列连续的值的属性。一个简单的例子:就是你的朋友想卖掉他的房子,你要告诉他这房子大概现在的市场价是多少。那你就要根据以前别人的数据,去构造一个模型,根据房子的大小以及房子的价格,画出这么一条直线,变量只有房子的大小。
机器学习联系 逻辑回归 线性回归
单变量线性回归
对于房价的预测问题,你首先要解决的是数据,有了数据就要去构造模型,对于单变量的线性回归的问题,一般假设为:机器学习联系 逻辑回归 线性回归

1.2代价函数
在单变量回归问题也存在着代价函数的问题,代价函数简单来说就是数据本身的实际值和所预测值的平方和的问题。所以代价函数又称为平方误差函数。
机器学习联系 逻辑回归 线性回归

1.3梯度下降
我们的目标就是选择出使得建模误差的平方和能够最小的模型参数(以及)。
这里说到了寻找最小的模型参数,那么梯度下降是一个用来求函数最小值的算法。梯度下降背后的思想是:开始时我们随机选择一个参数的组合(????0,????1,…,????????),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。就像我们平常下山找水喝一样(我的理解)。
机器学习联系 逻辑回归 线性回归

简单来说,我们有一个可以微分的函数,这个函数代表着一座山。我们的目标就是找个这个函数的最小值,也就是山底。那么最快的下山方向就是找到当前位置的最陡峭的方向,然后沿着此方向向下走,对应到函数中就是,找到定点的梯度,然后朝着梯度相反的方向(这也是为什么梯度下降的公式有一个负号的原因),就能让函数值下降的最快。梯度的方向就是让函数值变化最快的方向。之前虽然明白这些道理,但是没有见过,所以找了一个 这个简单函数来做了一下。(搞清楚了)
机器学习联系 逻辑回归 线性回归
(梯度下降公式)

其中????是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
对于线性回归运用梯度下降法,关键在于求出代价函数的导数:
算法为:
机器学习联系 逻辑回归 线性回归

2数据集、程序
数据集采用的是吴恩达讲解是视频上面第一个课后题的数据,类似于房子的大小和房子价格的问题。
首先去查看数据的前5行,了解数据的大概以及趋势。

机器学习联系 逻辑回归 线性回归

机器学习联系 逻辑回归 线性回归


数据属性及分布:
机器学习联系 逻辑回归 线性回归
机器学习联系 逻辑回归 线性回归
此时的数据比较小,不用进行数据特征缩放等处理。可以看见这里的X轴的范围是0-22.5,y轴的范围为0-25。这里为后面的观察错误埋下了伏笔。在处理问题时,最好都是相等的。
定义代价函数:机器学习联系 逻辑回归 线性回归
根据线性回归模型的代价函数数学公式,写出python代码。 I中theta就是机器学习联系 逻辑回归 线性回归
根据公式
机器学习联系 逻辑回归 线性回归,可以发现,对于,是一个常数,但是在后面进行矩阵的时候会不方便,所以在训练集上加上一列,以便我们可以使用向量化的解决方案来计算代价和梯度。
机器学习联系 逻辑回归 线性回归
此时数据变成了这样子。
机器学习联系 逻辑回归 线性回归

然后将变量初始化,分出x和y:
机器学习联系 逻辑回归 线性回归
得到:
机器学习联系 逻辑回归 线性回归机器学习联系 逻辑回归 线性回归

不过这里得到都是普通的数据,在后面进行处理的时候要用到矩阵,这里要先进行转换。
机器学习联系 逻辑回归 线性回归
到了这里,调用代价函数,就可以得到代价函数的值了。
机器学习联系 逻辑回归 线性回归
这里36行-41行都被注释掉了,这里是观察值的维度,看看是不是正确的。这里得到的代价函数值为:32.072733877455676。做到这里就要进行梯度下降了,就是之前提到的得到最佳模型。

这里有点不明白的是:这里求出的代价函数是不是实际值与预测函数为y = 0、在x轴上的相比较得到的。我想应该是。此时的图为
机器学习联系 逻辑回归 线性回归

梯度下降:机器学习联系 逻辑回归 线性回归
可以看出,这两个是相对应的。其中temp(1,2)的零矩阵。当迭代次数到达iters时,结束迭代。机器学习联系 逻辑回归 线性回归

输入学习率和执行的迭代次数。然后调用函数得到theta、cost。
机器学习联系 逻辑回归 线性回归

这时的代价函数的值为:4.515955503078914。

然后运用g即theta的值,可以绘制线性模型以及数据。
机器学习联系 逻辑回归 线性回归
机器学习联系 逻辑回归 线性回归

得到数据拟合图,直觉上看过去,与y轴的截距就是正的,但是求出来的值实实在在是负的。
这里就是因为x轴与y轴的长度不等造成的错觉,其实是这样的。
机器学习联系 逻辑回归 线性回归

代价函数变化趋势:
机器学习联系 逻辑回归 线性回归
机器学习联系 逻辑回归 线性回归调节学习率和迭代次数,当学习率为0.01,迭代次数为3时。有机器学习联系 逻辑回归 线性回归

从这里可以看出,该数据集的曲线应该是非常陡峭的。往后是很缓慢的。

3.多变量回归
3.1数据集
数据集采用的是吴恩达课后作业的数据。
数据的基本属性:机器学习联系 逻辑回归 线性回归

但在原始数据中不是这样的。这是因为先进行了数据的基本处理,特征归一化。标准化数据通过减去均值然后除以方差(或标准差),这种数据标准化方法经过处理后数据符合标准正态分布,即均值为0,标准差为1,转化函数为:x =(x - ????)/???? 。
之前探讨了单变量特征的回归模型,对房价模型增加更多的特征,如房间的房间数、楼层等,构成一个含有多个变量的模型。机器学习联系 逻辑回归 线性回归
在这里梯度下降和之前一样,相差不大。只是变量对了,theta的值增多了。
3.2python程序
机器学习联系 逻辑回归 线性回归
这里和单变量的相差不大,由于变量成了两个,所以theta的值增加了一个,。得到代价函数的值为:0.48936170212765967。
然后定义代价函数,使代价函数的值降到最低。在这里,学习率以及迭代次数是认为控制的。theta的值也是初始化的零矩阵。在后面的学习神经网络中,学习率能够自己学习,不用人为控制,且theta的值不能够初始化零矩阵。
机器学习联系 逻辑回归 线性回归
这里得到了代价函数为:0.13070336960771892。可见代价函数减少了。

数据可视化:
机器学习联系 逻辑回归 线性回归
机器学习联系 逻辑回归 线性回归

代价函数变化曲线:
机器学习联系 逻辑回归 线性回归
机器学习联系 逻辑回归 线性回归
这里有选择的是学习率为0.01,迭代次数为1000.此时的代价函数为0.13070336960771892。
当我选择学习率为0.00001,迭代次数为1000000。此时的代价函数为:0.1307036863842843。
机器学习联系 逻辑回归 线性回归
当你的学习率比较小时,你的迭代次数足够多时,也能达到相同的代价函数值。

总的来说:线性回归是机器学习的基础。线性是指一次,回归实际上就是拟合。就是确定一个唯一的因变量(需要预测的值)和一个或多个数值型的自变量(预测变量)之间的关系。
前面讲到的梯度下降,梯度下降的核心是以最快的速度找到最优解。目的就是找到代价函数的一组参数值,所以结合图像可知线性回归的图像是一个凸函数,也就是代价函数求导为0,也就是最低端与函数相切的那一组参数.当学习率(步长)较小的时候,达到最优解的迭代次数比较多。当学习率(步长)较大的时候,会来回震荡,但有可能找到全局最优解。但梯度下降一般找到的是局部最优解,但对于一般模型可用。批量梯度下降会考虑所有的样本,容易得到最优解,但速度比较慢。