线性模型
1.线性回归
1.1 问题及定义
线性回归模型是机器学习中的基本算法模型之一,可以用来解决预测房价等问题。如下图所示的一个例子,房子因房子大小、卧室数目、地板数量等不同而有不同的价格,那么给定了房子大小、卧室数目、地板数量我们能否预测出一个房子的价格呢?
我们使用线性回归来解决上述问题。
给定一个
n
n
个特征的实例,
x=(x1;x2;x3;...;xn)
x
=
(
x
1
;
x
2
;
x
3
;
.
.
.
;
x
n
)
, 对于线性回归的假设定义为:
其中 θ θ 表示参数, θ={θ0;θ1;θ2;θ3;...;θn} θ = { θ 0 ; θ 1 ; θ 2 ; θ 3 ; . . . ; θ n } 。为了方便,我们引入 x0=1 x 0 = 1 ,从而 x=(x0;x1;x2;x3;...;xn) x = ( x 0 ; x 1 ; x 2 ; x 3 ; . . . ; x n ) ,然后将上述式子使用向量表示为:
我们使用均方误差来作为线性回归的代价函数,
其中
x(i)
x
(
i
)
表示第i个训练实例的特征向量,
y(i)
y
(
i
)
表示第i个训练实例的真实值,
m
m
表示实例的个数。
我们可以通过用很多数据来训练这个模型,得到是代价函数最小的参数,然后使用这个模型来预测房价。
这里我介绍两种方法,一种是梯度下降,一种是最小二乘法。
方法一: 梯度下降
我们让代价函数对参数
θ
θ
求导,得到梯度,然后让参数朝着负梯度方向优化,
a
a
表示学习率(learning rate),优化更新步骤如下:
将代价函数代入:
求导后得到:
开始的时候可以随机的选择一系列参数,计算所有的预测结果之后,再更新这(n+1)个参数,如此循环直至收敛!
方法二: 最小二乘法
最小二乘法是直接通过使代价函数对于参数的导数为0,直接计算出参数
θ
θ
的值,不过需要满足一定的条件,而且当特征维度很大的时候计算会很慢!
假设
X=(x(1),x(2),x(3),...,x(m))∈Rm×(n+1)
X
=
(
x
(
1
)
,
x
(
2
)
,
x
(
3
)
,
.
.
.
,
x
(
m
)
)
∈
R
m
×
(
n
+
1
)
,实例真实值是
Y=(y1,y2,y3,...,ym)∈Rm
Y
=
(
y
1
,
y
2
,
y
3
,
.
.
.
,
y
m
)
∈
R
m
,
m
m
上面说过表示实例的个数,那么使用均值方差的代价函数可以使用向量表示为:
对 θ θ 求导得到:
令 ∂J(θ)∂θ=0 ∂ J ( θ ) ∂ θ = 0 得到:
只有当 XTX X T X 为满秩矩阵或正定矩阵时,即可以求逆矩阵,我们才可以通过上述方法求得参数 θ θ 的值。通过这种方法求得的线性回归模型为:
1.2 梯度下降和最小二乘法比较
总体来说,梯度下降实用性更强!
梯度下降 | 最小二乘法 |
---|---|
需要选择学习率 α α | 不需要 |
需要多次迭代 | 一次运算得出 |
当特征数量 n 大时也能较好适用 | 需要计算 (XTX)−1 ( X T X ) − 1 ,如果特征数量 n 较大则运算代价大,因为矩阵逆的计算时间复杂度为 O(n3) O ( n 3 ) ,通常来说当 n 小于 10000 时还是可以接受的 |
适用于各种类型的模型 | 只适用于线性模型,不适合逻辑回归模型等其他模型 |
1.3 实现例子
(待补充----)
参考资料:
[1]Andrew course机器学习学习笔记
[2]周志华《机器学习》