线性分类模型(三)——判别式模型

本文首发于我的个人博客Suixin’s Blog
原文: https://suixinblog.cn/2018/10/linear-classification3.html  作者: Suixin

判别式方法:直接对条件概率分布 p ( C k x ) p(C_k|\pmb{x}) 进行建模。
相比生成式方法有两个优点:需要训练的参数更少,预测表现会提升(尤其当类条件概率密度的假设没有很好的近似真实分布的时候)。

logistic回归

对于二分类问题,类别 C 1 C_1 的后验概率为
p ( C 1 ϕ ) = y ( ϕ ) = σ ( w ϕ ) p(C_1|\pmb{\phi})=y(\pmb{\phi})=\sigma(\pmb{w}^\top\pmb{\phi})
可见,对于 M M 维特征空间 ϕ \pmb{\phi} ,该模型只有 M M 个可调节参数,而生成式模型需要调节参数总数为 M ( M + 5 ) 2 + 1 \frac{M(M+5)}{2}+1
对于一个数据集 { ϕ n , t n } \{\pmb{\phi}_n,t_n\} ,其中, t n { 0 , 1 } t_n\in \{0,1\} ϕ n = ϕ ( x n ) \pmb{\phi}_n=\phi(\pmb{x}_n) n = 1 , 2 ,   , N n=1,2,\cdots,N
似然函数为
p ( t w ) = n = 1 N y n t n ( 1 y n ) 1 t n p(\textbf{t}|\pmb{w})=\prod_{n=1}^Ny_n^{t_n}(1-y_n)^{1-t_n}
其中, t = ( t 1 , t 2 ,   , t N ) \textbf{t}=(t_1,t_2,\cdots,t_N)^\top 通过对似然函数取负对数的方式定义一个误差函数,即交叉熵(cross-entropy)误差函数
E ( w ) = ln p ( t w ) = n = 1 N { t n ln y n + ( 1 t n ) ln ( 1 y n ) } E(\pmb{w})=-\ln p(\textbf{t}|\pmb{w})=-\sum_{n=1}^N\{t_n\ln y_n+(1-t_n)\ln(1-y_n)\}
w \pmb{w} 求梯度,可得
E ( w ) = n = 1 N ( y n t n ) ϕ n = Φ ( y t ) \nabla E(\pmb{w})=\sum_{n=1}^N(y_n-t_n)\pmb{\phi}_n=\Phi^\top(\textbf{y}-\textbf{t})
注: 最大似然方法对于线性可分的数据集会产生严重的过拟合。

迭代重加权最小平方(IRLS)

logistic回归不再有解析解,故需要用Newton-Raphson迭代
w n e w = w o l d H 1 E ( w ) \pmb{w}^{new}=\pmb{w}^{old}-H^{-1}\nabla E(\pmb{w})
其中, H H 是Hessian矩阵,其元素为 E ( w ) E(\pmb{w}) 关于 w \pmb{w} 的二阶导数。
推导可得
H = E ( w ) = n = 1 N y n ( 1 y n ) ϕ n ϕ n = Φ R Φ H=\nabla\nabla E(\pmb{w})=\sum_{n=1}^Ny_n(1-y_n)\pmb{\phi}_n\pmb{\phi}_n^\top=\Phi^\top R\Phi
其中, N × N N\times N 的对角矩阵 R R 元素为 R n n = y n ( 1 y n ) R_{nn}=y_n(1-y_n) 。由于 o < y n < 1 o<y_n<1 ,故对任意向量 u u 都有 u H u > 0 u^\top Hu>0 ,即 H H 正定,因此误差函数是 w \pmb{w} 的凸函数,有唯一最小值。

softmax分类

对于多分类问题,后验概率为
p ( C k ϕ ) = y k ( ϕ ) = exp ( a k ) j exp ( a j ) p(C_k|\pmb{\phi})=y_k(\pmb{\phi})=\frac{\exp(a_k)}{\sum_j\exp(a_j)}
其中, a k = w k ϕ a_k=\pmb{w}_k^\top\pmb{\phi} 。求导,有
y k a j = { y k ( 1 y k ) , j = k y k y j , j k \frac{\partial y_k}{\partial a_j}=\begin{cases} y_k(1-y_k), & j=k \\ -y_ky_j, & j\neq k \end{cases}
从而,似然函数为
p ( T w 1 ,   , w K ) = n = 1 N k = 1 K p ( C k ϕ n ) t n k = n = 1 N k = 1 K y n k t n k p(T|\pmb{w}_1,\cdots,\pmb{w}_K)=\prod_{n=1}^N\prod_{k=1}^Kp(C_k|\pmb{\phi}_n)^{t_{nk}}=\prod_{n=1}^N\prod_{k=1}^Ky_{nk}^{t_{nk}}
其中, y n k = y k ( ϕ n ) y_{nk}=y_k(\pmb{\phi}_n) T T 是一个 N × K N\times K 的矩阵,元素 t n k t_{nk} 为1-of-K编码值。
交叉熵误差函数为
E ( w 1 ,   , w K ) = ln p ( T w 1 ,   , w K ) = n = 1 N k = 1 K t n k ln y n k E(\pmb{w}_1,\cdots,\pmb{w}_K)=-\ln p(T|\pmb{w}_1,\cdots,\pmb{w}_K)=-\sum_{n=1}^N\sum_{k=1}^Kt_{nk}\ln y_{nk}
同样利用Newton-Raphson迭代可求解。

参考

“Pattern Recognition and Machine Learning”

猜你喜欢

转载自blog.csdn.net/weixin_43269020/article/details/83212444