标签(空格分隔): 机器学习
此为笔者在学习过程中的读书笔记,文章主要关于机器学习模型的知识与一些个人感受,不妥之处,请予指正。
1. 从一个特征开始
对于银行贷款问题,假如我们要根据顾客的一些属性得到是否可以贷款给顾客,那么二分类问题就可以得到解决。但是试想,如果银行到底应该贷款多少钱给顾客(比如支付宝的蚂蚁花呗)?这个就需要算法的输出的是一个实数值而不是"+1"和"-1"这样的label。
那么银行如何知道一个顾客的贷款额度是多少呢?一个可行的方案就是根据顾客的一些特征(年龄,工资,固定资产等)。我们假设顾客所有的特征集合
X
=
(
x
1
,
x
2
,
⋯
,
x
d
)
X=(x_{1},x_{2},\cdots,x_{d})
X=(x1,x2,⋯,xd)。但是这些特征还应该有主次之分,比如工资的权重应该比年龄更大。于是我们设特征的权重
W
=
(
w
1
,
w
2
,
⋯
,
x
d
)
W=(w_{1},w_{2},\cdots,x_{d})
W=(w1,w2,⋯,xd)。但是我们还是希望可以有一些波动,即偏置
b
b
b。在
d
=
1
d=1
d=1的时候有:
h
(
x
i
)
=
w
x
i
+
b
h(x_{i})=wx_{i}+b
h(xi)=wxi+b
并且使得
h
(
x
i
)
h(x_{i})
h(xi)尽量接近于真实值
y
i
y_{i}
yi。上述的公式和PLA算法很像,但是没有带符号函数。
2. 学习
有了上述学习目标之后,接下来面临着一个问题:如何知道学出来的 h ( x i ) h(x_{i}) h(xi)(或者 w w w和 b b b)好坏?记得刚说过要使得 h ( x i ) h(x_{i}) h(xi)尽量接近于真实值 y i y_{i} yi, y i y_{i} yi是真实值(怎么来的?所以我们需训练数据啊!)。注意这里的目标是使得 h ( x i ) h(x_{i}) h(xi)尽量接近于真实值 y i y_{i} yi,但是这个可能会导致过拟合的问题,但在这里我们暂且不考虑。关于如何防止过拟合问题也是一门艺术,有机会再来探讨。
回到正题,要使 h ( x i ) h(x_{i}) h(xi)尽量接近于真实值 y i y_{i} yi,只要找到一个损失函数即可,一般线性回归用的是平方误差: e r r ( y ^ , y ) = ( y ^ − y ) 2 err(\widehat{y},y)=(\widehat{y}-y)^2 err(y ,y)=(y −y)2。即:
(
w
∗
,
b
∗
)
=
a
r
g
m
i
n
(
w
,
b
)
∑
n
=
1
N
(
h
(
x
i
)
−
y
i
)
2
(w^*,b^*)=argmin_{(w,b)}\sum_{n=1}^{N}(h(x_i)-y_i)^2
(w∗,b∗)=argmin(w,b)n=1∑N(h(xi)−yi)2,
w
∗
w^*
w∗,
b
∗
b^*
b∗表示最优解,
N
N
N代表训练集中的样本个数。
接下来如何使得上述式子最小化的问题了,即线性回归模型的参数估计(周志华《机器学习》P54)。可以分别对于
w
w
w和
b
b
b求导得到:
∂
e
r
r
∂
w
=
2
(
w
∑
i
=
1
N
x
i
2
−
∑
i
=
1
N
(
y
i
−
b
)
x
i
)
\frac{\partial{err}}{\partial{w}}=2(w\sum\limits_{i=1}^{N}x_{i}^2-\sum\limits_{i=1}^N(y_{i}-b)x_{i})
∂w∂err=2(wi=1∑Nxi2−i=1∑N(yi−b)xi)
∂
e
r
r
∂
b
=
2
(
N
b
−
∑
i
=
1
N
(
y
i
−
w
x
i
)
)
\frac{\partial{err}}{\partial{b}}=2(Nb-\sum\limits_{i=1}^{N}(y_{i}-wx_{i}))
∂b∂err=2(Nb−i=1∑N(yi−wxi))
于是我们就可以得到
w
w
w和
b
b
b的闭式解:
w
=
∑
i
=
1
N
y
i
(
x
i
−
x
ˉ
)
∑
i
=
1
N
x
i
2
−
1
N
(
∑
i
=
1
N
x
i
)
2
w=\frac{\sum\limits_{i=1}^{N}y_i(x_i-\bar{x})}{\sum\limits_{i=1}^Nx_i^2-\frac{1}{N}(\sum\limits_{i=1}^Nx_i)^2}
w=i=1∑Nxi2−N1(i=1∑Nxi)2i=1∑Nyi(xi−xˉ)
b
=
1
N
∑
i
=
1
N
(
y
i
−
w
x
i
)
b=\frac{1}{N}\sum\limits_{i=1}^N(y_i-wx_i)
b=N1i=1∑N(yi−wxi)
3. 更多的特征
有了之前一维特征的铺垫,那么多维特征就相对简单了,即将一维的变量换成高维的向量。现在假设我们的特征数
d
>
1
d>1
d>1,此时我们试图学习:
h
(
x
i
)
=
w
T
x
i
+
b
h(x_{i})=w^Tx_{i}+b
h(xi)=wTxi+b,将
b
b
b看成
w
0
w_0
w0有:
h
(
x
i
)
=
w
T
x
i
h(x_{i})=w^Tx_{i}
h(xi)=wTxi
由前可知我们的目标为:
minimize
E
i
n
(
w
)
=
1
N
∑
n
=
1
N
(
w
T
x
n
−
y
n
)
2
=
1
N
∣
∣
X
w
−
y
∣
∣
2
E_{in}(w)=\frac{1}{N}\sum\limits_{n=1}^{N}(w^Tx_n-y_n)^2=\frac{1}{N}||Xw-y||^2
Ein(w)=N1n=1∑N(wTxn−yn)2=N1∣∣Xw−y∣∣2
其中
y
y
y为
N
×
1
N\times1
N×1的向量。
对
w
w
w求导,可以得到
∂
e
r
r
∂
w
=
2
N
(
X
T
X
w
−
X
T
y
)
\frac{\partial{err}}{\partial{w}}=\frac{2}{N}(X^TXw-X^Ty)
∂w∂err=N2(XTXw−XTy)
令上式为零,则可以得到最优解:
w
^
=
(
X
T
X
)
−
1
X
T
y
\hat{w}=(X^TX)^{-1}X^Ty
w^=(XTX)−1XTy
注意:
上式的求逆过程必须满足 X T X X^TX XTX为满秩矩阵或正定矩阵,即为可逆矩阵。
使用上述式子就可以求得最佳的 w w w,似乎是一步登天的感觉,我们称这样的解为Analytic Solution。
4. 不止于线性问题
线性回归本质上还是线性的问题,但是假如特征 x x x更复杂一点呢?比如可以加一个线性变换 ϕ ( x ) \phi(x) ϕ(x)使其能够解决更加复杂的问题,此时的形式就为 h ( x i ) = w T ϕ ( x i ) h(x_{i})=w^T\phi(x_{i}) h(xi)=wTϕ(xi),这个实际上是结构化学习中三大问题之一的Evaluation问题。关于这部分的内容,有时间再写一个相关的帖子吧…
转载请标明出处:http://blog.csdn.net/wuzqchom/article/details/57079837
参考资料:
- 周志华《机器学习》第三章:线性模型
- 林轩田-机器学习基石 Lecture 9: Linear Regression
- ``Pattern Recognition and Machine Learning’’ Christopher M. Bishop. Chapter 3.1