我算是有点基础的(有过深度学习和机器学的项目经验),但也是半路出家,无论是学Python还是深度学习,都是从问题出发,边查边做,没有系统的学过相关的知识,这样的好处是入门快(如果想快速入门,大家也可以试试,直接上手项目,从小项目开始),但也存在一个严重的问题就是,很多东西一知半解,容易走进死胡同出不来(感觉有点像陷入局部最优解,找不到出路),所以打算系统的学习几本口碑比较不错的书籍。
书籍选择: 当然,机器学习相关的书籍有很多,很多英文版的神书,据说读英文版的书会更好,奈何英文不太好,比较难啃。国内也有很多书,周志华老师的“西瓜书”我也有了解过,看了前几章,个人感觉他肯能对初学者更友好一点,讲述的非常清楚,有很多描述性的内容。对比下来,更喜欢《统计学习方法》,毕竟能坚持看完才最重要。
笔记内容: 笔记内容尽量省去了公式推导的部分,一方面latex编辑太费时间了,另一方面,我觉得公式一定要自己推到一边才有用(最好是手写)。尽量保留所有标题,但内容会有删减,通过标黑和列表的形式突出重点内容,要特意说一下,标灰的部分大家最好读一下(这部分是我觉得比较繁琐,但又不想删掉的部分)。
代码实现: 最后是本章内容的实践,如果想要对应的.ipynb文件,可以留言
逻辑斯谛回归(logistic regression) 是统计学习中的经典分类方法。最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型(maximum entropy model)。
逻辑斯谛回归模型与最大熵模型都属于对数线性模型。
首先介绍逻辑斯谛分布(logistic distribution)。
逻辑斯谛分布的密度函数 f ( x ) f(x) f(x)和分布函数 F ( x ) F(x) F(x)的图形如图6.1所示。分布函数属于逻辑斯谛函数,其图形是一条S形曲线(sigmoid curve)。该曲线以点 为中心对称,即满足:
曲线在中心附近增长速度较快,在两端增长速度较慢。形状参数 γ γ γ的值越小,曲线在中心附近增长得越快。
二项逻辑斯谛回归模型(binomial logistic regression model)是一种分类模型,由条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)表示,形式为参数化的逻辑斯谛分布。
这里,随机变量 X X X取值为实数,随机变量 Y Y Y取值为1或0。我们通过监督学习的方法来估计模型参数。
对于给定的输入实例 x x x,按照式(6.3)和式(6.4)可以求得 P ( Y = 1 ∣ x ) P(Y=1|x) P(Y=1∣x)和 P ( Y = 0 ∣ x ) P(Y=0|x) P(Y=0∣x)。
逻辑斯谛回归比较两个条件概率值的大小,将实例 x x x分到概率值较大的那一类。
有时为了方便,将权值向量和输入向量加以扩充,仍记作 w , x w,x w,x,即
一个事件的几率(odds)是指该事件发生的概率与该事件不发生的概率的比值。
如果事件发生的概率是p,那么该事件的几率是 p 1 − p \frac{p}{1-p} 1−pp ,该事件的对数几率(log odds)或logit函数是
l o g i t ( p ) = l o g p 1 − p logit(p)=log\frac{p}{1-p} logit(p)=log1−pp
对逻辑斯谛回归而言,由式(6.5)与式(6.6)得
l o g P ( Y = 1 ∣ x ) 1 − P ( Y = 1 ∣ x ) = w ⋅ x log\frac{P(Y=1|x)}{1-P(Y=1|x)} = w\cdot x log1−P(Y=1∣x)P(Y=1∣x)=w⋅x
这就是说,在逻辑斯谛回归模型中,输出 Y = 1 Y=1 Y=1的对数几率是输入 x x x的线性函数。(或者说,输出 Y = 1 Y=1 Y=1的对数几率是由输入 x x x的线性函数表示的模型,即逻辑斯谛回归模型。)
换一个角度看,考虑对输入 x x x进行分类的线性函数 w ⋅ x w·x w⋅x,其值域为实数域。注意,这里 x ∊ R N + 1 x∊R^{N+1} x∊RN+1, w ∊ R N + 1 w∊R^{N+1} w∊RN+1。通过逻辑斯谛回归模型定义式(6.5)可以将线性函数 w ⋅ x w·x w⋅x转换为概率:
P ( Y = 1 ∣ x ) = e x p ( w ⋅ x ) 1 + e x p ( w ⋅ x ) P(Y=1|x)=\frac{exp(w \cdot x)}{1+exp(w \cdot x)} P(Y=1∣x)=1+exp(w⋅x)exp(w⋅x)
这时,
这样的模型就是逻辑斯谛回归模型。
逻辑斯谛回归模型学习时,对于给定的训练数据集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) T={(x_1,y_1),(x_2,y_2),…,(x_N,y_N)} T=(x1,y1),(x2,y2),…,(xN,yN),其中, x i ∊ R n x_i∊R^n xi∊Rn, y i ∊ 0 , 1 y_i∊{0,1} yi∊0,1,可以应用极大似然估计法估计模型参数,从而得到逻辑斯谛回归模型。
设:
P ( Y = 1 ∣ x ) = π ( x ) P(Y=1|x)=\pi(x) P(Y=1∣x)=π(x)
P ( Y = 0 ∣ x ) = 1 − π ( x ) P(Y=0|x)=1-\pi(x) P(Y=0∣x)=1−π(x)
似然函数为:
∏ i = 0 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i ] \prod \limits_{i=0}^N[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i}] i=0∏N[π(xi)]yi[1−π(xi)]1−yi]
对数似然函数为:
对 L ( w ) L(w) L(w)求极大值,得到 w w w的估计值。
这样,问题就变成了以对数似然函数为目标函数的最优化问题。逻辑斯谛回归学习中通常采用的方法是梯度下降法及拟牛顿法。
假设 w w w的极大似然估计值是 ,那么学到的逻辑斯谛回归模型为
P ( Y = 1 ∣ x ) = e x p ( w ^ ⋅ x ) 1 + e x p ( w ^ ⋅ x ) P(Y=1|x)=\frac{exp(\hat{w} \cdot x)}{1+exp(\hat{w} \cdot x)} P(Y=1∣x)=1+exp(w^⋅x)exp(w^⋅x)
P ( Y = 0 ∣ x ) = 1 1 + e x p ( w ^ ⋅ x ) P(Y=0|x)=\frac{1}{1+exp(\hat{w} \cdot x)} P(Y=0∣x)=1+exp(w^⋅x)1
上面介绍的逻辑斯谛回归模型是二项分类模型,用于二类分类。
可以将其推广为多项逻辑斯谛回归模型(multi-nominal logistic regression model),用于多类分类。
假设离散型随机变量Y的取值集合是 1 , 2 , … , K {1,2,…,K} 1,2,…,K,那么多项逻辑斯谛回归模型是
二项逻辑斯谛回归的参数估计法也可以推广到多项逻辑斯谛回归。