落园 » ≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(六)|专注经济视角下的互联网

≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(六)

呃,我觉得我的笔记稍稍有点混乱了...这周讲的依旧是线性分类器,logit为主。anyway,大家将就着看吧。

logistic regression

首先我们考虑最一般的,有K种分类的场合。依旧,我们用G来代替Y作为观测到的分类结果,那么则有:

\hat{G}=\arg\max_{G}\, P(G|X)为最优的预测结果。这里我们希望找到一种线性的形式,还需要使用一些单调变换保证预测值在[0,1]之间。因此,我们对于每个分类k,假设P(G=k|X=x)=\frac{e^{X\beta_{k}}}{\sum_{k=1}^{K}e^{X\beta_{k}}}

进一步的,我们取任意类K作为对照组,且各组相加概率之和必为1,所以有:

P(G=k|X=x)=\frac{e^{X\beta_{k}}}{1+\sum_{k=1}^{K-1}e^{X\beta_{k}}}P(G=K|X=x)=\frac{1}{1+\sum_{k=1}^{K-1}e^{X\beta_{k}}}

所以,最终得到两组之间的概率比值为:\frac{P(G=k|X=x)}{P(G=K|X=x)}=e^{X\beta_{k}}\Rightarrow\log\left(\frac{P(G=k|X=x)}{P(G=K|X=x)}\right)=X\beta_{k}

最后求解的时候,就是直接用最大似然准则,来求解\max\,\mathcal{L}(\beta)=\max\,\sum_{i=1}^{N}\log P(G_{i}|X_{i})

这个最大似然函数计算起来比较麻烦,通常很多是数值解。下面以K=2为例,来展示求解过程。

首先我们这个时候有两类,不妨记作1和0,则P(G=1|X=x)=\frac{e^{X\beta}}{1+e^{X\beta}}\equiv\sigma(X\beta)

P(G=0|X=x)=\frac{1}{1+e^{X\beta}}=1-\sigma(X\beta)则它的对数似然函数:

\begin{eqnarray*}\mathcal{L}(\beta) & = & \sum_{i=1}^{N}[G_{i}\log P(G_{i}=1|X=x_{i})+(1-G_{i})\log P(G_{i}=0|X=x_{i})\\& = & \sum_{i=1}^{N}[G_{i}\log\frac{P(G_{i}=1|X=x_{i})}{P(G_{i}=0|X=x_{i})}+\log P(G_{i}=0|X=x_{i})]\\& = & \sum_{i=1}^{N}[G_{i}X_{i}\beta+\log(1-\sigma(X_{i}\beta))]\end{eqnarray*}

然后我们求导可得:\frac{\partial\mathcal{L}(\beta)}{\partial\beta}=\sum_{i=1}^{N}[G_{i}X_{i}-\sigma(X_{i}\beta)X_{i}]=\sum_{i=1}^{N}[G_{i}-\sigma(X_{i}\beta)]X_{i}

之后可以用牛顿法迭代求数值解:

\beta^{new}=\beta^{old}\pm(\frac{\partial^{2}\mathcal{L}(\beta)}{\partial\beta\partial\beta})^{-1}\frac{\partial\mathcal{L}(\beta)}{\partial\beta}

其中二阶导数部分可以化简为:\frac{\partial^{2}\mathcal{L}(\beta)}{\partial\beta\partial\beta}=-\sum_{i=1}^{N}X_{i}'X_{i}[\sigma(X_{i}\beta)(1-\sigma(X_{i}\beta))]

\Sigma(\beta)=\left[\begin{array}{c}\sigma(X_{1}\beta)\\\vdots\\\sigma(X_{N}\beta)\end{array}\right]

W=\left[\begin{array}{ccc}\sigma(X_{1}\beta)(1-\sigma(X_{1}\beta))\\ & \ddots\\ & & \sigma(X_{N}\beta)(1-\sigma(X_{N}\beta))\end{array}\right]

\beta^{new}\leftarrow\beta^{old}+(X'WX)^{-1}X'(G-\Sigma(\beta^{old}))=\underbrace{(X'WX)^{-1}X'W}_{OLS}\underbrace{[X\beta^{old}+W^{-1}(G-\Sigma(\beta^{old}))]}_{Z}

经过简化之后,这里相当于加权的最小二乘法,目标函数为\arg\min_{\beta^{new}}(Z-X\beta)'W(Z-X\beta)

所以整个算法可以写作:

0. 令\beta=0或任意起始值

1. 计算Z矩阵.

2. 新的\beta\arg\min_{\beta^{new}}(Z-X\beta)'W(Z-X\beta).

3. 重复1,2步直至收敛。

这类方法成为IRLS(不断重写的加权最小二乘法)。

LDA和logit选择

其实也没什么定论,两者均为线性,只是一般我们认为LDA需要假设联合正态且方差相等,比较强;而logit假设没有这么强,相比而言更稳定。

perceptional分类器

perceptional分类器是一类相对简单的分类算法,以两类场合为例。为了方便起见,我们假设两类为1和-1,则目标是找出一条直线可以完全分割出来两群点。这里转化成数学的语言,就是找到W使得\begin{cases}G_{i}=1 & X_{i}W>0\\G_{i}=-1 & X_{i}W<0\end{cases}

或者简化为:G_{i}X_{i}W>0

算法也很简单:

1. 给定任意的W值,比如0. 如果G_{i}X_{i}W\leq0,出错。

2. 令新的W\leftarrow W+G_{i}X_{i},重复第一步。

这里可证一个定理:如果原数据集是线性可分的(即W存在),那么在有限步内perceptional算法收敛。其实从第二步可以看出,这样的改进总是趋近于目标的:G_{i}X_{i}W^{new}=G_{i}X_{i}W^{old}+X_{i}'X_{i},一定是在逐步增加的。

同样的算法推广到多累场合,我们就需要引入特征向量\Phi(x,G)\beta_{k},使得条件概率P(G=k|X=x)=\Phi(x,G)\beta_{k}。这样我们的目标就是找到\beta使得\hat{G_{i}}=\arg\max\Phi(x,G)\beta

同样的,\beta从0开始,当\hat{G_{i}}\neq G_{i}时,\beta\leftarrow\beta+[\Phi(x_{i},G_{i})-\Phi(x_{i},\hat{G_{i}})],直至收敛。

不过有意思的是,实践证明,最后使用\beta训练过程中的\beta_{1},...,\beta_{m}的平均值效果会更好,而不是最终的\beta值。

--------笔记结束,废话开始--------

到这里,分类器吴老师已经介绍了三类:LDA,Logit和perceptional。其实我一直觉得比较好玩的是分类器和聚类方法的对比——虽然一个是有监督,一个是无监督的学习,不过有的时候我们就算有Y的观测值也不一定直接就去用——聚类方法某种程度上显得更加自然一些。这也是大家把模型与实际业务相结合起来的成果吧,总要更符合业务上的直觉才可以。是自然的展现群落的形态,还是给定一些条条框框只是去预测?实践中真的是,都去试试才知道那种更符合一个具体案例的需求。这也是在industry玩的比较开心的缘故,没有那么多条条框框,没有那么多“约定俗成“的规矩,需要自己去一步步挖掘这些算法的用武之地。看着一个个自己熟悉或者陌生的模型被逐渐的改造和应用,也是一件蛮开心的事情呢。

Leave a Reply

Your email address will not be published. Required fields are marked *