博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(六)
阅读量:3518 次
发布时间:2019-05-20

本文共 2234 字,大约阅读时间需要 7 分钟。

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

logistic regression

首先我们考虑最一般的,有K种分类的场合。依旧,我们用 G

来代替
Y

作为观测到的分类结果,那么则有:

G^=argmaxGP(G|X)

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

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

P(G=k|X=x)=eXβk1+K1k=1eXβk

P(G=K|X=x)=11+K1k=1eXβk

所以,最终得到两组之间的概率比值为: P(G=k|X=x)P(G=K|X=x)=eXβklog(P(G=k|X=x)P(G=K|X=x))=Xβk

最后求解的时候,就是直接用最大似然准则,来求解 maxL(β)=maxNi=1logP(Gi|Xi)

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

为例,来展示求解过程。

首先我们这个时候有两类,不妨记作1和0,则 P(G=1|X=x)=eXβ1+eXβσ(Xβ)

P(G=0|X=x)=11+eXβ=1σ(Xβ)

则它的对数似然函数:

L(β)===i=1N[GilogP(Gi=1|X=xi)+(1Gi)logP(Gi=0|X=xi)i=1N[GilogP(Gi=1|X=xi)P(Gi=0|X=xi)+logP(Gi=0|X=xi)]i=1N[GiXiβ+log(1σ(Xiβ))]

然后我们求导可得: L(β)β=Ni=1[GiXiσ(Xiβ)Xi]=Ni=1[Giσ(Xiβ)]Xi

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

βnew=βold±(2L(β)ββ)1L(β)β

其中二阶导数部分可以化简为: 2L(β)ββ=Ni=1XiXi[σ(Xiβ)(1σ(Xiβ))]

Σ(β)=σ(X1β)σ(XNβ)

W=σ(X1β)(1σ(X1β))σ(XNβ)(1σ(XNβ))

βnewβold+(XWX)1X(GΣ(βold))=(XWX)1XWOLS[Xβold+W1(GΣ(βold))]Z

经过简化之后,这里相当于加权的最小二乘法,目标函数为 argminβnew(ZXβ)W(ZXβ)

所以整个算法可以写作:

0. 令 β=0

或任意起始值

1. 计算 Z

矩阵.

2. 新的 β

argminβnew(ZXβ)W(ZXβ)

.

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

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

LDA和logit选择

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

perceptional分类器

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

Gi=1Gi=1XiW>0XiW<0

或者简化为: GiXiW>0

算法也很简单:

1. 给定任意的W值,比如0. 如果 GiXiW0

,出错。

2. 令新的 WW+GiXi

,重复第一步。

这里可证一个定理:如果原数据集是线性可分的(即W存在),那么在有限步内perceptional算法收敛。其实从第二步可以看出,这样的改进总是趋近于目标的: GiXiWnew=GiXiWold+XiXi

,一定是在逐步增加的。

同样的算法推广到多累场合,我们就需要引入特征向量 Φ(x,G)βk

,使得条件概率
P(G=k|X=x)=Φ(x,G)βk 。这样我们的目标就是找到
β 使得
Gi^=argmaxΦ(x,G)β

同样的, β

从0开始,当
Gi^Gi 时,
ββ+[Φ(xi,Gi)Φ(xi,Gi^)]

,直至收敛。

不过有意思的是,实践证明,最后使用 β

训练过程中的
β1,...,βm 的平均值效果会更好,而不是最终的
β

值。

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

到这里,分类器吴老师已经介绍了三类:LDA,Logit和perceptional。其实我一直觉得比较好玩的是分类器和聚类方法的对比——虽然一个是有监督,一个是无监督的学习,不过有的时候我们就算有 Y

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

转载地址:http://mdvqj.baihongyu.com/

你可能感兴趣的文章
查找入职员工时间排名倒数第三的员工所有信息
查看>>
使用join查询方式找出没有分类的电影id以及名称
查看>>
Qt教程(2) : Qt元对象系统
查看>>
驱动开发误用指针错误:Unable to handle kernel NULL pointer dereference at virtual address
查看>>
Linux部署DocSystem知识/文件管理系统
查看>>
Centos7开机自启动脚本无法使用备用方案
查看>>
jvm虚拟机内存详解
查看>>
线程的创建方式
查看>>
DNS是什么
查看>>
mapreduce自定义分组、自定义分区、二次排序
查看>>
Hbase架构
查看>>
spark运行模式
查看>>
PaddleX的C++使用
查看>>
MyBatis-Plus代码生成器
查看>>
我的第一个SpringBoot项目(一)
查看>>
回文数
查看>>
伪背包问题!
查看>>
求10000以内n的阶乘!
查看>>
static关键字
查看>>
类的继承
查看>>