多变量线性回归
2016-04-09 14:04
267 查看
多维特征
上次我们了解了单变量的线性回归,现在我们对房价模型增加更多的特性,如房间数、楼层数、房龄等特征,构成一个含有多变量的模型,模型中特征表示为。
在添加了多个特征后,我们也要增加一些注释:
n 代表特征数目
表示第i个训练样本的所有特征,就是特征矩阵中的第i行,是一个向量(vector)
比如上面的
表示第i个训练样本的第j个特征,就是特征矩阵中的第i行的第j个特征。
比如上面的
对于假设函数h(hypothesis function),
,为了简化公式,记
,则公式转化为:
。
这时参数Θ是一个n+1维的向量,任何一个训练样本也是n+1维向量,特征矩阵X的维度是m×(n+1)。所以我们可以把公式化简为:
,上标T代表转置。
多变量梯度下降
与单变量线性回归一样,我们也构建一个代价函数:其中,
我们的目标与单变量线性回归一样,找出使代价函数最小的那一组参数。
多变量线性回归的梯度下降算法:
求导后得到:
当n≥1时,
注意这里的参数也是同步更新的。
梯度下降实践1:特征缩放
在房价问题中,如果我只使用两个特征,房屋尺寸和房间数量,房屋尺寸的取值范围为0-2000,而房间数量取值是0-5,当以这两个特征作为坐标绘图时:我们可以看到图像很扁,梯度下降算法需要多次迭代才能收敛。
而这问题的解决方法就是确保所有特征的相似的尺度里,如使每一个特征值都缩放到-1到1之间。
我们使用的方法就是均值归一化(mean normalization):
其中,
是平均值,
可以是标准差,也可以是特征的取值范围(最大值-最小值)。
梯度下降实践2:学习率
如何选择正确的学习率很重要,它也是确保梯度下降算法收敛的关键。梯度下降算法收敛所需要的迭代次数根据模型不同而不同,但我们可以绘制迭代次数和代价函数的图标来观察算法何时收敛。
如果某一步减少的值小于某个很小的值∈,那么我们认为收敛。
梯度下降算法的每次迭代受到学习率的影响,如果学习率太小,那么要达到收敛的迭代次数会非常高;如果学习率太大,不能保证每次迭代都减小代价函数,可能会越过局部最小值导致无法收敛。
学习率选择的经验是:
,通常后一个尝试的数是前一个数的3倍。
特征与多项式回归
房价预测问题:x1=frontage(临街宽度),x2=depth(纵向深度),x=frontage×depth(面积),那么
。
很多时候,线性回归不能很好的拟合样本,所以我们需要曲线,如二次方模型
或三次方模型
,或者开根号也可以。
通常我们需要观察数据然后再决定尝试什么模型。
另外,我们还可以令:
,
,从而将模型转化为线性回归模型。
正规方程(normal equation)
相对于梯度下降算法,正规方程使用分析的方法直接解决Θ。正规方程:
1维时,Θ∈R:
找出使代价函数最小值的参数:
然后得到Θ,
同理,在多变量线性回归中,Θ∈
,代价函数是:
求Θ得思路仍然是:
对于4组特征(m=4)的房价预测问题:
即
则利用正规方程求出的向量:
,其中上标T代表转置,上标-1代表矩阵的逆。
运用正规方程求解参数:
对于正规方程,如果
不可逆,那么:
(1)去掉冗余的特征(线性相关)
如以平方英尺为单位的面积x1余以平方米为单位的x2,x1和x2是线性相关的。
(2)过多特征时,删掉一些特征或者正规化(regularization)。
梯度下降与正规方程比较
参考资料: Machine Learning——Andrew Ng(Coursera)
相关文章推荐
- 数据挖掘之Apriori算法详解和Python实现代码分享
- 用Python从零实现贝叶斯分类器的机器学习的教程
- Python编程实现使用线性回归预测数据
- My Machine Learning
- 机器学习---学习首页 3ff0
- 详解BI/数据分析/数据挖掘/业务分析概念 7fe0
- Sedgewick之巨著《算法》,与高德纳TAOCP一脉相承
- 普通最小二乘法的推导证明
- 反向传播(Backpropagation)算法的数学原理
- 关于SVM的那点破事
- 也谈 机器学习到底有没有用 ?
- 如何用70行代码实现深度神经网络算法
- 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用2
- 量子计算机编程原理简介 和 机器学习
- 数据挖掘项目的特征和关键环节
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 已经证实提高机器学习模型准确率的八大方法
- 聚类算法总结
- 一位数据挖掘成功人士给数据挖掘在读研究生的建议
- 数据挖掘网上资料大全