机器学习算法学习笔记:逻辑回归

一、理论篇

1、概述

线性回归模型能对连续值结果进行预测。但是,在现实生活中更为常见的是分类问题,其中最简单的就是二分类问题(是或否)。
回归得到的结果是定量的,是一个具体的数值,将定量的实数值转换为定性的分类值通常有以下两种方法。
(1)找一个阈值作为分水岭与回归实数值进行对比,该做法是线性分类;
(2)将回归实数值转换成概论值为0~1的实数,再与一个阈值比较,该做法是对率/逻辑分类。

逻辑回归(Logistic regression,简称LR)虽然其中带有“回归”两个字,但逻辑回归其实是一个分类模型,并且广泛应用于各个领域之中,比如垃圾邮件分类、预测肿瘤是良性还是恶性、预测某人的信用是否良好等。
而对于逻辑回归而言,最为突出的两点就是其模型简单和模型的可解释性强。
逻辑回归模型的优劣势:
优点:实现简单,易于理解和实现;计算代价不高,速度很快,存储资源低;
缺点:容易欠拟合,分类精度可能不高。

2、逻辑回归模型

线性回归模型可被简写为 y = w T x + b y=w^Tx+b y=wTx+b。很多时候,我们不是直接用线性模型对 y y y进行建模,比如: l n ( y ) = w T x + b ln(y)=w^Tx+b ln(y)=wTx+b y = l n − 1 ( w T x + b ) = e x p ( w T x + b ) y=ln^{-1}(w^Tx+b)=exp(w^Tx+b) y=ln1(wTx+b)=exp(wTx+b)
上述模型被称为对数线性回归模型,它试图让 e x p ( w T x + b ) exp(w^Tx+b) exp(wTx+b)逼近 y y y,即 l n ( y ) ln(y) ln(y) w w w呈线性关系。更一般地,对于任何单调函数 h ( ⋅ ) h(·) h(),令 h ( y ) = w T x + b h(y)=w^Tx+b h(y)=wTx+b y = h − 1 ( w T x + b ) = g ( w T x + b ) y=h^{-1}(w^Tx+b)=g(w^Tx+b) y=h1(wTx+b)=g(wTx+b)
上述模型被称为广义线性回归模型,其中函数 h ( ⋅ ) h(·) h()被称为联系函数,而 g = h − 1 g=h^{-1} g=h1是联系函数的反函数

对于二分类任务,其输出标记为 y ∈ { 0 , 1 } y∈\{0,1\} y{0,1},而线性回归模型产生的预测值 z = w T x + b z=w^Tx+b z=wTx+b是实值,于是,我们需将实值 z z z转换为0/1值。最理想的是“单位阶跃函数”。
y = { 0 z < 0 0.5 z = 0 1 z > 0 y=\begin{cases} 0& \text{$z<0$}\\ 0.5& \text{$z=0$}\\ 1& \text{$z>0$}\\ \end{cases} y=00.51z<0z=0z>0
即若预测值 z z z大于零就判为正类,小于零就判为反类,预测值为临界值零则可任意判别,如下图所示:
在这里插入图片描述
但是,单位阶跃函数不连续,所以我们找到了能在一定程度上近似单位阶跃函数的“替代函数”,并且它单调可微,这个函数就是对数几率函数。对数几率函数是一种“Sigmoid函数”,它将 z z z值转化为一个接近0或1的 y y y值。

我们定义逻辑回归的预测函数为 y = g ( w T x + b ) y=g(w^Tx+b) y=g(wTx+b),其中 g ( z ) g(z) g(z)是sigmoid函数。sigmoid函数可以将任意实数转换为0~1之间的概率值。图像如下:
g ( z ) = 1 1 + e − z , g(z)=\cfrac{1}{1+e^{-z}}, g(z)=1+ez1在这里插入图片描述
所以 y = g ( w T x + b ) = 1 1 + e − ( w T x + b ) y=g(w^Tx+b)=\cfrac{1}{1+e^{-(w^Tx+b)}} y=g(wTx+b)=1+e(wTx+b)1
变形得, l n y 1 − y = w T x + b ln\cfrac{y}{1-y}=w^Tx+b ln1yy=wTx+b

如果将 y y y设为样本 x x x为正类的可能性,那么 1 − y 1-y 1y就是 x x x为负类的可能性。两者的比值被称为概率/几率;类比赌球的赔率2:1,即赢球的概率为2/3,而输球的概率为1/3。在概率上求对数就变成对数概率/几率,简称对率

在上面的sigmoid函数图象中, g ( θ T x ) g(θ^Tx) g(θTx)的值以0.5作为分类的边界。
(1)当 z ≥ 0 z≥0 z0时, g ( z ) ≥ 0.5 g(z)≥0.5 g(z)0.5;即当 θ T x ≥ 0 θ^Tx≥0 θTx0时, g ( θ T x ) ≥ 0.5 g(θ^Tx)≥0.5 g(θTx)0.5,此时将样本归为‘1’类。
(2)当 z ≤ 0 z≤0 z0时, g ( z ) ≤ 0.5 g(z)≤0.5 g(z)0.5;即当 θ T x ≤ 0 θ^Tx≤0 θTx0时, g ( θ T x ) ≤ 0.5 g(θ^Tx)≤0.5 g(θTx)0.5,此时将样本归为‘0’类。

【例子】如图,红色‘×’代表‘1’类,蓝色‘○’代表‘0’类。此时我们可以先构建一个二元回归方程 z = θ 0 + θ 1 x 1 + θ 2 x 2 z=θ_0+θ_1x_1+θ_2x_2 z=θ0+θ1x1+θ2x2,当 z ≥ 0 z≥0 z0时, g ( z ) ≥ 0.5 g(z)≥0.5 g(z)0.5,此时将样本划分为类别‘1’;当 z ≤ 0 z≤0 z0时, g ( z ) ≤ 0.5 g(z)≤0.5 g(z)0.5,此时将样本划分为类别‘0’;决策边界就是 z = θ 0 + θ 1 x 1 + θ 2 x 2 = 0 z=θ_0+θ_1x_1+θ_2x_2=0 z=θ0+θ1x1+θ2x2=0
在这里插入图片描述
对于数据 i i i(其中 i = 1 , 2 , . . . , m i=1,2,...,m i=1,2,...,m),建模如下:
p ( y ( i ) = 1 ∣ x ( i ) ; w ) = 1 1 + e − ( w T x + b ) = g ( w T x ( i ) ) p(y^{(i)}=1|x^{(i)};w)=\cfrac{1}{1+e^{-(w^Tx+b)}}=g(w^Tx^{(i)}) p(y(i)=1x(i);w)=1+e(wTx+b)1=g(wTx(i))
(表示当给定特征 x ( i ) x^{(i)} x(i)和参数 w w w y ( i ) = 1 y^{(i)}=1 y(i)=1的条件概率)
p ( y ( i ) = 0 ∣ x ( i ) ; w ) = 1 − p ( y ( i ) = 1 ∣ x ( i ) ; w ) = 1 − g ( w T x ( i ) ) = 1 1 + e w T x + b p(y^{(i)}=0|x^{(i)};w)=1-p(y^{(i)}=1|x^{(i)};w)=1-g(w^Tx^{(i)})=\cfrac{1}{1+e^{w^Tx+b}} p(y(i)=0x(i);w)=1p(y(i)=1x(i);w)=1g(wTx(i))=1+ewTx+b1
(表示当给定特征 x ( i ) x^{(i)} x(i)和参数 w w w y ( i ) = 0 y^{(i)}=0 y(i)=0的条件概率)

这种对条件概率建模的方法解释性更强,不仅在给定特征 x ( i ) x^{(i)} x(i)和参数 w w w的情况下测出类别,即 y ( i ) = 1 y^{(i)}=1 y(i)=1 y ( i ) = 0 y^{(i)}=0 y(i)=0,同时也给出了该预测类别对应的概率。

利用条件概率来描述数据是正类和负类的可能性,则数据 i i i对应的概率公式可写成
L i ( w ) = p ( 1 ∣ x ( i ) ; w ) y ( i ) p ( 0 ∣ x ( i ) ; w ) ( 1 − y ( i ) ) L_i(w)=p(1|x^{(i)};w)^{y^{(i)}}p(0|x^{(i)};w)^{(1-y^{(i)})} Li(w)=p(1x(i);w)y(i)p(0x(i);w)(1y(i))
从上式可知,当 y ( i ) = 1 y^{(i)}=1 y(i)=1时, 1 − y ( i ) = 0 1-y^{(i)}=0 1y(i)=0,因此 L i ( w ) L_i(w) Li(w)可简化成 p ( 1 ∣ x ( i ) ; w ) p(1|x^{(i)};w) p(1x(i);w);当 y ( i ) = 0 y^{(i)}=0 y(i)=0时, 1 − y ( i ) = 1 1-y^{(i)}=1 1y(i)=1,因此 L i ( w ) L_i(w) Li(w)可简化成 p ( 0 ∣ x ( i ) ; w ) p(0|x^{(i)};w) p(0x(i);w)
假设所有数据都是独立同分布的,则由二项分布得知它们一起发生的概率(似然函数)为
L ( w ) = ∏ i = 1 m L i ( w ) = ∏ i = 1 m p ( 1 ∣ x ( i ) ; w ) y ( i ) p ( 0 ∣ x ( i ) ; w ) ( 1 − y ( i ) ) L(w)=\prod \limits_{i=1}^mL_i(w)=\prod \limits_{i=1}^mp(1|x^{(i)};w)^{y^{(i)}}p(0|x^{(i)};w)^{(1-y^{(i)})} L(w)=i=1mLi(w)=i=1mp(1x(i);w)y(i)p(0x(i);w)(1y(i))

【对于参数为 θ θ θ的概率模型, p ( x ∣ θ ) p(x|θ) p(xθ)可称为 θ θ θ的可能性(假设观察到 x x x)。如果我们观察到 x x x并且想要估计产生它的 θ θ θ,则用最大似然估计(MLE)选择最大化 p ( x ∣ θ ) p(x|θ) p(xθ) θ θ θ。】

利用最大似然估计解出参数 w w w,使得 L ( w ) L(w) L(w)最大。在优化过程中,优化函数的“累加”比“累乘”(似然函数)要简单。因此,将似然函数 L ( w ) L(w) L(w)上取对数,生成对数似然函数 l ( w ) l(w) l(w)就可以了,对数似然函数为
l ( w ) = l n [ L ( w ) ] l(w)=ln[L(w)] l(w)=ln[L(w)]
= l n [ ∏ i = 1 m L i ( w ) ] =ln[\prod \limits_{i=1}^mL_i(w)] =ln[i=1mLi(w)]
= l n [ ∏ i = 1 m p ( 1 ∣ x ( i ) ; w ) y ( i ) p ( 0 ∣ x ( i ) ; w ) ( 1 − y ( i ) ) ] =ln[\prod \limits_{i=1}^mp(1|x^{(i)};w)^{y^{(i)}}p(0|x^{(i)};w)^{(1-y^{(i)})}] =ln[i=1mp(1x(i);w)y(i)p(0x(i);w)(1y(i))]
= ∑ i = 1 m l n [ p ( 1 ∣ x ( i ) ; w ) y ( i ) p ( 0 ∣ x ( i ) ; w ) ( 1 − y ( i ) ) ] =\sum_{i=1}^{m}ln[p(1|x^{(i)};w)^{y^{(i)}}p(0|x^{(i)};w)^{(1-y^{(i)})}] =i=1mln[p(1x(i);w)y(i)p(0x(i);w)(1y(i))]
= ∑ i = 1 m [ y ( i ) l n ( p ( 1 ∣ x ( i ) ; w ) ) + ( 1 − y ( i ) ) l n ( p ( 0 ∣ x ( i ) ; w ) ) ] =\sum_{i=1}^{m}[y^{(i)}ln(p(1|x^{(i)};w))+(1-y^{(i)})ln(p(0|x^{(i)};w))] =i=1m[y(i)ln(p(1x(i);w))+(1y(i))ln(p(0x(i);w))]
= ∑ i = 1 m [ y ( i ) l n ( g ( w T x ( i ) ) ) + ( 1 − y ( i ) ) l n ( 1 − g ( w T x ( i ) ) ) ] =\sum_{i=1}^{m}[y^{(i)}ln(g(w^Tx^{(i)}))+(1-y^{(i)})ln(1-g(w^Tx^{(i)}))] =i=1m[y(i)ln(g(wTx(i)))+(1y(i))ln(1g(wTx(i)))]

3、逻辑回归的代价函数

【在 l ( w ) l(w) l(w)前加负号,将“最大化对数似然函数”转换成“最小误差函数”】
以对数似然函数来定义对率回归下的误差函数:
J ( w ) = − 1 m ∑ i = 1 m l ( w ) = 1 m ∑ i = 1 m [ − y ( i ) l n ( g ( w T x ( i ) ) ) − ( 1 − y ( i ) ) l n ( 1 − g ( w T x ( i ) ) ) ] J(w)=-\frac{1}{m}\sum_{i=1}^ml(w)=\frac{1}{m}\sum_{i=1}^m[-y^{(i)}ln(g(w^Tx^{(i)}))-(1-y^{(i)})ln(1-g(w^Tx^{(i)}))] J(w)=m1i=1ml(w)=m1i=1m[y(i)ln(g(wTx(i)))(1y(i))ln(1g(wTx(i)))]
在这里插入图片描述
真实类别为‘1’时代价函数图像【图3.1】
图3.1
真实类别为‘0’时的代价函数图像【图3.2】图3.2
(1)由图3.1可知,当真实类别 y = 1 y=1 y=1时,如果预测结果 h θ ( x ) = 1 h_θ(x)=1 hθ(x)=1,则 c o s t → 0 cost→0 cost0;如果 h θ ( x ) = 0 h_θ(x)=0 hθ(x)=0,则 c o s t → ∞ cost→∞ cost
【如果真实类别为y=1,且分类预测结果为1,则代价趋近于0,否则代价趋近于无穷】
(2)由图3.2可知,当真实类别 y = 0 y=0 y=0时,如果预测结果 h θ ( x ) = 1 h_θ(x)=1 hθ(x)=1,则 c o s t → ∞ cost→∞ cost;如果 h θ ( x ) = 0 h_θ(x)=0 hθ(x)=0,则 c o s t → 0 cost→0 cost0
【如果真实类别为y=0,且分类预测结果为0,则代价趋近于0,否则代价趋近于无穷】
合并上面两个代价函数,可以得到总体代价函数为在这里插入图片描述

4、梯度下降法

梯度下降法的目的是求解一组 θ θ θ,使得代价函数 J ( θ ) J(θ) J(θ)的值达到最小。
在这里插入图片描述
在这里插入图片描述

5、线性不可分

【例子1】线性可分:下图是exam1和exam2的分数以及对应录取结果的散点图:
在这里插入图片描述
在这里插入图片描述
【例子2】非线性可分:下图是芯片1和芯片2的测试结果以及对应分类的散点图:
在这里插入图片描述
在例子1中,从散点图可以看出,录取的学生和没录取的学生的分类可以有一条直线来完成,这样的问题叫作线性可分问题,处理起来会比较简单。
在例子2中,两类数据不能用一条直线来分类,这种问题属于线性不可分问题
因此,我们需要用更复杂的模型来描述对率函数 g ( ⋅ ) g(·) g()的自变量。比如,在例子2中,我们采用多项式模型,即把现有的两个特征通过多项式合成更多的特征。打个比方,用 x 1 x_1 x1 x 2 x_2 x2代表这个特征,一个基于 x 1 x_1 x1 x 2 x_2 x2的2次多项式最多可扩展为5项:
[ f 1 , f 2 , f 3 , f 4 , f 5 ] = [ 1 , x 1 , x 2 , x 1 2 , x 1 x 2 , x 2 2 ] [f_1,f_2,f_3,f_4,f_5]=[1,x_1,x_2,x_1^2,x_1x_2,x_2^2] [f1,f2,f3,f4,f5]=[1,x1,x2,x12,x1x2,x22]
f f f代表转换后的特征,它是一个5维的向量。

6、类别不平衡

在分类任务中,当不同类别的样本数目差别很大时,会给学习过程带来很大困难。比如99个正例和1个负例,那么设计一个永远预测为正类的模型,准确率高达99%,但是这种模型没有什么意义和价值,因为他预测不出任何负类。
所以当一个训练数据集,假设正例个数远大于负例个数,则有以下三种解决方法:
(1)对正例进行欠采样,去除一些正例使得正/负例的个数接近,用 p > 0.5 p>0.5 p>0.5条件来预测正类;
(2)对负例进行过采样,增加一些负例使得正/负例的个数接近,用 p > 0.5 p>0.5 p>0.5条件来预测正类;
(3)阈值移动,用 p > m + m p>\frac{m^+}{m} p>mm+(而不是 p > 0.5 p>0.5 p>0.5)条件来预测正类。

7、多分类问题

我们上面讨论的情况都是基于二分类问题,即只能区分两个类别,是最简单的模型。那么区分两个以上的类别(多分类问题),比如辨别手写数字0-9共10个类别。我们可以采取下面3种常见的分类策略。
(1)一对一(One vs One,OvO)
(2)一对其他(One vs Rest,OvR)
(3)多分类回归(Softmax Regression,SR)

给定一个具有N个分类类别的数据集,OvO将这N个类别两两配对,从而产生N(N-1)/2个二分类任务,则我们需要训练N(N-1)/2个分类器。在测试阶段,新样本将同时交给所有分类器,于是我们将得到N(N-1)/2个分类结果,最终结果可通过投票产生:即把被预测得最多的类别作为最终分类结果。

OvR则是每次将一个类的样例作为正例、所有其他类的样例作为反例来训练N个分类器。在测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果。若有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。

容易看出,OvR只需训练N个分类器,而OvO需训练N(N-1)/2个分类器。因此,N(N-1)/2的存储开销和测试时间开销通常比 OvR更大。但在训练时,OvR的每个分类器均使用全部训练样例,而OvO的每个分类器仅用到两个类的样例,因此,在类别很多时,OvO的训练时间开销通常比OvR更小。至于预测性能,则取决于具体的数据分布,在多数情形下两者差不多。
在这里插入图片描述
OvO和OvR分类策略都是把多类别分类问题转换成二类别分类问题,而softmax函数(多分类函数)是直接把对率回归推广到多类别分类中,不必组成多个二分类模型。

多分类回归思想很简单,假设总共有 K K K个类别,给定一个特征 x x x,该模型计算属性第 k k k类的分数 s k ( x ) = w k T x s_k(x)=w_k^Tx sk(x)=wkTx,然后进行归一化,转换成属于第 k k k类的概率,公式如下:
p k = e s k ( x ) ∑ j = 1 K e s j ( x ) p_k=\frac{e^{s_k(x)}}{\sum_{j=1}^Ke^{s_j(x)}} pk=j=1Kesj(x)esk(x)
下面用一个实际例子展示了如何将得分2、1、-1利用softmax函数转换成概率 p 1 、 p 2 、 p 3 p_1、p_2、p_3 p1p2p3

s 1 s_1 s1 s 2 s_2 s2 s 3 s_3 s3
21-1
e s 1 e^{s_1} es1 e s 2 e^{s_2} es2 e s 3 e^{s_3} es3
7.392.720.37
∑ k = 1 3 e s k \sum_{k=1}^{3}e^{s_k} k=13esk
10.48
p 1 = e s 1 ∑ k = 1 3 e s k p_1=\frac{e^{s_1}}{\sum_{k=1}^3e^{s_k}} p1=k=13eskes1 p 2 = e s 2 ∑ k = 1 3 e s k p_2=\frac{e^{s_2}}{\sum_{k=1}^3e^{s_k}} p2=k=13eskes2 p 3 = e s 3 ∑ k = 1 3 e s k p_3=\frac{e^{s_3}}{\sum_{k=1}^3e^{s_k}} p3=k=13eskes3
0.710.260.04

为了防止上溢和下溢,令 x i = s i − max ⁡ i ( s i ) x_i=s_i-\max_i(s_i) xi=simaxi(si),则 p 1 = e x 1 ∑ k = 1 3 e x k p_1=\frac{e^{x_1}}{\sum_{k=1}^3e^{x_k}} p1=k=13exkex1 p 2 = e x 2 ∑ k = 1 3 e x k p_2=\frac{e^{x_2}}{\sum_{k=1}^3e^{x_k}} p2=k=13exkex2 p 3 = e x 3 ∑ k = 1 3 e x k p_3=\frac{e^{x_3}}{\sum_{k=1}^3e^{x_k}} p3=k=13exkex3

和对率回归的二分类模型一样,多分类回归的多分类模型将估计概率最高的类别作为预测结果。上面例子中, p 1 p_1 p1最大,因此预测为类别1。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值