《机器学习》学习笔记(六)—分类:逻辑回归

Classification:Logistic Regression(逻辑回归)

一种用于解决二分类(0 or 1)问题的机器学习方法,用于估计某种事物的可能性。

逻辑回归与线性回归都是一种广义线性模型。逻辑回归假设因变量 y y y 服从伯努利分布,而线性回归假设因变量 y y y 服从高斯分布。 因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过 Sigmoid 函数引入了非线性因素,因此可以轻松处理二分类问题。
我们拿垃圾邮件二分类(C1(正常),C2(垃圾))举例,需要找到一个概率 p ( C 1 ∣ x ) p(C1∣x) p(C1x),当 p ( C 1 ∣ x ) &gt; 0.5 p(C1∣x)&gt;0.5 p(C1x)>0.5 时候是分类C1,当 p ( C 1 ∣ x ) &lt; 0.5 p(C1∣x)&lt;0.5 p(C1x)<0.5的时候的分类是C2。

在这里插入图片描述
逻辑回归中主要是引入了Sigmoid映射函数,从上图可以看到sigmoid函数是一个s形的曲线,它的取值在[0, 1]之间,在远离0的地方函数的值会很快接近0或者1。它的这个特性对于解决二分类问题十分重要。
函数模型如下
在这里插入图片描述
Python代码实现:

import numpy as np
def sigmoid(z):
	return 1/(1+np.exp(-z))

这样,通过 σ ( z ) \sigma(z) σ(z) 函数的转换和帮助,你可以用逻辑回归来得到一个概率输出了。一般我们将 Logistic 的计算结果用小写字母 z z z 来表示。

函数模型的优化

比如说有一个训练集在这里插入图片描述
容易得到产生这组训练集数据的概率为
L ( w , b ) = f w , b ( x 1 ) f w , b ( x 2 ) ( 1 − f w , b ( x 3 ) ) . . . f w , b ( x N ) L(w,b)=f_{w,b}(x^1)f_{w,b}(x^2)(1-f_{w,b}(x^3))...f_{w,b}(x^N) L(w,b)=fw,b(x1)fw,b(x2)(1fw,b(x3))...fw,b(xN)

当这个概率 L ( w , b ) L(w,b) L(w,b) 最大的时候,这个时候的 w w w b b b 就是最优解。
w ∗ , b ∗ = a r g m a x w , b L ( w , b ) = a r g m i n w , b − l n L ( w , b ) w^*,b^* =arg\mathop{max}\limits_{w,b}L(w,b)=arg\mathop{min}\limits_{w,b}-lnL(w,b) w,b=argw,bmaxL(w,b)=argw,bminlnL(w,b)
然后又可以得到
在这里插入图片描述
这就是两个伯努利分布之间的交叉熵,我们用交叉熵的概念来描述两组不同概率数据分布的相似程度,越小越相似。(这个概念在机器学习中非常重要)

假设真实分布是 p p p ,预测分布是 q q q
在这里插入图片描述
根据交叉熵的定义得到 p p p q q q 之间的相似性:

H ( p , q ) = − ∑ p ( x ) l n ( q ( x ) ) H(p,q)=-\sum p(x)ln(q(x)) H(p,q)=p(x)ln(q(x))

容易得出,如果他们的分布一样,那么交叉熵为0。

我们可以定义损失函数为交叉熵的和:
L ( f ) = ∑ C ( f ( x n ) , y ^ n ) L(f)=\sum C(f(x^n),\hat{y}^n) L(f)=C(f(xn),y^n)
其中,
C ( f ( x n ) , y ^ n ) = − [ y ^ n l n f ( x n ) + ( 1 − y ^ n ) l n ( 1 − f ( x n ) ) ] C(f(x^n),\hat{y}^n)=-[\hat{y}^nlnf(x^n)+(1-\hat{y}^n)ln(1-f(x^n))] C(f(xn),y^n)=[y^nlnf(xn)+(1y^n)ln(1f(xn))]

寻找最优的函数模型

− l n L ( w , b ) -lnL(w,b) lnL(w,b) 做微分可以得到
∂ ( − l n L ( w , b ) ) ∂ w i = ∑ n − ( y ^ n − f w , b ( x n ) ) x i n \frac{\partial(-lnL(w,b))}{\partial{w_i}}=\sum\limits_{n}-(\hat{y}^n-f_{w,b}(x^n))x_i^n wi(lnL(w,b))=n(y^nfw,b(xn))xin
上式表明,目前的数值与目标差距越大,更新的值也会越大,
与线性回归比较一下:
在这里插入图片描述
那么,这里有一个困惑,为什么不用 Square Error (方差)?
假设我们使用方差定义损失函数
L ( f ) = 1 2 ∑ n ( f w , b ( x n ) − y ^ n ) 2 L(f)=\frac{1}{2}\sum\limits_{n}(f_{w,b}(x^n)-\hat{y}^n)^2 L(f)=21n(fw,b(xn)y^n)2
那么会导致下面的问题
在这里插入图片描述
这样会不太容易得到好的结果,但是用交叉熵的方法,会顺利很多。
在这里插入图片描述

Discriminative(Logstic) v.s. Generative(Gaussion)

将之前的两类分类算法进行比较
在这里插入图片描述
在之前的一个例子中,两类分类算法的表现如下
在这里插入图片描述
Discriminative 的表现往往比 Generative 好。
但是有些时候 Generative 也会突出它的优势,比如:

  • 训练数据很少
  • 训练数据比较乱
  • 可以通过不同的来源进行概率上的预测

多分类问题

原理与二分类一样

假设有三个类别 C 1 , C 2 , C 3 C_1,C_2,C_3 C1,C2,C3
在这里插入图片描述
softmax做的事情就是它们进行exponential(指数化),将exponential 的结果相加,再分别用 exponential 的结果除以相加的结果。

我们同样可以利用交叉熵来比较得到的概率分布与真实的概率分布之间的差异程度
在这里插入图片描述

Logistic 回归的局限性

假设这样一种情况
在这里插入图片描述
我们没有办法用一条直线把它们分开。
那么我们可以用一个特征转换的办法:(虽然不是很容易找到一个合适的特征转换)
x 1 ′ : d i s t a n c e   t o [ 0 0 ] x^{&#x27;}_1:distance\ to\begin{bmatrix}0\\0\end{bmatrix} x1distance to[00]

x 2 ′ : d i s t a n c e   t o [ 1 1 ] x^{&#x27;}_2:distance\ to\begin{bmatrix}1\\1\end{bmatrix} x2distance to[11]
在这里插入图片描述

cascading logistic regression models(级联逻辑回归模型)

Cascading logistic regression models就是一种转换的普遍适用的方法。

可以将很多的逻辑回归接到一起,就可以进行特征转换。
在这里插入图片描述
上图中,利用逻辑回归 Z 1 Z_1 Z1 Z 2 Z_2 Z2 进行特征转换,然后对 x 1 ′ x^{&#x27;}_1 x1 x 2 ′ x^{&#x27;}_2 x2 再用一个逻辑回归 Z Z Z 进行分类。

上面的例子经过这样的转换后,可以得到分类的结果
在这里插入图片描述
一个逻辑回归的输入可以来源于其他逻辑回归的输出,这个逻辑回归的输出也可以是其他逻辑回归的输入。把每个逻辑回归称为一个 neuron(神经元),把这些神经元连接起来的网络,就叫做 neural network(神经网络)。
在这里插入图片描述
我们可以利用神经元来组合成更为复杂的神经网络以实现更复杂的运算。例如我们要实
现 XNOR 功能(输入的两个值必须一样,均为 1 或均为 0),即:
X N O R = ( x 1 A N D x 2 ) O R ( N O T x 1 ) A N D ( N O T x 2 ) ) XNOR=(x_1 AND x_2 )OR (NOT x_1) AND (NOT x_2)) XNOR=(x1ANDx2)OR(NOTx1)AND(NOTx2))
首先构造一个能表达 ( N O T x 1 ) A N D ( N O T x 2 ) (NOT x_1) AND (NOT x_2) (NOTx1)AND(NOTx2) 部分的神经元。
然后将表示 AND 的神经元和表示 ( N O T x 1 ) A N D ( N O T x 2 ) (NOT x_1) AND (NOT x_2) (NOTx1)AND(NOTx2) 的神经元以及表示 OR 的神经元进行组合:
我们就得到了一个能实现 XNOR 运算符功能的神经网络。
在这里插入图片描述
按这种方法我们可以逐渐构造出越来越复杂的函数,也能得到更加厉害的特征值。
这就是神经网络的厉害之处。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值