线性模型
本文章从简单的一元线性回归过渡到多元线性回归;从机器学习中的回归问题到过渡到分类问题;从分类问题中的二分类过渡到多分类,最后介绍对于类别不平衡问题的处理办法。
1. 线性模型的基本形式
给定由
d
d
d个属性描述的示例
x
⃗
=
(
x
1
;
x
2
;
…
;
x
d
)
\vec{x} = (x_1;x_2;\ldots;x_d)
x=(x1;x2;…;xd),其中
x
i
x_i
xi是
x
⃗
\vec{x}
x在第
i
i
i个属性上的取值,线性模型试图学得一个通过属性的组合来进行预测的函数,即
f
(
x
⃗
)
=
w
1
x
1
+
w
2
x
2
+
…
+
w
d
x
d
+
b
,
f(\vec{x})=w_1x_1+w_2x_2+\ldots+w_dx_d+b,
f(x)=w1x1+w2x2+…+wdxd+b,一般用向量形式写成
f
(
x
⃗
)
=
w
⃗
T
x
⃗
+
b
,
f(\vec{x})=\vec{w}^T\vec{x}+b,
f(x)=wTx+b,其中
w
⃗
=
(
w
1
;
w
2
;
…
;
w
d
)
\vec{w}=(w_1;w_2;\ldots;w_d)
w=(w1;w2;…;wd)。
w
⃗
\vec{w}
w和
b
b
b学得以后,模型就得以确定。
线性回归模型虽然形式简单,却在整个机器学习方法中占据着非常重要的地位。许多非线性模型可以在线性模型的基础上通过引入层级结构或高维映射得到。同时线性模型具有很好的可解释性,
w
w
w直观地表达了各个属性在预测中的重要性。
2. 线性回归
给定数据集 D = { ( x ⃗ 1 , y 1 ) , ( x ⃗ 2 , y 2 ) , … , ( x ⃗ m , y m ) } D = \{(\vec{x}_1,y_1),(\vec{x}_2,y_2),\ldots,(\vec{x}_m,y_m)\} D={(x1,y1),(x2,y2),…,(xm,ym)},其中 x ⃗ i = ( x i 1 ; x i 2 ; … ; x i d ) , y i ∈ R \vec{x}_i=(x_{i1};x_{i2};\ldots;x_{id}), y_i\in R xi=(xi1;xi2;…;xid),yi∈R。数据集 D D D有 m m m个样本,每个样本有 d d d个特征(属性),1个label。
2.1 一元线性回归
一元线性回归的输入样本
x
i
x_i
xi的属性只有一个,我们可以忽略属性下标
1
,
2
,
…
,
d
1,2,\ldots,d
1,2,…,d,则数据集
D
=
{
(
x
i
,
y
i
)
}
i
=
1
m
D=\{(x_i,y_i)\}^m_{i=1}
D={(xi,yi)}i=1m,其中
x
i
∈
R
x_i\in R
xi∈R.同样,数据集
D
D
D有
m
m
m个样本,只不过与上面不同的是,一元线性回归的样本特征
x
i
x_i
xi只有一个特征(属性),为标量(而非向量),于是一元线性回归假设样本满足模型
f
(
x
i
)
=
w
x
i
+
b
,
f(x_i)=wx_i+b,
f(xi)=wxi+b,我们需要做的就是估计参数
w
w
w和
b
b
b,使得我们由模型计算得到的
f
(
x
i
)
f(x_i)
f(xi)和实际的值(label)
y
i
y_i
yi的误差尽可能小。换言之,对所有的
m
m
m个样本来说,我们希望由
w
w
w和
b
b
b构建的模型的输出与实际值的距离尽可能小。由于这是一个回归问题,我们使用均方误差来衡量模型的性能,即求得是均方误差最小的
w
w
w和
b
b
b。均方误差
E
(
w
,
b
)
=
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
=
∑
i
=
1
m
(
y
i
−
w
x
i
−
b
)
2
E_{(w,b)} = \sum_{i=1}^m(f(x_i)-y_i)^2=\sum_{i=1}^m(y_i-wx_i-b)^2
E(w,b)=i=1∑m(f(xi)−yi)2=i=1∑m(yi−wxi−b)2我们找到使
E
(
w
,
b
)
E_{(w,b)}
E(w,b)最小的
(
w
,
b
)
(w,b)
(w,b),即为我们模型的
(
w
,
b
)
(w,b)
(w,b),记为
(
w
∗
,
b
∗
)
(w^*,b^*)
(w∗,b∗),则有下列优化目标:
(
w
∗
,
b
∗
)
=
a
r
g
m
i
n
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
(w^*,b^*)=arg min\sum_{i=1}^m(f(x_i)-y_i)^2
(w∗,b∗)=argmini=1∑m(f(xi)−yi)2
=
a
r
g
m
i
n
∑
i
=
1
m
(
y
i
−
w
x
i
−
b
)
2
=arg min\sum_{i=1}^m(y_i-wx_i-b)^2
=argmini=1∑m(yi−wxi−b)2
有了上述式子,我们就可以通过使它最小化来求解
w
w
w和
b
b
b,这种方法叫做线性回归模型的最小二乘参数估计。下面我们将均方误差
E
(
w
,
b
)
E_{(w,b)}
E(w,b)分别对
w
w
w和
b
b
b求导,然后令它们等于零,得到
w
w
w和
b
b
b的闭式解。
∂
E
(
w
,
b
)
∂
w
=
−
2
∑
i
=
1
m
(
y
i
−
w
x
i
−
b
)
x
i
\frac{\partial E_{(w,b)}}{\partial {w}}=-2\sum_{i=1}^{m}(y_i-wx_i-b)x_i
∂w∂E(w,b)=−2i=1∑m(yi−wxi−b)xi
∂
E
(
w
,
b
)
∂
b
=
−
2
∑
i
=
1
m
(
y
i
−
w
x
i
−
b
)
\frac{\partial E_{(w,b)}}{\partial {b}}=-2\sum_{i=1}^{m}(y_i-wx_i-b)
∂b∂E(w,b)=−2i=1∑m(yi−wxi−b)令上面两个式子等于0,得到
b
=
1
m
∑
i
=
1
m
(
y
i
−
w
x
i
)
,
b=\frac{1}{m}\sum_{i=1}^{m}(y_i-wx_i),
b=m1i=1∑m(yi−wxi),将
b
b
b的值带入
∂
E
(
w
,
b
)
∂
w
\frac{\partial E_{(w,b)}}{\partial {w}}
∂w∂E(w,b)得到
∂
E
(
w
,
b
)
∂
w
=
−
2
∑
i
=
1
m
(
y
i
−
w
x
i
−
1
m
∑
i
=
1
m
(
y
i
−
w
x
i
)
)
x
i
\frac{\partial E_{(w,b)}}{\partial {w}}=-2\sum_{i=1}^{m}(y_i-wx_i-\frac{1}{m}\sum_{i=1}^{m}(y_i-wx_i))x_i
∂w∂E(w,b)=−2i=1∑m(yi−wxi−m1i=1∑m(yi−wxi))xi令上式等于0,得
∑
i
=
1
m
(
y
i
−
w
x
i
−
1
m
∑
i
=
1
m
(
y
i
−
w
x
i
)
)
x
i
=
0
\sum_{i=1}^{m}(y_i-wx_i-\frac{1}{m}\sum_{i=1}^{m}(y_i-wx_i))x_i=0
i=1∑m(yi−wxi−m1i=1∑m(yi−wxi))xi=0
∑
i
=
1
m
(
y
i
x
i
−
w
x
i
2
−
1
m
x
i
∑
i
=
1
m
(
y
i
−
w
x
i
)
)
=
0
\sum_{i=1}^{m}(y_ix_i-wx_i^2-\frac{1}{m}x_i\sum_{i=1}^{m}(y_i-wx_i))=0
i=1∑m(yixi−wxi2−m1xii=1∑m(yi−wxi))=0
∑
i
=
1
m
y
i
x
i
−
w
∑
i
=
1
m
x
i
2
−
1
m
∑
i
=
1
m
x
i
∑
i
=
1
m
y
i
+
w
m
(
∑
i
=
1
m
x
i
)
2
=
0
\sum_{i=1}^{m}y_ix_i-w\sum_{i=1}^{m}x_i^2-\frac{1}{m}\sum_{i=1}^{m}x_i\sum_{i=1}^{m}y_i+\frac{w}{m}(\sum_{i=1}^{m}x_i)^2=0
i=1∑myixi−wi=1∑mxi2−m1i=1∑mxii=1∑myi+mw(i=1∑mxi)2=0
w
∑
i
=
1
m
x
i
2
−
w
m
(
∑
i
=
1
m
x
i
)
2
=
∑
i
=
1
m
y
i
x
i
−
1
m
∑
i
=
1
m
x
i
∑
i
=
1
m
y
i
w\sum_{i=1}^{m}x_i^2-\frac{w}{m}(\sum_{i=1}^{m}x_i)^2=\sum_{i=1}^{m}y_ix_i-\frac{1}{m}\sum_{i=1}^{m}x_i\sum_{i=1}^{m}y_i
wi=1∑mxi2−mw(i=1∑mxi)2=i=1∑myixi−m1i=1∑mxii=1∑myi
w
=
∑
i
=
1
m
y
i
x
i
−
1
m
∑
i
=
1
m
x
i
∑
i
=
1
m
y
i
∑
i
=
1
m
x
i
2
−
1
m
(
∑
i
=
1
m
x
i
)
2
w=\frac{\sum_{i=1}^{m}y_ix_i-\frac{1}{m}\sum_{i=1}^{m}x_i\sum_{i=1}^{m}y_i}{\sum_{i=1}^{m}x_i^2-\frac{1}{m}(\sum_{i=1}^{m}x_i)^2}
w=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myixi−m1∑i=1mxi∑i=1myi
=
∑
i
=
1
m
y
i
x
i
−
∑
i
=
1
m
y
i
(
1
m
∑
i
=
1
m
x
i
)
∑
i
=
1
m
x
i
2
−
1
m
(
∑
i
=
1
m
x
i
)
2
=\frac{\sum_{i=1}^{m}y_ix_i-\sum_{i=1}^{m}y_i(\frac{1}{m}\sum_{i=1}^{m}x_i)}{\sum_{i=1}^{m}x_i^2-\frac{1}{m}(\sum_{i=1}^{m}x_i)^2}
=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myixi−∑i=1myi(m1∑i=1mxi)
=
∑
i
=
1
m
y
i
x
i
−
∑
i
=
1
m
y
i
x
‾
∑
i
=
1
m
x
i
2
−
1
m
(
∑
i
=
1
m
x
i
)
2
=\frac{\sum_{i=1}^{m}y_ix_i-\sum_{i=1}^{m}y_i\overline{x}}{\sum_{i=1}^{m}x_i^2-\frac{1}{m}(\sum_{i=1}^{m}x_i)^2}
=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myixi−∑i=1myix
=
∑
i
=
1
m
y
i
(
x
i
−
x
‾
)
∑
i
=
1
m
x
i
2
−
1
m
(
∑
i
=
1
m
x
i
)
2
=\frac{\sum_{i=1}^{m}y_i(x_i-\overline{x})}{\sum_{i=1}^{m}x_i^2-\frac{1}{m}(\sum_{i=1}^{m}x_i)^2}
=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−x)此时,我们得到
w
w
w和
b
b
b最优解的闭式解。其中
x
‾
=
1
m
∑
i
=
1
m
x
i
\overline{x}=\frac{1}{m}\sum_{i=1}^{m}x_i
x=m1∑i=1mxi,为
x
x
x的均值。
2.2 多元线性回归
在日常生活中,数据集
D
D
D中的样本一般由
d
d
d个属性描述,此时我们需要针对每个属性都得到一个对应的
w
w
w,这里我们假设模型为
f
(
x
⃗
i
)
=
w
⃗
T
x
⃗
i
+
b
f(\vec{x}_i)=\vec{w}^T\vec{x}_i+b
f(xi)=wTxi+b 同样地,我们需要使得根据模型
f
(
x
⃗
i
)
=
w
⃗
T
x
⃗
i
+
b
f(\vec{x}_i)=\vec{w}^T\vec{x}_i+b
f(xi)=wTxi+b求得的
f
(
x
⃗
i
)
f(\vec{x}_i)
f(xi)与实际值
y
i
y_i
yi的差别尽可能的小,由于这里的
x
i
x_i
xi含有
d
d
d个属性,变为向量
x
⃗
\vec{x}
x,这称为多元线性回归。
类似的,我们利用最小二乘法对
w
⃗
\vec{w}
w和
b
b
b进行估计。为了方便,可以把
w
⃗
\vec{w}
w和
b
b
b整体表示为一个向量
w
⃗
^
=
(
w
⃗
;
b
)
\hat{\vec{w}}=(\vec{w};b)
w^=(w;b),相应的,把数据集
D
D
D表示为
m
×
(
d
+
1
)
m\times(d+1)
m×(d+1)大小的矩阵
X
X
X,其中每行对应一个样本,该行前
d
d
d个元素对应示例的
d
d
d个属性值,最后面一个元素恒置为1。再把标记也写成向量形式
y
⃗
=
(
y
1
;
y
2
;
…
;
y
m
)
\vec{y}=(y_1;y_2;\ldots;y_m)
y=(y1;y2;…;ym),根据最小二乘法,则有
w
⃗
^
∗
=
a
r
g
m
i
n
(
y
⃗
−
X
w
⃗
^
)
T
(
y
⃗
−
X
w
⃗
^
)
\hat{\vec{w}}^*=argmin(\vec{y}-X\hat{\vec{w}})^T(\vec{y}-X\hat{\vec{w}})
w^∗=argmin(y−Xw^)T(y−Xw^)令
E
w
⃗
^
=
(
y
⃗
−
X
w
⃗
^
)
T
(
y
⃗
−
X
w
⃗
^
)
E_{\hat{\vec{w}}}=(\vec{y}-X\hat{\vec{w}})^T(\vec{y}-X\hat{\vec{w}})
Ew^=(y−Xw^)T(y−Xw^),对
w
⃗
^
\hat{\vec{w}}
w^求导得到
∂
E
w
⃗
^
∂
w
⃗
^
=
2
X
T
(
X
w
⃗
^
−
y
⃗
)
\frac{\partial E_{\hat{\vec{w}}}}{\partial \hat{\vec{w}}}=2\bf X^T(X\hat{\vec{w}}-\vec{y})
∂w^∂Ew^=2XT(Xw^−y)令上式为零可以得到
w
^
\hat{{\bf w}}
w^最优解的闭式解。当
X
T
X
\bf X^TX
XTX为满秩矩阵或正定矩阵时,令上式等于零可得
w
⃗
^
∗
=
(
X
T
X
)
−
1
X
T
y
\hat{\vec{w}}^*=(\bf X^TX)^{-1}\bf X^Ty
w^∗=(XTX)−1XTy其中
(
X
T
X
)
−
1
(\bf X^TX)^{-1}
(XTX)−1 是
(
X
T
X
)
(\bf X^TX)
(XTX)的逆矩阵,则最终学得的多元线性回归模型为
f
(
x
^
i
)
=
x
^
i
T
(
X
T
X
)
−
1
X
T
y
f(\hat{x}_i)=\hat{x}_i^T(\bf X^TX)^{-1}\bf X^Ty
f(x^i)=x^iT(XTX)−1XTy
3 对数几率回归(逻辑回归)
上面我们讨论的线性回归模型可以简写为 y = w T x + b y=w^Tx+b y=wTx+b现在我们要进行的是分类任务,就需要将线性回归模型的预测值与分类任务的真实标记联系起来。对于二分类任务来说,输出 y ∈ { 0 , 1 } y \in \{0,1\} y∈{0,1},而线性回归模型产生的预测值是实值,于是我们需要将实值转换为 0 / 1 0/1 0/1值。这里最理想的就是给预测值加上一个单位阶跃函数,若预测值大于0就判为正类,小于0则判为负类,预测值为临界值0则任意判别。但是由于阶跃函数不连续,无法微分,我们找到替代的函数,对数几率函数。在这里,我们实际上是使用线性回归模型的预测值去逼近真实标记的对数几率,这种方法的优点如下:
- 直接对分类可能性进行建模,无需事先假设数据分布
- 预测结果不仅仅是类别,还可以表示类别的概率大小
- 对数几率函数是任意阶可导的凸函数,现有的很多数值优化算法可以直接用于求解最优解
最后我们可以使用极大似然法来估计参数 w w w和 b b b,然后使用经典的数值优化算法如梯度下降法、牛顿法求得参数的最优解。
4 线性判别分析
线性判别分析 (Linear Discriminant Analysis,LDA),是一种经典的线性学习方法。
主要思想:给定训练样本集,设法将样本投影到一条直线上,使得相同类别样本的投影点尽可能接近,同时不同类别样本点的投影尽可能远离;在对新样本进行分类时,将其按照同样的映射规则投影到同样的直线上,再根据投影点的位置来确定新样本的类别。
LDA可以应用于二分类和多分类问题。由于可以使用投影来降低样本的维数,LDA也常常被看做一种经典的监督降维技术。
5 多分类问题
有些二分类学习方法可以直接推广到多分类,这里我们主要是使用二分类学习器来解决多分类问题。
考虑
N
N
N个类别
C
1
,
C
2
,
…
,
C
N
C_1,C_2,\ldots,C_N
C1,C2,…,CN,这里我们将
N
N
N分类问题拆解若干个二分类问题进行求解。
- 一对一分类(One vs One, OvO):将 N N N个类别两两配对,产生 N ( N − 1 ) / 2 N(N-1)/2 N(N−1)/2个分类任务,测试时将新样本输入给所有分类器,选择预测结果最多的类别作为最终分类结果。
- 一对其余分类(One vs Rest, OvR):每次将一个类别的样本作为正类,其余所有类别的样本作为负类,构建 N N N个分类器。同样将测试样本输入到所有分类器中,若只有一个分类器预测为正类,则对应的类别作为最终分类结果;若有多个分类器预测为正类,通常考虑各个分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
多分类 | 样本数 | 分类器个数 |
---|---|---|
OvO | 两类样本 | N ( N − 1 ) / 2 N(N-1)/2 N(N−1)/2 |
OvR | 所有样本 | N N N |
OvO需要训练 N ( N − 1 ) / 2 N(N-1)/2 N(N−1)/2分类器,而OvR只需训练 N N N个分类器,通常其存储开销和测试时间开销更小;但OvR的每个分类器需要使用全部样本数据,在类别很多时,训练时间开销通常更大。
6. 类别不平衡问题
类别不平衡:分类任务中存在的不同类别(对于二分类就是正负类别)训练样本数量差别很大的情况。在这里,我们假设对于二分类问题,正样本数很少,负样本数很多(比如广告点击率),主要有以下三种处理办法:
- 欠采样:去除一些训练集中的负样本使得正负样本数相当
- 过采样:增加一些正样本数使得正负样本数相当
- 阈值移动:基于原始训练集进行训练,在用分类器判别时修改判决阈值
欠采样:训练集样本数变少,训练时间减少,可能会出现欠拟合。代表性算法EasyEnsemble利用集成学习算法,将负样本划分为若干个集合供不同的学习器使用。
过采样:增加了很多正样本,训练集变大,可能会出现过拟合。代表性算法SMOTE通过对正样本进行插值来产生额外的正样本。
阈值移动:在假设“训练集是真实样本总体的无偏估计”的前提下,我们基于训练集中正负样本的数目对判别器进行缩放。原来的判别阈值为0.5,即 若 y 1 − y > 1 , 则 预 测 为 正 类 若\frac{y}{1-y}>1, 则预测为正类 若1−yy>1,则预测为正类现在在训练集中假设正样本数为 m + m^+ m+,负样本数为 m − m^- m−,则正样本对于负样本的观测几率为 m + m − \frac{m^+}{m^-} m−m+,在上述假设下,观测几率代表了真实几率。所以只要分类器的预测几率高于观测几率就应该判定为正类,即 若 y 1 − y > m + m − , 则 预 测 为 正 类 若\frac{y}{1-y}>\frac{m^+}{m^-}, 则预测为正类 若1−yy>m−m+,则预测为正类我们对于分类器的判别阈值进行缩放,令 y 1 − y = y 1 − y × m − m + \frac{y}{1-y}=\frac{y}{1-y}\times\frac{m^-}{m^+} 1−yy=1−yy×m+m−即可。