回归问题之线性回归II
来源:互联网 发布:淘宝网小花仙日本食玩 编辑:程序博客网 时间:2024/04/26 12:44
1、线性回归(linear regression):
b、多元线性回归 multivariate linear regression:
形式如下:
令
则
因此:有
参数有:
那么,cost function(代价函数)为:
备注:
n: number of features (特征的总数)
m: number of training examples (训练集数据的例数)
: ith training example (第i个训练数据)
: feature j in ith training exmaple(第i个训练数据中的第j个特征)
要使得代价函数的计算结果最小,依然可以用之前提及的梯度下降算法求解参数:
Gradient descent:
repeat{
}(simultaneously update for every j = 0, ... , n)
也就是
repeat{
}
微分项展开如下:
...
此时,梯度下降算法会稍微复杂一点,不过使用特征缩放的方法——(确保不同特征的取值都处在一个相近的范围),可以使得梯度下降法更快收敛:
由于量冈的影响,特征可能朝着某一边倾斜,例如图1,此时梯度下降明显会比图2收敛慢,而去除量冈,使得特征值都范围都在一个相近的范围,例如[-1,1],[0,1]等等,当然该范围不应过小或者过大。因此,可以使用均值归一化来实现特征缩放:
(x - average)/(max - min)
接下来,看看学习速率,如何确定算法是否正常工作以及如何选择学习速率,用J值和迭代步数作图:
如果梯度下降算法正常工作,那么代价函数J(θ)的值会随着迭代步数的增大而变小(如图3所示),而当曲线慢慢趋于平缓的直线,则说明收敛!(因此可以用于判断算法是否正常工作以及迭代是否收敛)
如果如图4所示,则说明梯度下降算法没有正常工作,此时应该选择较小的学习速率。(没有正常工作如果不是代码问题,那么就可能是选择的学习速率太大,跨步太大而无法向中间的较小的J值靠拢,参考图1和图2理解)
此外,还有可能出现图5的情况,也是没有正常工作:
图5也是说明学习速率过大以至于总是会越过最小值,该情况也应该选择较小的学习速率。
图6说明了学习速率过小的话,收敛也会很慢,此时应该选择较大的学习速率。
除了使用梯度下降算法,还可以使用正规方程方法解决问题(一次性求解θ 的最优值):
m examples:(),(),... ,();n features
那么
(m * (n+1)维矩阵)
(n + 1 维向量)
故
(称为:设计矩阵)
(m 维向量)
(n + 1 维向量)
则有:
——(X的转置乘以X)的逆 乘以 X的转置再乘以y即可得参数的最优解。用octave软件实现:
使用梯度下降算法和正规方程方法的优缺比较:
假设有m个训练和n个特征
梯度下降
正规方程
需要选择学习速率
不需选择学习速率
归一化(很重要)
不需归一化
需要迭代
不用迭代
当n很大时,算法依然可以很好地工作
需要计算X的转置乘以X后的逆,当n很大时(例如n=10000),计算很慢
0 0
- 回归问题之线性回归II
- 回归问题之线性回归
- 回归分析之线性回归
- 1.3线性回归之线性回归实例
- 线性回归问题
- 线性回归问题
- 线性回归之最小二乘法
- TensorFlow之线性回归
- tensorflow之线性回归
- TensorFlow之线性回归
- 回归分析之线性回归(N元线性回归)
- SparkML之回归(一)线性回归
- 线性回归、logistic回归
- 线性回归&Logistic回归
- 回归:多元线性回归
- 回归-线性回归
- 线性回归-1-问题引入
- Tensorflow学习:线性回归问题
- Mac idea还原默认配置
- 蘑菇街电商交易平台服务架构及改造优化历程
- Android Splash界面解决白屏、黑屏等问题
- 在ListView中嵌套ListView的事件处理
- 【SQLSERVER】获取完整建表DDL SQL
- 回归问题之线性回归II
- ADB devices 连接genymotion 出错cannot bind 'tcp:5037': Address already in use
- 信息安全基础知识
- goahead server Web开发一般步骤
- C#——数据同步方法
- 创建文件夹
- poj2296 Map Labeler(2-sat+二分)
- ajax 中
- 389. Find the Difference