小白学习机器学习---第三章:线性模型
2018-03-27 15:25
267 查看
机器学习所针对的问题有两种:一种是回归,一种是分类。回归是解决连续数据的预测问题,而分类是解决离散数据的预测问题。线性回归是一个典型的回归问题。其实我们在中学时期就接触过,叫最小二乘法。 线性回归试图学得一个线性模型以尽可能准确地预测输出结果。
先从简单的模型看起:
首先,我们只考虑单组变量的情况,有:
![](https://img-blog.csdn.net/20170811204133048?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
使得
![](https://img-blog.csdn.net/20170811204300601?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
假设有m个数据,我们希望通过x预测的结果f(x)来估计y。其中w和b都是线性回归模型的参数。
为了能更好地预测出结果,我们希望自己预测的结果f(x)与y的差值尽可能地小,所以我们可以写出代价函数(cost function)如下:
![](https://img-blog.csdn.net/20170811205634045?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
接着代入f(x)的公式可以得到:
![](https://img-blog.csdn.net/20170811205531325?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
不难看出,这里的代价函数表示的是预测值f(x)与实际值y之间的误差的平方。它对应了常用的欧几里得距离简称“欧氏距离”。基于均方误差最小化来求解模型的方法我们叫做“最小二乘法”。在线性回归中,最小二乘法实质上就是找到一条直线,使所有样本数据到该直线的欧式距离之和最小,即误差最小。
我们希望这个代价函数能有最小值,那么就分别对其求w和b的偏导,使其等于0,求解方程。
先求偏导,得到下面两个式子:
![](https://img-blog.csdn.net/20170811210640899?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170811211232980?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
很明显,公式中的参数m,b,w都与i无关,简化时可以直接提出来。 令这两个偏导等于0:
求解方程组,解得:
![](https://img-blog.csdn.net/20170811211815110?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170811212505713?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这样根据数据集中给出的x和y,我们可以求出w和b来构建简单的线性模型来预测结果。 接下来,推广到更一般的情况:
我们假设数据集中共有m个样本,每个样本有n个特征,用X矩阵表示样本和特征,是一个m×n的矩阵:
![](https://img-blog.csdn.net/20170811213257975?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
用Y矩阵表示标签,是一个m×1的矩阵:
![](https://img-blog.csdn.net/20180327145655560?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h4MTQzMDEwMDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
为了构建线性模型,我们还需要假设一些参数:
![](https://img-blog.csdn.net/20170811213935450?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(有时还要加一个偏差(bias)也就是
![](https://img-blog.csdn.net/20170811214034151?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
, 为了推导方便没加,实际上结果是一样的,只要将X矩阵最后加上一列1,θ加上b即可) 好了,我们可以表示出线性模型了:
![](https://img-blog.csdn.net/20170811214327394?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
h(x)表示假设,即hypothesis。通过矩阵乘法,我们知道结果是一个m×1的矩阵。
跟前面推导单变量的线性回归模型时一样,列出代价函数:
![](https://img-blog.csdn.net/20170811215144253?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这里的1/2并无太大意义,只是为了求导时能将参数正好消掉而加上。
代价函数代表了误差,我们希望它尽可能地小,所以要对它求偏导并令偏导数为0,求解方程。
在求偏导之前先展开一下:
![](https://img-blog.csdn.net/20170811215547522?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170811215800284?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
接下来对
![](https://img-blog.csdn.net/20170811220211845?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity<br/>ad97<br/>/SouthEast)
求导,先给出几个矩阵求导的公式:
![](https://img-blog.csdn.net/20170811220351850?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170811220447047?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170811220542902?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
对代价函数
![](https://img-blog.csdn.net/20170811220619505?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
求关于
![](https://img-blog.csdn.net/20170811220705281?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
的偏导,并令其等于0。 求偏导。
![](https://img-blog.csdn.net/20170811221126758?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
套用前面给出的矩阵求导公式。
![](https://img-blog.csdn.net/20170811221435981?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
最后化简得到:
![](https://img-blog.csdn.net/20170811221653460?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
好了,另这个偏导数等于0:
![](https://img-blog.csdn.net/20170811221852908?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
解得:
![](https://img-blog.csdn.net/20170811221959272?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2Jpbl94dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
============================================================
下一篇附上实现的python代码,加油。
先从简单的模型看起:
首先,我们只考虑单组变量的情况,有:
使得
假设有m个数据,我们希望通过x预测的结果f(x)来估计y。其中w和b都是线性回归模型的参数。
为了能更好地预测出结果,我们希望自己预测的结果f(x)与y的差值尽可能地小,所以我们可以写出代价函数(cost function)如下:
接着代入f(x)的公式可以得到:
不难看出,这里的代价函数表示的是预测值f(x)与实际值y之间的误差的平方。它对应了常用的欧几里得距离简称“欧氏距离”。基于均方误差最小化来求解模型的方法我们叫做“最小二乘法”。在线性回归中,最小二乘法实质上就是找到一条直线,使所有样本数据到该直线的欧式距离之和最小,即误差最小。
我们希望这个代价函数能有最小值,那么就分别对其求w和b的偏导,使其等于0,求解方程。
先求偏导,得到下面两个式子:
很明显,公式中的参数m,b,w都与i无关,简化时可以直接提出来。 令这两个偏导等于0:
求解方程组,解得:
这样根据数据集中给出的x和y,我们可以求出w和b来构建简单的线性模型来预测结果。 接下来,推广到更一般的情况:
我们假设数据集中共有m个样本,每个样本有n个特征,用X矩阵表示样本和特征,是一个m×n的矩阵:
用Y矩阵表示标签,是一个m×1的矩阵:
为了构建线性模型,我们还需要假设一些参数:
(有时还要加一个偏差(bias)也就是
, 为了推导方便没加,实际上结果是一样的,只要将X矩阵最后加上一列1,θ加上b即可) 好了,我们可以表示出线性模型了:
h(x)表示假设,即hypothesis。通过矩阵乘法,我们知道结果是一个m×1的矩阵。
跟前面推导单变量的线性回归模型时一样,列出代价函数:
这里的1/2并无太大意义,只是为了求导时能将参数正好消掉而加上。
代价函数代表了误差,我们希望它尽可能地小,所以要对它求偏导并令偏导数为0,求解方程。
在求偏导之前先展开一下:
接下来对
求导,先给出几个矩阵求导的公式:
对代价函数
求关于
的偏导,并令其等于0。 求偏导。
套用前面给出的矩阵求导公式。
最后化简得到:
好了,另这个偏导数等于0:
解得:
============================================================
下一篇附上实现的python代码,加油。
相关文章推荐
- 小白学习机器学习---第三章:简单线性模型Python实现
- 小白学习机器学习---第三章:线性模型(3):线性判别分析
- 小白学习机器学习---第三章:线性模型(2):对数几率回归
- Python机器学习库SKLearn:监督学习之广义线性模型
- 人工智障学习笔记——机器学习(2)线性模型
- 机器学习-学习笔记 线性模型
- 周志华 《机器学习》之 第三章(线性模型)概念总结
- 小白学习机器学习---第三章(3):二分类LDA的python实现
- 小白学习机器学习---第三章(2):对数几率回归python实现
- 机器学习(周志华)_第三章线性模型
- 小白学习机器学习---第五章:神经网络简单模型python实现
- 03-《机器学习及实践》学习之使用线性分类模型
- 机器学习(周志华) 参考答案 第三章 线性模型 3.4
- 【学习笔记】斯坦福大学公开课(机器学习) 之广义线性模型
- 【机器学习-斯坦福】学习笔记4 ——牛顿方法;指数分布族; 广义线性模型(GLM)
- 机器学习笔记(IX)线性模型(V)多分类学习
- 机器学习线性模型学习笔记
- 第三章 线性模型--机器学习(周志华)参考答案
- 读书笔记《机器学习》: 第三章:线性模型
- 机器学习-学习笔记 线性模型(二)