机器学习算法——逻辑回归

xiaoxiao2021-07-27  123

目录

1. 逻辑回归简介2. 逻辑回归模型2.1 假设函数2.2 损失函数推导2.3 损失函数模型求解 正则化方法L2正则化(ℓ2 -norm)L1正则化(ℓ1 -norm)[弹性网络](https://mp.weixin.qq.com/s/jjRM4B7OoClofrccUn5LFQ) 逻辑回归的优缺点优点缺点 sklearn.linear_model.LogisticRegression参数说明逻辑回归处理多分类问题OvO(One vs One)OvR(One vs Rest)MvM(Many vs Many) 类别不平衡问题参考文献

1. 逻辑回归简介

线性回归的模型是求出真实值Y和输入样本的特征X之间的线性关系系数 θ \theta θ,最终求得线性回归模型 Y = X θ Y=X\theta Y=Xθ.当给出新的特征时, 我们希能够带入到 Y = X θ Y=X\theta Y=Xθ中,求出预测值Y是连续值。归为回归模型。 当Y是离散值时,我们就需要对线性回归模型的Y做一次函数变换,将连续值转换成离散值。这时我们就引入逻辑回归。 逻辑回归(LogisticRegression)也叫对数几率回归。 机器学习算法可以分为回归算法和分类算法,逻辑回归算法并不是回归算法,仅为在线性回归的基础上,套用了一个逻辑函数 ,用来解决分类问题,因此将它归为分类算法。

2. 逻辑回归模型

逻辑回归可以解决二分类问题,也可以解决多分类问题。这里先讲述二分类问题,多分类问题待补充。 在逻辑回归(二分类)中,我们一般用sigmoid函数将连续值转换成离散值,实现二分类。 为什么要用sigmoid函数作为假设函数

2.1 假设函数

用sigmoid函数作为假设函数

sigmoid函数形式如下:

(1) g ( z ) = 1 1 + e − z \tag{1}g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1(1)

sigmoid函数的导数形式如下: (2) g ′ ( z ) = g ( z ) ( 1 − g ( z ) ) = e − z ( 1 + e ( − z ) ) 2 \tag{2}g^{'}(z) = g(z)(1-g(z))=\frac{e^{-z}}{(1+e^{(-z)})^{2}} g(z)=g(z)(1g(z))=(1+e(z))2ez(2)

sigmoid函数图像:

sigmoid函数的性质: x > 0 x>0 x>0时, y y y趋于1; x = 0 x=0 x=0时, y = 0.5 y=0.5 y=0.5 x < 0 x<0 x<0时, y y y趋于0;

数据集 (3) Y = ( y 1 y 2 ⋯ y i ) \tag{3} Y=\begin{pmatrix} &y^1\\ &y^2\\ &\cdots\\ &y^i \end{pmatrix} Y=y1y2yi(3) (3) X = ( x 1 1 , x 2 1 , x 3 1 , ⋯   , x n 1 x 1 2 , x 2 2 , x 3 2 , ⋯ x n 2 ⋯ x 1 i , x 2 i , x 3 i , ⋯ x n i ) \begin{aligned} \tag{3}X=\begin{pmatrix} &x_1^1, &x_2^1, &x_3^1,&\cdots, &x_n^1 \\ &x_1^2, &x_2^2, &x_3^2,&\cdots &x_n^2 \\ &\cdots\\ &x_1^i, &x_2^i, &x_3^i,&\cdots &x_n^i \end{pmatrix} \end{aligned} X=x11,x12,x1i,x21,x22,x2i,x31,x32,x3i,,xn1xn2xni(3) X b = ( 1 , x 1 1 , x 2 1 , x 3 1 , ⋯   , x n 1 1 , x 1 2 , x 2 2 x 3 2 , ⋯ x n 2 ⋯ 1 , x 1 i , x 2 i , x 3 i ⋯ x n i ) \begin{aligned} X_b= \begin{pmatrix} &1,&x_1^1, &x_2^1, &x_3^1,&\cdots, &x_n^1 \\ &1,&x_1^2, &x_2^2 &x_3^2,&\cdots &x_n^2 \\ &\cdots\\ &1,&x_1^i, &x_2^i, &x_3^i&\cdots &x_n^i \end{pmatrix} \end{aligned} Xb=1,1,1,x11,x12,x1i,x21,x22x2i,x31,x32,x3i,xn1xn2xni Y = X b θ Y=X_b\theta Y=Xbθ 最终要求的模型参数 (4) θ = ( θ 0 θ 1 ⋯ θ n ) \tag{4} \theta=\begin{pmatrix} &\theta_0 \\ &\theta_1\\ &\cdots\\ &\theta_n \end{pmatrix} θ=θ0θ1θn(4)

θ 0 为 截 距 {\theta_0为截距} θ0 z = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n = X i θ z=\theta_0+\theta_1x_1+\theta_2x_2+\cdots +\theta_nx_n=X^i\theta z=θ0+θ1x1+θ2x2++θnxn=Xiθ得: 构造假设函数,假设数据服从伯努利分布:

(5) p ^ = h θ ( x ) = 1 1 + e − z = 1 1 + e − X i θ \tag{5}\hat p=h_{\theta}(x)=\frac{1}{1+e^{-z}}=\frac{1}{1+e^{-X^i\theta}} p^=hθ(x)=1+ez1=1+eXiθ1(5) y = { 1 p ^ ⩾ 0.5 , 即 X i θ ⩾ 0 0 p ^ < 0.5 , 即 X i θ < 0 y = \begin{cases} 1 & \hat p \geqslant0.5 , 即 X^i\theta\geqslant0 \\ 0 & \hat p<0.5, 即X^i\theta<0 \end{cases} y={10p^0.5,Xiθ0p^<0.5,Xiθ<0 h θ ( x ) ∈ [ 0 , 1 ] h_\theta(x)∈[0,1] hθ(x)[0,1],假设 h θ ( x ) h_{\theta}(x) hθ(x)是样本 x x x为正例的可能性, 1 − h θ ( x ) 1-h_{\theta}(x) 1hθ(x)是样本 x x x为反例的可能性

正例:( y = 1 y=1 y=1): P ( y = 1 ∣ x ; θ ) = h θ ( x ) = 1 1 + e − X i θ P(y=1|x;\theta)=h_{\theta}(x)=\frac{1}{1+e^{-X^i\theta}} P(y=1xθ)=hθ(x)=1+eXiθ1 反例:( y = 0 y=0 y=0): P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) = 1 − 1 1 + e − X i θ P(y=0|x;\theta)=1-h_{\theta}(x)=1-\frac{1}{1+e^{-X^i\theta}} P(y=0xθ)=1hθ(x)=11+eXiθ1

两者的比值对数称为对数几率: l n h θ ( x ) 1 − h θ ( x ) ln\frac{h_{\theta}(x)}{1-h_{\theta}(x)} ln1hθ(x)hθ(x) 决策边界: X i θ = 0.5 X^i\theta = 0.5 Xiθ=0.5

如果X有两个特征则 θ 0 + θ 1 x 1 + θ 2 x 2 = 0 \theta_0+\theta_1x_1+\theta_2x_2=0 θ0+θ1x1+θ2x2=0 x 2 = − θ 0 − θ 1 x 1 θ 2 x_2=\frac{-\theta_0-\theta_1x_1}{\theta_2} x2=θ2θ0θ1x1

2.2 损失函数推导

损失函数是基于极大似然估计 得到的

将上述概率合并,得: P ( y ∣ x ; θ ) = [ h θ ( x ) ] y [ 1 − h θ ( x ) ] 1 − y P(y|x;\theta) = [h_\theta(x)]^y[1-h_\theta(x)]^{1-y} P(yx;θ)=[hθ(x)]y[1hθ(x)]1y构造逻辑回归模型的似然函数为: (7) L ( θ ) = ∏ i = 1 m p ( y = 1 ∣ x i ) y ( i ) p ( y = 0 ∣ x i ) 1 − y ( i ) \tag{7}L(\theta)= \prod_{i=1}^{m}p(y=1|x_i)^{y^{(i)}}p(y=0|x_i)^{1-y^{(i)}} L(θ)=i=1mp(y=1xi)y(i)p(y=0xi)1y(i)(7) l ( θ ) l(\theta) l(θ)为样本的似然函数,有 θ ∗ \theta^{*} θ使得 l ( θ ) l(\theta) l(θ)的取值最大,那么 θ ∗ \theta^{*} θ就叫做参数 θ \theta θ的极大似然估计值对数似然函数: (8) l ( θ ) = ∑ i = 1 m [ y ( i ) l n p ( y = 1 ∣ x i ) + ( 1 − y ( i ) ) l n p ( y = 0 ∣ x i ) ] \tag{8}l(\theta)=\sum_{i=1}^{m}[y^{(i)}lnp(y=1|x_i)+(1-y^{(i)})lnp(y=0|x_i)] l(θ)=i=1m[y(i)lnp(y=1xi)+(1y(i))lnp(y=0xi)](8)化简 l ( θ ) = ∑ i = 1 m [ y ( i ) l n h θ ( x ) + ( 1 − y ( i ) ) l n ( 1 − h θ ( x ) ) ] l(\theta)=\sum_{i=1}^{m}[y^{(i)}lnh_{\theta}(x)+(1-y^{(i)})ln(1-h_{\theta}(x))] l(θ)=i=1m[y(i)lnhθ(x)+(1y(i))ln(1hθ(x))] 令每个样本属于其真实标记的概率越大越好, l ( θ ) l(\theta) l(θ)是高阶连续可到的凸函数,

取对数的原因: 根据前面你的似然函数公式,是一堆的数字相乘,这种算法求导会非常麻烦,而取对数是一种很方便的手段,由于ln对数属于单调递增函数,因此不会改变极值点,由于对数的计算法则: l n a b = b l n a , l n a b = l n a + l n b lna^b=blna,lnab=lna+lnb lnab=blna,lnab=lna+lnb,这样求导就很方便了。

2.3 损失函数

求最大似然函数,就是损失函数(对似然函数先取负号)最小化。所以加个负号就成了损失函数;最小化损失函数可以梯度下降法求解。 除以样本数m —— 数量越多误差越大,所以平滑一下 (9) J ( θ ) = − 1 m l ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l n h θ ( x ) + ( 1 − y ( i ) ) l n ( 1 − h θ ( x ) ) ] = − 1 m ∑ i = 1 m [ y ( i ) l o g ( p ^ ) + ( 1 − y ( i ) ) l o g ( 1 − p ^ ) ] \tag{9} \begin{aligned} &J(\theta)=-\frac{1}{m}l(\theta)\\ &=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}lnh_{\theta}(x)+(1-y^{(i)})ln(1-h_{\theta}(x))]\\ &=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}log(\hat p)+(1-y^{(i)})log(1-\hat p)] \end{aligned} J(θ)=m1l(θ)=m1i=1m[y(i)lnhθ(x)+(1y(i))ln(1hθ(x))]=m1i=1m[y(i)log(p^)+(1y(i))log(1p^)](9)

模型求解

模型求解的过程实际上就是求损失函数最小时的参数 θ \theta θ,求解的方法有梯度下降法,坐标轴下降法,牛顿法等,这里用梯度下降法推导!!!

对损失函数求导 (10) ▽ J ( θ ) = ( ∂ J ( θ ) ∂ θ 0 ∂ J ( θ ) ∂ θ 1 ⋯ ∂ J ( θ ) ∂ θ n ) \tag{10}\triangledown J(\theta)=\begin{pmatrix} \frac{\partial J(\theta)}{\partial \theta_0}\\ \frac{\partial J(\theta)}{\partial \theta_1}\\ \cdots\\ \frac{\partial J(\theta)}{\partial \theta_n}\\ \end{pmatrix} J(θ)=θ0J(θ)θ1J(θ)θnJ(θ)(10) p ^ \hat {p} p^求导 (10) p ^ ′ = h θ ′ ( x ) = e − X i θ ( 1 + e ( − X i θ ) ) 2 \tag{10}\hat {p}^{'}=h_{\theta}^{'}(x) = \frac{e^{-X^i\theta}}{(1+e^{(-X^i\theta)})^{2}} p^=hθ(x)=(1+e(Xiθ))2eXiθ(10) 对 l o g [ h θ ( x i ) ] 求 导 对log[h_\theta(x^i)]求导 log[hθ(xi)] (12) l o g [ h θ ( x i ) ] ′ = 1 h θ ( x i ) ⋅ h θ ( x i ) ′ = ( 1 + e − X i θ ) ( 1 + e − X i θ ) − 2 ⋅ e − X i θ = ( 1 + e − X i θ ) − 1 ⋅ e − X i θ = e − X i θ 1 + e − X i θ = 1 − 1 1 + e − X i θ = 1 − h θ ( x i ) \tag{12}\begin{aligned} &log[h_\theta(x^i)]^{'}\\ &=\frac {1}{ h_\theta(x^i)}·h_\theta(x^i)^{'}\\ &= (1+e^{-X^i\theta})(1+e^{-X^i\theta})^{-2}·e^{-X^i\theta}\\ &=(1+e^{-X^i\theta})^{-1}·e^{-X^i\theta}\\ &=\frac{e^{-X^i\theta}}{1+e^{-X^i\theta}}\\ &=1-\frac{1}{1+e^{-X^i\theta}}\\ &=1-h_\theta(x^i) \end{aligned} log[hθ(xi)]=hθ(xi)1hθ(xi)=(1+eXiθ)(1+eXiθ)2eXiθ=(1+eXiθ)1eXiθ=1+eXiθeXiθ=11+eXiθ1=1hθ(xi)(12) 对 l o g [ 1 − h θ ( x i ) ] 求 导 对log[1-h_\theta(x^i)]求导 log[1hθ(xi)] (13) l o g [ 1 − h θ ( x i ) ] ′ = 1 1 − h θ ( x i ) ⋅ ( − 1 ) ⋅ h θ ( x i ) ′ = − 1 + e − x i e − x i ⋅ ( 1 + e − x i ) − 2 ⋅ e − x i = − h θ ( x i ) \tag{13}\begin{aligned} &log[1-h_\theta(x^i)]^{'}\\ &=\frac{1}{1-h_\theta(x^i)}·(-1)·h_\theta(x^i)^{'}\\ &=-\frac{1+e^{-x^i}}{e^{-x^i}}·(1+e^{-x^i})^{-2}·e^{-x^i}\\ &=-h_\theta(x^i)\\ &\end{aligned} log[1hθ(xi)]=1hθ(xi)1(1)hθ(xi)=exi1+exi(1+exi)2exi=hθ(xi)(13) ( 1 − y ( i ) ) l o g [ 1 − h θ ( x i ) ] (1-y^{(i)})log[1-h_\theta(x^i)] (1y(i))log[1hθ(xi)]求导 (14) d [ ( 1 − y ( i ) ) l o g ( 1 − h θ ( x i ) ] d θ j = ( 1 − y ( i ) ) ⋅ ( − h θ ( x i ) ) ⋅ X j ( i ) \tag {14} \begin{aligned} &\frac{d[(1-y^{(i)})log(1-h_\theta(x^i)]}{d\theta_j}\\ &= (1-y^{(i)})·(-h_\theta(x^i))·X_j^{(i)} \end{aligned} dθjd[(1y(i))log(1hθ(xi)]=(1y(i))(hθ(xi))Xj(i)(14) y ( i ) l o g ( h θ ( x i ) ) ] y^{(i)}log(h_\theta(x^i))] y(i)log(hθ(xi))]求导 (15) d [ y ( i ) l o g ( h θ ( x i ) ) ] d θ j = y ( i ) ( 1 − h θ ( x i ) ) ⋅ X j ( i ) \tag {15} \begin{aligned} &\frac{d[y^{(i)}log(h_\theta(x^i))]}{d\theta_j}\\ &=y^{(i)}(1-h_\theta(x^i))·X_j^{(i)} \end{aligned} dθjd[y(i)log(hθ(xi))]=y(i)(1hθ(xi))Xj(i)(15)

最终求化简结果 (16) J ( θ ) θ j = − 1 m ∑ i = 1 m ( h θ ( x i ) − y ( i ) ) X j ( i ) = − 1 m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) X j ( i ) \begin{aligned}\tag{16} &\frac{J(\theta)}{\theta_j}=-\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^i)-y^{(i)})X_j^{(i)}\\ &=-\frac{1}{m}\sum_{i=1}^{m}(\hat y^{(i)}-y^{(i)})X_j^{(i)} \end{aligned} θjJ(θ)=m1i=1m(hθ(xi)y(i))Xj(i)=m1i=1m(y^(i)y(i))Xj(i)(16)

梯度下降法中的更新公式: (18) θ j = θ j − α m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) X j ( i ) \tag {18}\theta_j=\theta_j- \frac{\alpha}{m}\sum_{i=1}^{m}(\hat y^{(i)}-y^{(i)})X_j^{(i)} θj=θjmαi=1m(y^(i)y(i))Xj(i)(18)

i = 1 , 2 , 3 , ⋯   , m i= 1,2,3,\cdots,m i=1,2,3,,m

j = 1 , 2 , 3 , ⋯   , n j=1,2,3,\cdots,n j=1,2,3,,n

α 为 学 习 率 \alpha为学习率 α

正则化方法

为防止模型过拟合,提高模型的泛化能力,通常会在损失函数的后面添加一个正则化项。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓【惩罚】是指对损失函数中的某些参数做一些限制

L2正则化(ℓ2 -norm)

使用L2正则化的模型叫做Ridge Regularization(岭回归),直接在原来的损失函数基础上加上权重参数的平方和: 令损失函数为 J 0 J_0 J0,则Ridge Regularization为: (5) J = J 0 + 1 2 η ∑ i = 1 n θ 2 \tag{5}J=J_0+\frac{1}{2}\eta \sum_{i=1}^{n}\theta^2 J=J0+21ηi=1nθ2(5) 使最终的损失函数最小,要考虑 J 0 J_0 J0 (6) L 2 = 1 2 η ∑ i = 1 n θ 2 \tag{6}L_2=\frac{1}{2}\eta \sum_{i=1}^{n} \theta^2 L2=21ηi=1nθ2(6)两个因素,最终的损失函数就是求等高 圆圈+黑色圆圈的和的最小值。由图可知两个圆相交时, J J J取得最小值。

为什么 L 2 L_2 L2正则化项能够防止过拟合的情况? 对损失函数的参数优化求解过程进行分析 (7) ∂ J ∂ θ = ∂ J 0 ∂ θ + α θ \tag{7}\frac{\partial J}{\partial \theta}=\frac{\partial J_0}{\partial \theta}+\alpha \theta θJ=θJ0+αθ(7)

(8) ∂ J ∂ b = ∂ J ∂ b \tag{8}\frac{\partial J}{\partial b}=\frac{\partial J}{\partial b} bJ=bJ(8) 可以发现L2正则化项对b的更新没有影响,但是对于 θ \theta θ的更新有影响: θ → θ − η ∑ i = 1 m ∂ J i ∂ θ − η α θ \theta \rightarrow \theta - \eta\sum_{i=1}^{m} \frac{\partial J_i}{\partial \theta}-\eta \alpha \theta θθηi=1mθJiηαθ

(9) = ( 1 − η α ) θ − η ∑ i = 1 m ∂ J i ∂ θ \tag{9}=(1-\eta \alpha )\theta - \eta \sum_{i=1}^{m}\frac{\partial J_i}{\partial \theta} =(1ηα)θηi=1mθJi(9)

在不使用L2正则化时,求导结果中 θ \theta θ前系数为1,现在 θ \theta θ前面系数为 1 − η α 1−η\alpha 1ηα ,因为η、 α \alpha α都是正的,所以 1 − η α 1−η\alpha 1ηα小于1,它的效果是减小 θ \theta θ,这也就是权重衰减(weight decay)的由来。

在岭回归中,规范化项是所有系数的平方和,称为L2-norm(L2范数)。在我们的模型中就是试图最小化RSS+λ(sumβj^2)。当λ增加时,系数会缩小,趋向于0但永远不会为0。岭回归的优点是可以提高预测准确度,但因为它不能使任何一个特征的系数为0,所以在模型解释性上会有些问题。为了解决这个问题,我们使用LASSO回归。

L1正则化(ℓ1 -norm)

使用L1正则化的模型建叫做Lasso Regularization(Lasso回归),直接在原来的损失函数基础上加上权重参数的绝对值, η \eta η为正则化参数: 假设损失函数为 (1) J 0 = ∑ i = 1 m ( y ( i ) − θ 0 − θ 1 x 1 − θ 2 x 2 − ⋯ − θ n x n ) \tag{1}J_0=\sum_{i=1}^{m}(y^{(i)}-\theta_0-\theta_1x_1-\theta_2x_2-\cdots-\theta_nx_n) J0=i=1m(y(i)θ0θ1x1θ2x2θnxn)(1)则Lasso Regularization为: (2) J = J 0 + η ∑ i = 1 m ∣ θ ∣ \tag{2}J=J_0+\eta \sum_{i=1}^{m}|\theta| J=J0+ηi=1mθ(2) J J J 是带有绝对值符号的函数,因此 J J J是不完全可微的。当我们在原始损失函数 J 0 J_0 J0后添加 L 1 L_1 L1正则化项时,相当于对 J 0 J_0 J0做了一个约束。令 L 1 = η ∑ i = 1 m ∣ θ ∣ L_1=\eta\sum_{i=1}^{m}|\theta| L1=ηi=1mθ,则 J = J 0 + L 1 J=J_0+L_1 J=J0+L1,此时我们的任务变成在 L L L约束下求出 J J J取最小值时的 θ \theta θ η \eta η 被称为正则化系数.

下面通过图像来说明如何在约束条件 L 1 L_1 L1下求 J J J的最小值。 最终的损失函数就是求等高圆圈+黑色黑色矩形的和的最小值。由图可知等高圆圈+黑色矩形首次相交时, J J J取得最小值。 为什么 L 1 L_1 L1正则化项能够防止过拟合的情况? 对损失函数的参数优化求解过程进行分析 (3) ∂ J ∂ θ = ∂ J 0 ∂ θ + α s g n ( θ ) \tag{3}\frac{\partial J}{\partial \theta}=\frac{\partial J_0}{\partial \theta}+\alpha sgn(\theta) θJ=θJ0+αsgn(θ)(3)

上式中 s g n ( θ ) sgn(\theta) sgn(θ)表示 θ \theta θ的符号。那么权重 θ \theta θ的更新规则为: (4) θ → θ − η ∑ i = 1 m ∂ J i ∂ θ − η α s g n ( θ ) \tag{4}\theta \rightarrow \theta - \eta\sum_{i=1}^{m} \frac{\partial J_i}{\partial \theta}-\eta \alpha sgn(\theta) θθηi=1mθJiηαsgn(θ)(4)

比原始的更新规则多出了 η α s g n ( θ ) η \alpha sgn(\theta) ηαsgn(θ)这一项。当 θ \theta θ为正时,更新后的 θ \theta θ变小。当 θ \theta θ为负时,更新后的 θ \theta θ变大——因此它的效果就是让 η \eta η往0靠,使网络中的权重尽可能为0,也就相当于减小了网络复杂度,防止过拟合。

区别于岭回归中的L2-norm,LASSO回归使用L1-norm,即所有特征权重的绝对值之和,也就是要最小化RSS+λ(sum|βj|)。这个收缩惩罚项确实可以使特征权重收缩到0,相对于岭回归,这是一个明显的优势,因为可以极大地提高模型的解释性。如果LASSO这么好,那还要岭回归做什么?当存在高度共线性或高度两两相关的情况下,LASSO回归可能会将某个预测特征强制删除,这会损失模型的预测能力。举例来说,如果特征A和B都应该存在于模型之中,那么LASSO可能会将其中一个的系数缩减到0。可见岭回归与Lasso回归应该是互为补充的关系。

弹性网络

弹性网络的优势在于,它既能做到岭回归不能做的特征提取,又能实现LASSO不能做的特征分组。重申一下,LASSO倾向于在一组相关的特征中选择一个,忽略其他。弹性网络包含了一个混合参数α,它和λ同时起作用。α是一个0和1之间的数,λ和前面一样,用来调节惩罚项的大小。请注意,当α等于0时,弹性网络等价于岭回归;当α等于1时,弹性网络等价于LASSO。实质上,我们通过对β系数的二次项引入一个第二调优参数,将L1惩罚项和L2惩罚项混合在一起。通过最小化(RSS + λ[(1 - α)(sum|βj|^2)/2 + α(sum|βj|)]/N)完成目标。

逻辑回归的优缺点

优点

1、它是直接对分类可能性建模,无需事先假设数据分布,这样就避免了假设分布不准确问题。

2、它不仅预测类别,而且可以得到近似概率预测,这对许多概率辅助决策的任务很有用。

3、对率函数是任意阶可导凸函数,有很好的数学性质,现有许多的数值优化算法都可以直接用于求解。

缺点

对数据和场景的适应能力有局限性,不如决策树算法适应性那么强

sklearn.linear_model.LogisticRegression参数说明

官方英文文档

参数解释数值类型(默认值)选项penalty正则化选择参数。‘newton-cg’,‘sag’和’lbfgs’解算器只支持l2惩罚。版本0.19中的新功能:使用SAGA求解器的l1惩罚(允许’多项’+ L1)str (l1)‘l1’或’l2’,dual对偶方法只用在求解线性多核(liblinear)的L2惩罚项上。当样本数量>样本特征的时候,dual通常设置为False。bool (False)Ture/Falsesolversolver参数决定了我们对逻辑回归损失函数的优化方法str(liblinear)newton-cg;lbfgs;liblinear;sag;saga。multi_classmulti_class参数决定了我们分类方式的选择str(ovr)ovr;multinomialclass_weight用于标示分类模型中各种类型的权重,可以是一个字典或者’balanced’字符串,默认为不输入,也就是不考虑权重,即为None。如果选择输入的话,可以选择balanced让类库自己计算类型权重,或者自己输入各个类型的权重。举个例子,比如对于0,1的二元模型,我们可以定义class_weight={0:0.9,1:0.1},这样类型0的权重为90%,而类型1的权重为10%。如果class_weight选择balanced,那么类库会根据训练样本量来计算权重。某种类型样本量越多,则权重越低,样本量越少,则权重越高。当class_weight为balanced时,类权重计算方法如下:n_samples / (n_classes * np.bincount(y))。n_samples为样本数,n_classes为类别数量,np.bincount(y)会输出每个类的样本数,例如y=[1,0,0,1,1],则np.bincount(y)=[2,3]。dict/str字典或者’balanced’字符串tol停止求解的标准Float(1e-4)c正则化系统λ的倒数Float(1.0)verbose日志冗长度int(0)warm_start热启动参数,如果为True,则下一次训练是以追加树的形式进行(重新使用上一次的调用作为初始化)。bool(False)Flase/Turen_jobs并行数,用CPU的一个内核运行程序,2的时候,用CPU的2个内核运行程序。为-1的时候,用所有CPU的内核运行程序。int(1)max_iter算法收敛最大迭代次数,仅在正则化优化算法为newton-cg, sag和lbfgs才有用,算法收敛的最大迭代次数。int(10)random_state随机数种子,仅在正则化优化算法为sag,liblinear时有用。Int(无)fit_intercept是否存在截距或偏差bool(Ture)False/Ture

具体参数详解

逻辑回归处理多分类问题

OvO(One vs One)

假设训练集有N类样本, C 1 , C 2 , ⋯   , C N C_1,C_2,\cdots,C_N C1,C2,,CN训练时两两组合为二分类进行训练,新样本通过这 C N 2 C_N^{2} CN2个分类器后会得到 N ( N − 1 ) 2 \frac {N(N−1)}{2} 2N(N1)个分类结果,最终结果可根据这些分类结果投票产生。

OvR(One vs Rest)

训练时一个类作为正例,其余所有类作为反例。这样共有 N N N个二分类器进行训练,新样本通过分类器时预测结果为正例的即为最终结果。

MvM(Many vs Many)

MvM是每次将若干各类作为正例,剩下的若干个类作为反例,OvO和OvR其实是MvM的特殊情况。但是MvM的正反例构造必须有特殊的设计,不能随意选取。这里我们介绍一种最常用的MvM技术:“纠错输出码”(ECOC)

类别不平衡问题

逻辑回归面经

参考文献

逻辑回归原理小结 scikit-learn 逻辑回归类库使用小结 Logistic Regression(逻辑回归)原理及公式推导 机器学习算法–逻辑回归原理介绍 正则化方法

转载请注明原文地址: https://www.6miu.com/read-4823375.html

最新回复(0)