— 本博客内容主要来自周志华著《机器学习》及网上相关资源,用于个人的学习记录,禁止转载。
线性模型虽然简单,但是包含了机器学习基本思想,许多非线性模型可以在线性模型的基础上引入层级结构或高维映射得到。例如,神经网络中每个层都相当于一个线性模型+激励函数(非线性),构成非线性映射,而许多层叠加在一起,形成了功能强大的非线性神经网络。
1.基本形式
假设每个样本包含
d
d
d个属性,表示为
x
=
(
x
1
,
x
2
,
…
,
x
d
)
x=(x_1,x_2,\ldots,x_d)
x=(x1,x2,…,xd) ,其中
x
i
x_i
xi是
x
x
x在第
i
i
i个属性上的取值。线性模型试图学习一个通过属性的线性组合来预测的函数,即
f
(
x
)
=
w
1
x
1
+
w
2
x
2
+
…
+
w
d
x
d
+
b
f(x)=w_1 x_1+w_2 x_2+\ldots+w_d x_d+b
f(x)=w1x1+w2x2+…+wdxd+b
向量形式为
f
(
x
)
=
w
T
x
+
b
f(x)=w^Tx+b
f(x)=wTx+b。
给定一个包含 m m m个样本的数据集,线性回归要学得一个线性模型尽可能准确的预测输出。这里需要注意,对于 x x x的离散值属性,如果属性值之间存在可以进行排序,那么直接将离散值转换为相应的连续值,例如身高特征包含高、中和低,那么可以对应转换为{1.0,0.5,0.0};如果属性之间不存在序的关系,例如瓜的产地分为新疆、山东、福建,那么直接将这个特征进行one-hot处理,即将特征的属性值转化为单独的特征,将“是、否”语义数值化为“1、0”。在这里,瓜的产地特征值可转化为一个三维向量,新疆、山东、福建对应为 ( 0 , 0 , 1 ) , ( 0 , 1 , 0 ) , ( 0 , 0 , 1 ) (0,0,1),(0,1,0),(0,0,1) (0,0,1),(0,1,0),(0,0,1)。强行地将无序的离散属性连续化,会引入不恰当的特征关系,对于后续的求解造成误导。
2.求解
按照李航《统计学习方法》中的定义,学习方法有三个要素:模型、策略和算法。下面讲线性模型的策略和算法。如何衡量线性模型
f
(
x
)
f(x)
f(x)和
y
y
y的差别,这里使用最基本的最小二乘法,即均方误差最小化,找到一条直线,使得所有样本点到直线上(
w
T
x
+
b
w^Tx+b
wTx+b)的距离之和最小。
(
w
∗
,
b
∗
)
=
arg
min
w
,
b
∑
i
=
1
m
(
w
T
x
+
b
−
y
i
)
2
(w^*,b^*)=\text{arg}\min\limits_{w,b}\sum\limits_{i=1}^{m}(w^Tx+b-y_i)^2
(w∗,b∗)=argw,bmini=1∑m(wTx+b−yi)2
当样本
x
x
x是一维的时候非常简单,求偏导直接得到最优解(仅对凸函数适用,可以证明上述函数是凸函数)
∂
E
(
w
,
b
)
∂
w
=
w
∑
i
=
1
m
x
i
2
−
∑
i
=
1
m
(
y
i
−
b
)
x
i
\frac{\partial E(w,b)}{\partial w}=w\sum\limits_{i=1}^{m}x_i^2-\sum\limits_{i=1}^{m}(y_i-b)x_i
∂w∂E(w,b)=wi=1∑mxi2−i=1∑m(yi−b)xi
∂ E ( w , b ) ∂ b = 2 ( m b − ∑ i = 1 m ( y i − w x i ) ) \frac{\partial E(w,b)}{\partial b}=2(mb-\sum\limits_{i=1}^{m}(y_i-wx_i)) ∂b∂E(w,b)=2(mb−i=1∑m(yi−wxi))
更一般的情形是,样本
x
x
x由许多特征组成,这是问题变为矩阵求解。为表示方便,我们令
w
‾
=
(
w
,
b
)
\overline{w}=(w,b)
w=(w,b),
X
X
X表示
x
x
x加上常数列后的扩展矩阵,则
w
∗
‾
=
arg
min
w
‾
(
y
−
X
w
‾
)
T
(
y
−
X
w
‾
)
\overline{w^*}=\text{arg}\min\limits_{\overline{w}}(y-X\overline{w})^T(y-X\overline{w})
w∗=argwmin(y−Xw)T(y−Xw)
求解得
∂
E
(
w
‾
)
∂
w
‾
=
2
X
T
(
X
w
‾
−
y
)
\frac{\partial E(\overline{w})}{\partial \overline{w}}=2X^T(X\overline{w}-y)
∂w∂E(w)=2XT(Xw−y)
w ∗ ‾ = ( X T X ) − 1 X T y \overline{w^*}=(X^TX)^{-1}X^Ty w∗=(XTX)−1XTy
这里逆矩阵的求解 ( X T X ) − 1 (X^TX)^{-1} (XTX)−1需要注意,由于 ( X T X ) (X^TX) (XTX)通常不是满秩矩阵,例如当特征数大于样本数时,逆矩阵有多组解,它们都能使均方差最小化,选择哪一个解将于学习算法的偏好决定。