机器学习(Machine Learning)
机器学习主要由监督学习、非监督学习、半监督学习、强化学习等组成。
监督学习(Supervised Learning)
监督学习是指让计算机在一个给定的训练数据集上学习,该训练数据拥有预先给定的标记,所以称之为监督学习。监督学习的任务是通过学习得到一个模型,使模型能够对任务给定的输入,输出一个较好的预测。
根据预测输出的是离散值还是连续值可以将监督学习分为分类与回归。
回归(Regression)
对于一个机器学习任务若欲预测的值是连续值,此类学习任务称为回归。比如给定房子的面积,位置,相关配置,预测房子的销售金额。
线性回归
单变量线性回归
输入的属性的数目只有一个
输入的属性的数目只有一个
在线性回归中代价函数常采用平方误差函数
其实线性回归在训练集数据上进行训练就是为了在通过优化算法进行多次的迭代计算,得到使代价函数最小的参数θ的组合,得到了θ的组合也就意味得到了这个线性回归的模型。在求代价函数最小值的参数组合时常采用的算法是梯度下降法。
梯度下降法
其中α是学习率,它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
对于学习率,如果α太大,梯度下降法可能越过最低点,出现震荡而无法收敛,甚至发散。如果α太小,会使每次迭代移动的距离很小,以致需要很多次迭代才能达到全局的最低点。
根据经验,学习率α常采用的值为0.01, 0.03, 0.3, 0.1等
注意:在梯度下降中,需要同时更新θ0和θ1,不然会产生一些奇怪的计算问题,而且不容易被发现。所以一般在进行更新时,常采用的方法是将所有的参数组合成为一个矩阵(一般是一个行向量或者列向量),在更新时,通过矩阵的计算一次性全部更新。具体可以参见代码实现(代码链接在文章最后给出)。
由上可知,在进行梯度下降中的主要过程就是计算代价函数对于每个参数的偏导数,然后用每个参数同时去减学习率乘以它所对应的偏导数,可见该过程中相对复杂的就是计算偏导数,下面给出偏导数的计算公式,该公式参照斯坦福大学吴恩达教授的机器学习课程中的公式,也可以自行推到得出。
则梯度下降算法可改写为:
以上只是简单的单变量线性回归模型的建立,使用梯度下降法最优化参数组合得到模型参数,主要是为了初识线性回归和理解梯度下降法的应用。并没有包括一些数据的优化处理,比如数据的标准化以及过拟合的处理等。相关内容之后会慢慢引入。
线性回归代码链接(Java实现,多变量的):https://github.com/kenjewu/LinearRegression
水平有限,文章目的只是为了分享知识,错误之处还望指点。