机器学习——线性回归
来源:互联网 发布:表格算量软件 编辑:程序博客网 时间:2024/04/29 06:08
线性回归
1.线性回归的定义
假设输入特征与输出结果之间满足一定的线性关系,故可以建立一个假设的线性模型,即一个函数,通过把收集到的数据集当作训练数据集,来拟合模型,求出模型未知参数。进而利用得到的模型来预测新的数据。
1.线性模型函数
其中: 为输入向量x的第i个特征分量,X=(x1,x2.......xn).
为输入x的特征向量所对应的特征参数
n为输入向量x所对应的特征向量的个数
为确定模型参数,需先定义一个损失函数J():
其中:m为训练集中数据点的个数,数据集设
故确定参数即为求以下问题:
这是一个优化问题,下面介绍两种方法来求解这个问题。
2.梯度下降法
梯度下降法,就是利用负梯度方向来决定每次迭代的新的搜索方向,使得每次迭代能使待优化的目标函数逐步减小。梯度下降法是2范数下的最速下降法。 最速下降法的一种简单形式是:x(k+1)=x(k)-a*g(k),其中a称为学习速率,可以是较小的常数。g(k)是x(k)的梯度。
故这里先求损失函数的梯度。
注:这里采用的是批处理方法,即对特征参数的每个分量求偏导时要遍历整个训练集并求其和,故当训练集很大时不宜采用这种方法,采用普通的梯度下降法就可以(即去掉上式的求和项)
参数更新:
其中 为学习速率,用来控制每次迭代的步长。
经过有限次的迭代后,上述公式将收敛,的值也趋于稳定,带入上述模型当中,则可确定模型。
3.基于矩阵形式的最小二乘法
最小二乘法:最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。
应用最小二乘法:
至此 参数可由训练集中输入与输出的矩阵求得,进而得到预测线性模型。
4.最小二乘法与梯度下降法的区别
相同点:
1.本质相同:两种方法都是在给定已知数据(independent & dependent variables)的前提下对独立变量算出出一个一般性的估值函数。然后对给定新数据的独立变量进行估算。
2.目标相同:都是在已知数据的框架内,使得估算值与实际值的总平方差尽量更小(事实上未必一定要使用平方),估算值与实际值的总平方差的公式为:
不同点:
1.实现方法和结果不同:最小二乘法是直接对求导找出全局最小,是非迭代法。而梯度下降法是一种迭代法,先给定一个,然后向下降最快的方向调整,在若干次迭代之后找到局部最小。梯度下降法的缺点是到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,其改进大多是在这两方面下功夫。
2.此外对于最小二乘问题,最小二乘法的目标:求误差的最小平方和,对应有两种:线性和非线性。线性最小二乘的解是close-form即,而非线性最小二乘没有closed-form,通常用迭代法求解。
迭代法,即在每一步update未知量逐渐逼近解,可以用于各种各样的问题(包括最小二乘),比如求的不是误差的最小平方和而是最小立方和。
梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。高斯-牛顿法是另一种经常用于求解非线性最小二乘的迭代法(一定程度上可视为标准非线性最小二乘求解方法)。还有一种叫做Levenberg-Marquardt的迭代法用于求解非线性最小二乘问题,就结合了梯度下降和高斯-牛顿法。
3.另外最小二乘法的矩阵公式中涉及到矩阵逆的计算,而又已知, 计算一个矩阵的逆是相当耗费时间的, 而且求逆也会存在数值不稳定的情况 (比如对希尔伯特矩阵求逆就几乎是不可能的). 因而这样的计算方法有时不值得提倡.
相比之下, 梯度下降法虽然有一些弊端, 迭代的次数可能也比较高, 但是相对来说计算量并不是特别大. 而且, 在最小二乘法这个问题上, 收敛性有保证. 故在大数据量的时候, 反而是梯度下降法 (其实应该是其他一些更好的迭代方法) 更加值得被使用.
- 机器学习复习——线性回归
- 机器学习——多元线性回归
- 机器学习——线性回归
- 机器学习入门——线性回归
- 机器学习算法——线性回归
- 机器学习——多元线性回归
- 机器学习笔记——线性回归
- 机器学习笔记——线性回归
- 机器学习笔记—线性回归
- 机器学习—局部加权线性回归
- 机器学习实验—线性回归预测
- 【机器学习】机器学习(二)——线性回归
- 机器学习-线性回归
- 【机器学习】线性回归
- 机器学习-线性回归
- 机器学习 线性回归
- 机器学习-线性回归
- 机器学习--线性回归
- Deep learning:四十五(maxout简单理解)
- 关键字const的详解
- 生成随机数 随机生成字符创
- maven 参考
- Deep learning:四十六(DropConnect简单理解)
- 机器学习——线性回归
- 马尔科夫蒙特卡洛算法(MCMC)
- Jetty反向代理
- Deep learning:四十七(Stochastic Pooling简单理解)
- 冒泡排序的初级优化及递归
- 官网下载JDK教程
- UDP协议详解
- Deep learning:四十八(Contractive AutoEncoder简单理解)
- ROS基础学习笔记——工作空间、CMakeList、package.xml