Logistic 回归

原来以为logistic回归只是很简单,没什么的干货的算法,在看了吴恩达老师的深度学习网易公开课和同学的交流之后,发现这个是很多算法的基础,很重要,这里系统的记录一下学习心得:

####1.logistc分布
随机变量X服从Logistic分布,即有分布函数和密度函数如下:
F ( x ) = P ( X ≤ x ) = 1 e − ( x − μ ) / γ (1) F(x)=P(X\le x)=\frac{1}{e^{-(x-\mu)/\gamma}}\tag{1} F(x)=P(Xx)=e(xμ)/γ1(1)
f ( x ) = F ′ ( x ) = e − ( x − μ ) / γ γ ( 1 + e − ( x − μ ) / γ ) (2) f(x)=F'(x)=\frac{e^{-(x-\mu)/\gamma}}{\gamma(1+e^{-(x-\mu)/\gamma})}\tag{2} f(x)=F(x)=γ(1+e(xμ)/γ)e(xμ)/γ(2)
两个函数的图如下:
这里写图片描述
图中 μ = 0 , γ = 1 \mu=0,\gamma=1 μ=0,γ=1 μ \mu μ为位置参数,决定了对称点的位置, γ > 0 \gamma \gt0 γ>0是形状参数,决定了压缩的形状。可以看到,分布函数就是常用的sigmoid函数,常用来作神经网络二分类的激活函数,将无穷范围内的输入x值压缩到(0,1)之间,提供了分类的概率。

####2.二项Logistic回归模型
看名字是回归,其实这是个分类模型,由条件概率分布P(Y|X)表示,随机变量X为实值,Y为0或1:
P ( Y = 1 ∣ x ) = e w ⋅ x + b 1 + e w ⋅ x + b = 1 1 + e − ( w ⋅ x + b ) (3) P(Y=1|x)=\frac{e^{w\cdot x+b}}{1+e^{w\cdot x+b}}=\frac{1}{1+e^{-(w\cdot x+b)}}\tag{3} P(Y=1x)=1+ewx+bewx+b=1+e(wx+b)1(3)
P ( Y = 0 ∣ x ) = 1 1 + e ( w ⋅ x + b ) (4) P(Y=0|x)=\frac{1}{1+e^{(w\cdot x+b)}}\tag{4} P(Y=0x)=1+e(wx+b)1(4)
以上两个公式是从概率角度来看的,其实是只有一个公式P(Y=1|x),另外的P(Y=0|x)=1-P(Y=1|x),,所以我们只需要求公式3即可。所以供决策函数(Andrew NG)来看,所以目标属于Y=1类在特征x下的条件概率为:
h w ( x ) = g ( w T x ) = 1 1 + e − ( w T x + b ) (5) h_w(x)=g(w^Tx)=\frac{1}{1+e^{-({w^Tx+b})}}\tag{5} hw(x)=g(wTx)=1+e(wTx+b)1(5)
一个事件的几率是指该事件发生与不发生的概率比值。如果该事件发生概率为p,那么几率为 p 1 − p \frac{p}{1-p} 1pp,取个对数 l o g p 1 − p log\frac{p}{1-p} log1pp,即为对数几率,对于Logistc回归而言,其对数几率为:
l o g P ( Y = 1 ∣ x ) 1 − P ( Y = 1 ∣ x ) = w T x + b (6) log\frac{P(Y=1|x)}{1-P(Y=1|x)}=w^Tx+b\tag{6} log1P(Y=1x)P(Y=1x)=wTx+b(6)
可以看出,Logistic回归就是一般线性回归的对数几率,这里本人的理解是将一般线性回归(预测的值范围是整个实域),通过sigmoid压缩到(0,1)之间,转化成概率。
####3.参数估计
可以采用极大似然估计估计参数模型,给定数据集T={ ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x n , y n ) (x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n) (x1,y1),(x2,y2),,(xn,yn)},设:P(Y=1|x)= π ( x ) \pi(x) π(x),P(Y=0|x)=1- π ( x ) \pi(x) π(x),则似然函数为:
∏ i = 1 n [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i (7) \prod_{i=1}^{n}[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i}\tag{7} i=1n[π(xi)]yi[1π(xi)]1yi(7)
公式7中,当 y i = 1 y_i=1 yi=1时,后面的 [ 1 − π ( x i ) ] 1 − y i [1-\pi(x_i)]^{1-y_i} [1π(xi)]1yi为1;当 y i = 0 y_i=0 yi=0时,前面的 [ π ( x i ) ] y i [\pi(x_i)]^{y_i} [π(xi)]yi为1。Logistc回归而言,算出样本属于1或者0的概率,哪一个概率大便取那个作为当前的结果,所以公式7可以看成n个样本的预测结果的概率的连乘,只不过每个样本都有两种结果,所以取个 y i y_i yi的指数将两者都cover到。取对数,对数似然函数为:
L ( w , b ) = ∑ i = 1 n [ y i l o g π ( x i ) + ( 1 − y i ) l o g ( 1 − π ( x i ) ) ] L(w,b)=\sum_{i=1}^{n}[y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))] L(w,b)=i=1n[yilogπ(xi)+(1yi)log(1π(xi))]
L ( w , b ) = ∑ i = 1 n [ y i l o g π ( x i ) + ( 1 − y i ) l o g ( 1 − π ( x i ) ) ] L(w,b)=\sum_{i=1}^{n}[y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))] L(w,b)=i=1n[yilogπ(xi)+(1yi)log(1π(xi))]
值得一提的是,在Andrew NG的公开课中,将Logistic回归的单个样本的Loss函数定义为:
L ( w , b ) = − ( y i l o g π ( x i ) + ( 1 − y i ) l o g ( 1 − π ( x i ) ) ) L(w,b)=-(y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))) L(w,b)=(yilogπ(xi)+(1yi)log(1π(xi)))
即传说中的log损失,整个样本集上的代价cost函数定义为 J ( w , b ) = 1 m L ( w , b ) J(w,b)=\frac{1}{m}L(w,b) J(w,b)=m1L(w,b)
这两者并不冲突,在上述极大似然函数中求得是似然函数的极大值,损失函数或者代价函数求得是最小值,只是多个 1 m \frac{1}{m} m1的区别。
通常采用梯度下降(极大似然估计采用梯度上升)或者拟牛顿法求解Logistic回归最优化问题。

####4.多项Logistic回归(softmax分类,多分类任务)
多项Logistic回归又名softmax分类器,针对多分类问题。假设要分的类有K个,{1,2,3 ⋯ \cdots ,K},那么模型最后输出为K维的向量(向量的各维度的和为1),每个维度的值即为样本属于当前类的概率,公式化来讲,假设函数 h θ ( x ) h_\theta(x) hθ(x)形式如下:
这里写图片描述
其中 θ 1 , θ 2 , ⋯   , θ k \theta1,\theta2,\cdots,\theta k θ1,θ2,,θk为模型参数,分别将样本映射到k个类别,做个归一化(除以所有类别的总和),即为概率。假设样本的特征维度为n,加上偏置1,则这里 θ i \theta i θi的维度为(n+1),为了方便起见,将k个 θ i \theta i θi纵向叠在一起,形成k*(n+1)的矩阵:这里写图片述
这样一个k*(n+1)的矩阵右乘(n+1)维的向量,得到k维的向量。
李航老师的《统计机器学习》中将softmax模型化为:
P ( Y = k ∣ x ) = e w k ⋅ x + b k 1 + ∑ k = 1 K − 1 e w k ⋅ x + b k , k = 1 , 2 , ⋯   , K − 1 (8) P(Y=k|x)=\frac{e^{w_k\cdot x+b_k}}{1+\sum_{k=1}^{K-1}e^{w_k\cdot x+b_k}}, k=1,2,\cdots,K-1 \tag{8} P(Y=kx)=1+k=1K1ewkx+bkewkx+bk,k=1,2,,K1(8)
P ( Y = K ∣ x ) = 1 1 + ∑ k = 1 K − 1 e w k ⋅ x + b k (9) P(Y=K|x)=\frac{1}{1+\sum_{k=1}^{K-1}e^{w_k\cdot x+b_k}}\tag{9} P(Y=Kx)=1+k=1K1ewkx+bk1(9)
这个本质上是一样的,前面我们说归一化除以分母(所有K类的结果的和)获得概率,注意看公式8和9的分母,和的下标是从1到K-1,这里只是将其中第K的结果(经过 θ K ⋅ x \theta K \cdot x θKx再取e的指数)置为1,这里我的理解是为了与之前的二类logistics回归对应,二分类中,将属于0类的结果置为1一样,只要求出另一种1类的概率就行了。
#####4.1 softmax的代价函数
1{ ⋅ \cdot }表示示性函数,取值规则为1{值为真的表达式}=1,1{值为假的表达式}=0。softmax的代价函数也是交叉熵:
这里写图片描述
第i个样本,取其真实标签对应的概率值求对数的负数,然后将m样本求平均。即交叉熵中,真实分布为p,模型输出为q,其交叉熵即为-plogq。在二分类的logistics回归中,代价函数是一致的,Logistics代价函数可以写成:
这里写图片描述
对于第一行,保证去的是y真实值得那一项,另一项为零。
#####4.2 softmax模型参数化的特点
softmax模型的特点就是,它的参数有个“冗余的”参数集,假设我们从参数向量 θ j \theta_j θj 中减去了向量 $ \psi$,这时,每一个 $ \theta_j$都变成了 $ \theta_j - \psi(j=1, \ldots, k)$。此时假设函数变成了以下的式子:
这里写图片描述
可以看出无论减去什么向量,都不影响最后的结果,换句话来说,softmax模型被过度参数化了。对于任意一个用于拟合数据的假设函数,可以求出多组参数值,这些参数得到的是完全相同的假设函数 h θ h_\theta hθ。这也能解释了softmax和Logistics回归的关系:

当类别数 k = 2 时,softmax 回归退化为 logistic 回归。这表明 softmax 回归是 logistic 回归的一般形式。具体地说,当 k = 2 时,softmax 回归的假设函数为:
这里写图片描述
利用softmax回归参数冗余的特点,我们令 ψ = θ 1 \psi = \theta_1 ψ=θ1,并且从两个参数向量中都减去向量 θ 1 \theta_1 θ1,得到:这里写图片描述
θ \theta θ来表示 θ 2 − θ 1 \theta2-\theta1 θ2θ1就可以得到上文中的logistics回归的模型了。

####5.总结
个人的一点看法即为,给定数据样本X(特征向量),数据标签Y,机器学习(回归,分类)的本质是妄图找出数据样本与其标签的之间的关系。在Logistic回归中,模型认为X,Y服从Logistic分布,尽力用该分布来拟合数据样本和标签。那么logistic回归为什么使用Log损失作为其损失函数呢,我的理解是这样的:
logistic回归模型是一个概率模型,因为在描述该分类时,我们其实是以概率来衡量的。从Logistic曲线就能看出,无论横坐标取什么值,它的值总是在[0,1]之间变化,它的物理含义很明确,指单个样例,在条件x下,出现的【概率】。所有单个样本都对应于一个概率,用概率模型来描述这个分类过程就是:给定样本X,试图求出模型参数 θ \theta θ在该条件下的概率 P ( θ ∣ X ) P(\theta|X) P(θX),使其最大,有贝叶斯公式:
P ( θ ∣ X ) = P ( θ , X ) P ( X ) = P ( X ∣ θ ) P ( θ ) P ( X ) P(\theta|X)=\frac{P(\theta,X)}{P(X)}=\frac{P(X|\theta)P(\theta)}{P(X)} P(θX)=P(X)P(θ,X)=P(X)P(Xθ)P(θ)
对于模型本身来说,可以不看 θ \theta θ先验概率和样本X的概率,这样:
P ( θ ∣ X )   = P ( θ , X ) P(\theta|X)~=P(\theta,X) P(θX) =P(θ,X)
要想最大化左边的 P ( θ ∣ X ) P(\theta|X) P(θX),只需要最大化右边的 P ( X ∣ θ ) P(X|\theta) P(Xθ),即
[ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i [\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i} [π(xi)]yi[1π(xi)]1yi
这是针对单个样本而言,在每个样本出现的条件下 θ \theta θ的条件概率就是取每个样本的连乘值:
∏ i = 1 n [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i \prod_{i=1}^{n}[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i} i=1n[π(xi)]yi[1π(xi)]1yi
这就是似然函数,取对数就是Log损失,也就是交叉熵。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值