分类问题由来已久,和回归问题一样经典,但它本身和回归相比又有什么特别之处呢?显然,对于一般的分类而言,其分类的可能性是有限的,同时,对于结果的输出我们也不再希望它是一个拟合函数或者预测值,而是它对于每种分类的可能性。
假设我们对于Linear Regression有一点点基础,知道本质是求解
arg min
β
∣
y
−
y
^
∣
2
2
=
arg min
β
∣
y
−
x
β
∣
2
2
\argmin_{\beta}|y-\hat{y}|_2^2= \argmin_{\beta}|y-x\beta|_2^2
βargmin∣y−y^∣22=βargmin∣y−xβ∣22
并且他的解有一种非常优美的表达形式:
β
=
(
X
T
X
)
−
1
X
T
y
\beta = (X^TX)^{-1}X^Ty
β=(XTX)−1XTy
那为什么这个东西解决不了分类问题?答案是显而易见的,他能够输出的值只能是 β x \beta x βx这个数值,不能对应到生活中的类别或者概率,那该怎么映射过去呢?我们从一个binary的case看起:
1. Logistic Regression
1.1 问题由来和定义
直接对y=0/1的数据做linear regression的结果如下:
所以考虑
P
(
y
=
1
∣
x
)
=
x
β
P(y=1|x)=x\beta
P(y=1∣x)=xβ是不行的,没有办法保证结果落在合理的概率区间,为了让结果能落入概率的取值范围,引入sigmoid函数考虑
P
(
y
=
1
∣
x
)
=
1
1
+
exp
(
x
β
)
P(y=1|x)=\frac{1}{1+\exp(x\beta)}
P(y=1∣x)=1+exp(xβ)1
进一步不难得到
log
P
(
y
=
1
∣
x
)
P
(
y
=
0
∣
x
)
=
x
β
\log\frac{P(y=1|x)}{P(y=0|x)}=x\beta
logP(y=0∣x)P(y=1∣x)=xβ
ps.背后的概率模型为伯努利模型,当我们选定loss function时,我们必然做出了这种类似的假设。
1.2 β \beta β求解方法(MLE)
当然是最有名的最大似然估计法,求解
β
\beta
β就有了下面的表达式:
β
=
arg max
β
log
p
(
y
∣
x
i
,
β
)
=
arg max
β
∑
i
=
1
n
[
y
i
x
i
β
−
log
(
1
+
exp
(
x
i
β
)
)
]
\beta=\argmax_{\beta}\log p(y|x_i,\beta)=\argmax_{\beta}\sum_{i=1}^n[y_ix_i\beta-\log(1+\exp(x_i\beta))]
β=βargmaxlogp(y∣xi,β)=βargmaxi=1∑n[yixiβ−log(1+exp(xiβ))]
求解最小值,这里要对
β
\beta
β求导、
∂
f
∂
β
=
∑
I
=
1
n
[
y
i
x
i
−
x
i
exp
(
x
i
β
)
1
+
exp
(
x
i
β
)
]
=
∑
I
=
1
n
[
x
i
(
y
i
−
p
i
)
]
=
X
T
(
Y
−
P
)
\frac{\partial f}{\partial \beta} = \sum_{I=1}^n[ y_ix_i-\frac{x_i\exp(x_i\beta)}{1+\exp(x_i\beta)}]= \sum_{I=1}^n[x_i(y_i-p_i)]=X^T(Y-P)
∂β∂f=I=1∑n[yixi−1+exp(xiβ)xiexp(xiβ)]=I=1∑n[xi(yi−pi)]=XT(Y−P)
其中
p
i
=
1
1
+
exp
(
−
x
i
β
)
p_i=\frac{1}{1+\exp(-x_i\beta)}
pi=1+exp(−xiβ)1不难发现,这个东西求和等于0的解并不好求,所以我们引入了Newton’s Methods来迭代求解,对于一阶导数,考虑其在0处的Taylor展开:
0
≈
g
(
x
1
)
≈
g
(
x
0
)
+
g
′
(
x
0
)
(
x
1
−
x
0
)
0\approx g(x_1)\approx g(x_0)+g'(x_0)(x_1-x_0)
0≈g(x1)≈g(x0)+g′(x0)(x1−x0)
x
1
=
−
g
′
(
x
0
)
−
1
g
(
x
0
)
+
x
0
x_1=-g'(x_0)^{-1}g(x_0)+x_0
x1=−g′(x0)−1g(x0)+x0
显然这里就用到了二阶导,我们称二阶导得到的结果为Hessian Matrix:
H
=
−
∑
i
=
1
n
p
i
[
1
−
p
i
]
x
i
x
i
T
=
−
x
T
W
x
H=-\sum_{i=1}^np_i[1-p_i]x_ix_i^T=-x^TWx
H=−i=1∑npi[1−pi]xixiT=−xTWx
其中
W
=
d
i
a
g
(
p
1
[
1
−
p
1
]
,
⋯
,
p
n
[
1
−
p
n
]
)
W=diag(p_1[1-p_1],\cdots,p_n[1-p_n])
W=diag(p1[1−p1],⋯,pn[1−pn]),最终Newton 迭代的步骤为:
β
n
e
w
=
β
o
l
d
−
H
−
1
∇
ℓ
=
β
o
l
d
+
(
x
T
W
x
)
−
1
x
T
(
y
−
p
)
\beta^{new}=\beta^{old}-H^{-1}\nabla\ell=\beta^{old}+(x^TWx)^{-1}x^T(y-p)
βnew=βold−H−1∇ℓ=βold+(xTWx)−1xT(y−p)
实际使用的过程中,求逆过程非常艰难,还需要搭配其他算法服用效果最佳。同时对于能完美分类的case其迭代效果并不好,因为参数往往要达到无穷才可以实现,导致其最后是不收敛的。
[拓展天地] 做一个牛顿下山的专项练习,求解在1附近的极值点:
f
(
x
)
=
x
3
−
2
x
+
2
f(x)=x^3-2x+2
f(x)=x3−2x+2
f
′
(
x
)
=
3
x
2
−
2
,
f
′
′
(
x
)
=
6
x
,
x
k
+
1
=
x
k
−
f
′
(
x
k
)
f
′
′
(
x
k
)
f'(x)=3x^2-2,f''(x)=6x,x_{k+1}=x_k-\frac{f'(x_k)}{f''(x_k)}
f′(x)=3x2−2,f′′(x)=6x,xk+1=xk−f′′(xk)f′(xk)
x
1
=
x
0
−
3
x
0
2
−
2
6
x
0
.
.
.
.
.
.
x_1=x_0-\frac{3x_0^2-2}{6x_0}......
x1=x0−6x03x02−2......
1.3 Multi-Class Logistic Regression
对于多类问题,我们往往需要对其两两分类,选择其中的一类作为参考,例如k=3,选择第三类作为reference:
log
P
(
y
=
k
3
∣
x
)
P
(
y
=
k
∣
x
)
=
x
β
k
\log\frac{P(y=k_3|x)}{P(y=k|x)}=x\beta_k
logP(y=k∣x)P(y=k3∣x)=xβk
其中
β
k
\beta_k
βk代表区分第k类和第3类的曲线,那如何区分第一类和第二类呢?两者再相互做除法即可。这样我们就把多分类问题划分为了两两一组的二分类问题!
2 分类问题中的生成模型(LDA)
对于上述的问题,我们只能对于给定的 x i x_i xi,预测其对应的 y i y_i yi的概率,反过来,我们要是想通过模型进行取样的话(求解 p k ( x ) = p ( Y = k ∣ X = x p_k(x)=p(Y=k|X=x pk(x)=p(Y=k∣X=x),进而进行分类).首先需要进行一些前提的假设和前置知识的补充
- 假设X在Y=k里面是正态分布的,并且不同类别中的方差是相同的,即
X
∣
Y
=
k
∼
N
(
μ
k
,
Σ
)
X|Y=k\sim N(\mu_k,\Sigma)
X∣Y=k∼N(μk,Σ):
f k ( x ) = 1 ( 2 π ) p / 2 Σ 1 / 2 exp ( − 1 2 ( x − μ k ) T Σ − 1 ( x − μ k ) ) f_k(x)=\frac{1}{(2\pi)^{p/2}\Sigma^{1/2}}\exp(-\frac{1}{2}(x-\mu_k)^T\Sigma^{-1}(x-\mu_k)) fk(x)=(2π)p/2Σ1/21exp(−21(x−μk)TΣ−1(x−μk)) - Bayes Theorem:
P ( A k ∣ B ) = P ( B ∣ A k ) P ( A k ) ∑ j = 1 K P ( B ∣ A j ) P ( A j ) P(A_k|B)=\frac{P(B|A_k)P(A_k)}{\sum_{j=1}^KP(B|A_j)P(A_j)} P(Ak∣B)=∑j=1KP(B∣Aj)P(Aj)P(B∣Ak)P(Ak)
把上面的二者结合一下不难得到 p k ( x ) p_k(x) pk(x)
p k ( x ) = π k exp ( − 1 2 ( x − μ k ) T Σ − 1 ( x − μ k ) ) ∑ I = 1 K π I exp ( − 1 2 ( x − μ I ) T Σ − 1 ( x − μ I ) ) p_k(x)=\frac{\pi_k\exp(-\frac{1}{2}(x-\mu_k)^T\Sigma^{-1}(x-\mu_k))}{\sum_{I=1}^K\pi_I\exp(-\frac{1}{2}(x-\mu_I)^T\Sigma^{-1}(x-\mu_I))} pk(x)=∑I=1KπIexp(−21(x−μI)TΣ−1(x−μI))πkexp(−21(x−μk)TΣ−1(x−μk))
进一步有:
参考上面的形式,我们得到了一个差不多的表达式!不同的是,我们需要做的不再是像之前一样求解 β \beta β而是,想办法与估计 μ , Σ \mu,\Sigma μ,Σ。