线性回归、加权线性回归及岭回归的原理和公式推导
目录:
- 前言
- 线性回归
- 加权线性回归
- 岭回归
- 总结
前言
机器学习相关的博文相信已经很多了,作为机器学习的一枚菜鸟,写这篇博文不在于标新立异,而在于分享学习,同时也是对自己研究生生涯的总结和归纳,好好地把研究生的尾巴收好。想着比起出去毕业旅行,在实验室总结一下自己的所学,所想,所感应该更有意义吧。(其实也想出去玩,但是老板要求再出一篇文章,那只好和毕业旅行拜拜了,所以趁机写个系列吧,反正后面的时间应该就是文章+博客的双重循环了,其实也是挺美的哈)
那么对于机器学习的相关内容,大家也似乎都是从线性回归开始讲起。同样的,我也从这个主题开始讲起,主要写自己平时的一些总结,可能里面会有一些错误或者理解有误的地方,也希望大家批评指出。其实,对于这个专题可能是机器学习里面最为基础的知识点了,也有很多相关的博文,但很多写得都不够的详细,而且缺乏推导过程,往往使人看起来有些晕晕的,可能也是自己的功力不够吧(ಥ_ಥ)。同时,这里个人推荐Andrew Ng的课件作为这部分内容的参考,为保持统一,相关公式的符号来自该课件。但我写这篇博客的目的是,你只看我的博客也能很清楚的弄懂线性回归、加权线性回归以及岭回归的概念。
学习机器学习的小心得:脑袋中一定要有矩阵、向量的概念,这一点非常重要,因为我们现在处理的数据是多维的数据,所以可能无法非常直观的来表述我们的数据,所以大脑中一定要有这样的概念。然后就是Coding再Coding,这一点自己也没做好啦,惭愧。
线性回归
回归的目的就是对给定的数据预测出正确的目标值,分类的目的是对给定的数据预测出正确的类标,要注意区分这两个概念,其实我在刚接触机器学习的时候经常把这两个概念弄混。那么,对于线性回归,就是实现对给定数据目标值的预测过程。
那么对于给定的训练数据,其中。对应的,这些训练数据的目标值是。一般的,我们通过所给定的训练数据及对应的目标值来求解线性回归的参数。具体的,我们通过定义损失函数来实现对线性回归参数的求解,损失函数定义如下:
记住,在机器学习里面,向量的默认是列向量形式,所以上述的表示转置,因为我们写的时候写成了横向量的形式。同样在做向量乘积运算时,也应该对左边的向量加上转置,这样向量乘积才会得到一个值。
那么要最小化这个损失函数,我们可以采用随机梯度下降(Stochastic Gradient Descent)或者批梯度下降(Batch Gradient Descent),那么对参数向量中的每一维参数求偏导,再根据学习率来进行参数地更新,具体如下:
那么,对于参数的更新,批梯度下降算法如下所示:
Repeat until convergence{
(for every )
}
其中,表示学习率。而对于随机梯度下降,算法如下所示:
for i = 1 to m{
for j = 1 to n{
}
}
关于上述两种梯度下降法的区别这里就不详细说明了,这不是本小节讨论的重点,大家可以查阅相关的博客或者书籍。(机器学习可是系统工程啊,要懂得方方面面,菜鸟到专家可得一步一个脚印呢)
上述是基于梯度来求解回归系数的,下面给出基于矩阵求解回归系数的办法,这里不需要多次迭代求解,对于训练数据量少时较为实用。首先,给出矩阵形式的损失函数: