1. 基本形式
给定由 d 个属性描述的示例
x
=
(
x
1
;
x
2
;
.
.
.
;
x
d
)
x = (x_1; x_2;...; x_d)
x=(x1;x2;...;xd) , 其中
x
i
x_i
xi均是 a 在第 i个属性上的取值,线性模型 (linear model)试图学得一个通过属性的线性组合来进行预测的函数,即:
一般用向量形式写成:
ω 值的大小直观表达了各属性在预测中的重要性
功能更为强大的非线性模型 (nonlinear model)可在线性模型的基础上通过引入层级结构或高维映射而得。
2. 线性回归
给定数据集 D=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
\lbrace(x_1,y_1) , (x_2,y_2),...,(x_m,y_m) \rbrace
{(x1,y1),(x2,y2),...,(xm,ym)} ,其中
x
i
=
(
x
i
1
;
x
i
2
;
x
i
3
;
.
.
.
;
x
i
d
)
xi=(x_{i1};x_{i2};x_{i3};. . . ; x_{id})
xi=(xi1;xi2;xi3;...;xid) , 即每个输入
x
i
x_i
xi有d个属性,
Y
i
∈
R
Y_i\in \reals
Yi∈R。“线性回归” (linear regression)试图学得一个线性模型:
f
(
x
i
)
=
w
x
i
+
b
f(x_i)=wx_i+b
f(xi)=wxi+b
以尽可能准确地预测实值输出标记
y
i
y_i
yi。(当
i
>
1
i>1
i>1时称为多元线性回归")
常用性能度量均方误差(即所有样本预测值与实际值的差方和)
为什么使用差方和而不是使用差和呢?
大家可以思考一下,加入有两个样本 x 1 x_1 x1, x 2 x_2 x2预测标签和实际值分别为(1.0, 0.5)、(0.5,1.0),一个差为0.5,一个差为-0.5,相加后为0,相互抵消了!
这里还涉及到另一个知识点:
最小二乘法:基于均方误差最小化来进行模型求解的方法称为"最小二乘法"
线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。
以均方误差为损失函数进行求导:
导数为0,求得
w
w
w,
b
b
b的更新值:
若为多元线性回归:
令
x
^
=
(
w
;
b
)
\hat x=(w;b)
x^=(w;b),
x
x
x有
d
d
d个属性,则输入
x
x
x可表示为:
前 d 个元素对应于示例的 d 个属性值,最后一个元素恒置为 1 .
标签也可写为向量形式:
y
=
{
y
1
;
y
2
;
.
.
.
y
m
}
y=\lbrace y_1;y_2;...y_m\rbrace
y={y1;y2;...ym}
均方误差为:
对参数求导:
导数为0,求得参数的更新值:
w
=
(
X
T
X
)
−
1
X
T
y
w=(X^TX)^{-1}X^Ty
w=(XTX)−1XTy
若
(
X
T
X
)
(X^TX)
(XTX)不是满值矩阵,则不可逆,没有唯一解。(例如在许多任务中我们会遇到大量的属性变量,其数目甚至超过样例数,导致
X
X
X 的列数多于行数。)
那如何选择解呢?常见的做法是引入正则化项,如岭回归和Lasso回归(关于岭回归和Lasso回归可以看我的另一篇博客:一篇文章搞懂:岭回归和Lasso回归)
广义线性回归:
现实生活中很多问题都属于非线性问题,那对于非线性问题,线性模型如何模拟呢?
我们可以在线性回归的基础上加入一个联系函数,比如,在线性回归的输出上加上对数函数,构成对数线性回归(log-linear regression):
即
y
=
e
w
T
+
b
y=e^{w_T+b}
y=ewT+b,实质上已是在求取输入空间到输出空间的非线性函数映射。
一般地,考虑单调可微函数 g(.) :
这样的模型称为" 广义线性模型",g(-) 称为"联系函数" ,对数线性回归是广义线性模型在g(-) = ln(-) 时的特例。
3. 对数几率回归(逻辑回归)
前面说的线性回归,主要用于回归模型,那么对于分类问题如何使用线性模型解决呢?
如二分类任务,
y
=
{
0
,
1
}
y=\lbrace0,1\rbrace
y={0,1}此时可以用广义线性模型,最理想的联系函数是:单位阶跃函数:
但单位阶跃函数不连续,因此不能直接用作联系函数g(-).
而对数几率函数:
单位阶跃函数与对数几率函数区间类似,但单调可微:
即:
其中几率和对数几率为:
4. 线性判别分析(LDA)
关于线性判别分析的详细介绍,以及其中的数学原理,可以看我的另一篇博客:线性判别分析LDA:详解及数学原理