网易云课堂-吴恩达机器学习-学习归纳-4-逻辑回归

这篇博客介绍了逻辑回归在分类问题中的应用,特别是在二元分类和多类别分类中的作用。文章详细阐述了逻辑回归如何从线性回归模型扩展,以适应0或1的输出,并通过决策边界解释了如何进行预测。内容涵盖了逻辑函数、决策边界、代价函数及其优化,以及在多类别分类问题中采用一对一方法的逻辑回归模型。
摘要由CSDN通过智能技术生成

1、分类问题及假说提出

在分类问题中,我们预测的是一组离散的值。比如,预测一个肿瘤是良性的还是恶性的,我们要做的是把给定数据集中不同尺寸的每个肿瘤样本都打上了良性或者恶性的标签,分成了不同的类别,然后运用机器学习算法来预测一个新肿瘤的良性与否。

这里我们从二元的分类问题开始讨论,即预测的 y y y 值只有两个取值(0或1),二分类问题可以扩展到多分类问题。

对于肿瘤预测的问题,我们可以用线性回归的方法求出适合数据的一条直线:
在这里插入图片描述
使用线性回归模型我们只能预测连续的值,然而对于分类问题,我们需要输出0或1,我们可以预测:

h θ ( x ) > = 0.5 h_θ (x)>=0.5 hθ(x)>=0.5 时,预测 y = 1 y=1 y=1

h θ ( x ) &lt; 0.5 h_θ (x)&lt;0.5 hθ(x)<0.5 时,预测 y = 0 y=0 y=0

对于上图所示的数据,这样的一个线性模型似乎能很好地完成分类任务。假使我们又观测到一个非常大尺寸的恶性肿瘤,将其作为实例加入到我们的训练集中来,这将使得我们获得一条新的直线。
在这里插入图片描述
这时,再使用0.5作为阀值来预测肿瘤是良性还是恶性便不合适了,改变阈值可能会满足我们的要求,但是预测值可能会超出0到1的范围,所以,线性回归并不适合解决这样的问题。

因此,我们要引入一个新的模型(逻辑回归),该模型的输出变量范围要始终在0和1之间。 逻辑回归模型的假设是: h θ ( x ) = g ( θ T X ) h_θ (x)=g(θ^T X) hθ(x)=g(θTX),其中: X X X 代表特征向量, g g g 代表逻辑函数(logistic function),公式为: g ( z ) = 1 ( 1 + e − z ) g(z)=\frac{1}{(1+e^{-z})} g(z)=(1+ez)1

该函数的图像为:
在这里插入图片描述
由上图可以看出,无论Z取什么值,g(Z)的范围始终在0和1之间。

2、决策边界

在这里插入图片描述
在逻辑回归中,我们预测:
h θ ( x ) &gt; = 0.5 h_θ (x)&gt;=0.5 hθ(x)>=0.5 时,预测 y = 1 y=1 y=1
h θ ( x ) &lt; 0.5 h_θ (x)&lt;0.5 hθ(x)<0.5 时,预测 y = 0 y=0 y=0
根据上面绘制出的 S 形函数图像,我们知道当
z = 0 时 , g ( z ) = 0.5 z=0 时 ,g(z)=0.5 z=0g(z)=0.5
z &gt; 0 时 , g ( z ) &gt; 0.5 z&gt;0 时 ,g(z)&gt;0.5 z>0g(z)>0.5
z &lt; 0 时 , g ( z ) &lt; 0.5 z&lt;0 时 ,g(z)&lt;0.5 z<0g(z)<0.5
z = θ T x z=θ^Tx z=θTx ,即:
θ T x &gt; = 0 θ^Tx&gt;=0 θTx>=0 时,预测 y = 1 y=1 y=1
θ T x &lt; 0 θ^Tx&lt;0 θTx<0 时,预测 y = 0 y=0 y=0

现在假设我们有一个模型:
在这里插入图片描述
设定参数
θ = [ − 3 1 1 ] \theta= \left[\begin{matrix} -3\\1\\1 \end{matrix} \right] θ=311

则当 − 3 + x 1 + x 2 ≥ 0 -3+x_1+x_2≥0 3+x1+x20,即 x 1 + x 2 ≥ 3 x_1+x_2≥3 x1+x23 时,模型将预测 y = 1 y=1 y=1。 我们可以绘制直线 x 1 + x 2 = 3 x_1+x_2=3 x1+x2=3,这条线便是我们模型的分界线,将预测为1的区域和预测为 0的区域分隔开。
在这里插入图片描述
上述只是一个线性的决策边界,当 h θ ( x ) h_θ(x) hθ(x) 更复杂的时候,我们可以得到非线性的决策边界,例如:假使我们的数据呈现这样的分布情况,怎样的模型才能适合呢?
在这里插入图片描述
因为需要用曲线才能分隔 y = 0 y=0 y=0 的区域和 y = 1 y=1 y=1 的区域,我们需要特征的二次方项,
设假设函数为 h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 ) h_θ (x)=g(θ_0+θ_1 x_1+θ_2 x_2+θ_3 x_1^2+θ_4 x_2^2 ) hθ(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x22)

设定参数
θ = [ − 1 0 0 1 1 ] \theta= \left[\begin{matrix} -1\\0\\0\\1\\1 \end{matrix} \right] θ=10011
则我们得到的决策边界恰好是圆心在原点且半径为1的圆形。

3、代价函数

为了求出参数 θ \theta θ,我们需要定义代价函数。

假设一个训练集中有 m m m 个样本,即 { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } \{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\} {(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}

每个样本有 n + 1 n+1 n+1 个特征,并且令 x 0 = 1 x_0 = 1 x0=1,则
x = [ 1 x 1 x 2 . . . x n ] x= \left[\begin{matrix} 1\\x_1\\x_2\\...\\x_n \end{matrix} \right] x=1x1x2...xn

y ∈ { 0 , 1 } y\in\{0,1\} y{0,1},假设函数 h θ ( x ) = 1 1 + e − θ T x h_\theta(x) = \frac{1}{1+e^{-\theta^Tx}} hθ(x)=1+eθTx1

那么我们如何求出参数 θ \theta θ 呢?

对于线性回归模型,我们定义的代价函数 J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=2m1i=1m(hθ(x(i))y(i))2,是所有模型误差的平方和。理论上来说,我们也可以对逻辑回归模型沿用这个定义,但是问题在于,当我们将该假设函数 h θ ( x ) = 1 1 + e − θ T x h_\theta(x) = \frac{1}{1+e^{-\theta^Tx}} hθ(x)=1+eθTx1代入到这样的代价函数中时,我们得到的代价函数将是一个非凸函数(non-convex function),这意味着我们的代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值,如下面两幅图所示。
在这里插入图片描述
我们重新定义逻辑回归的代价函数为: J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) J(\theta) = \frac{1}{m} \sum\limits_{i=1}^{m}Cost(h_\theta (x^{(i)} ),y^{(i)}) J(θ)=m1i=1mCost(hθ(x(i)),y(i)) ,其中
C o s t ( h θ ( x ( i ) ) , y ( i ) ) = { − l o g ( h θ ( x ) ) i f y = 1 − l o g ( 1 − h θ ( x ) ) i f y = 0 Cost(h_\theta (x^{(i)} ),y^{(i)}) =\left\{ \begin{aligned} -log(h_{\theta}(x))\quad\quad if\quad y =1\\ -log(1-h_{\theta}(x))\quad\quad if\quad y = 0 \end{aligned} \right. Cost(hθ(x(i)),y(i))={log(hθ(x))ify=1log(1hθ(x))ify=0

h θ ( x ) h_{\theta}(x) hθ(x) C o s t ( h θ ( x ) , y ) Cost(h_{\theta}(x),y) Cost(hθ(x),y) 之间的关系如下图所示:
在这里插入图片描述
这样构建的 C o s t ( h θ ( x ) , y ) Cost(h_θ (x),y) Cost(hθ(x),y) 函数的特点是:当实际的 y = 1 y=1 y=1 h θ ( x ) h_θ (x) hθ(x) 也为1时误差为0,当 y = 1 y=1 y=1 h θ ( x ) h_θ (x) hθ(x) 不为1时,误差随着 h θ ( x ) h_θ (x) hθ(x) 变小而变大;当实际的 y = 0 y=0 y=0 h θ ( x ) h_θ (x) hθ(x) 也为0 时误差为0,当 y = 0 y=0 y=0 h θ ( x ) h_θ (x) hθ(x) 不为0时误差随着 h θ ( x ) h_θ (x) hθ(x) 的变大而变大。

将构建的 C o s t ( h θ ( x ) , y ) Cost(h_θ (x),y) Cost(hθ(x),y) 简化如下:

C o s t ( h θ ( x ) , y ) = − y × l o g ( h θ ( x ) ) − ( 1 − y ) × l o g ( 1 − h θ ( x ) ) Cost(h_θ (x),y)=-y×log(h_θ (x))-(1-y)×log(1-h_θ (x)) Cost(hθ(x),y)=y×log(hθ(x))(1y)×log(1hθ(x))

带入代价函数得到:
J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) l o g ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] J(θ)=\frac{1}{m} \sum\limits_{i=1}^{m}[-y^{(i)} log(h_θ (x^{(i)}))-(1-y^{(i)})log(1-h_θ(x^{(i)}))] J(θ)=m1i=1m[y(i)log(hθ(x(i)))(1y(i))log(1hθ(x(i)))]

即: J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] J(θ)=-\frac{1}{m} \sum\limits_{i=1}^{m}[y^{(i)} log(h_θ (x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)}))] J(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

在得到这样一个代价函数以后,我们便可以用梯度下降算法来求得使代价函数最小的参数了。算法为:
R e p e a t { θ j : = θ j − α ∂ ∂ θ j J ( θ ) ( s i m u l t a n e o u s l y u p d a t e a l l θ j ) } Repeat \{ θ_j:=θ_j-\alpha\frac{\partial}{\partial θ_j}J(θ) (simultaneously \quad update \quad all \quad θ_j ) \} Repeat{θj:=θjαθjJ(θ)(simultaneouslyupdateallθj)}

求导后得到:

R e p e a t { θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ( s i m u l t a n e o u s l y u p d a t e a l l θ j ) } Repeat \{ θ_j:=θ_j-α\frac{1}{m}\sum\limits_{i=1}^{m}(h_θ (x^{(i)})-y^{(i)}) x_j^{(i)} (simultaneously \quad update \quad all \quad θ_j ) \} Repeat{θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)(simultaneouslyupdateallθj)}

推到过程如下:
J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] J(θ)=-\frac{1}{m} \sum\limits_{i=1}^{m}[y^{(i)} log(h_θ (x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)}))] J(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

考虑: h θ ( x ( i ) ) = 1 1 + e − θ T x ( i ) h_\theta(x^{(i)}) = \frac{1}{1+e^{-\theta^Tx^{(i)}}} hθ(x(i))=1+eθTx(i)1

则: y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) y^{(i)} log(h_θ (x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)})) y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))

= y ( i ) l o g ( 1 1 + e − θ T x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − 1 1 + e − θ T x ( i ) ) =y^{(i)} log(\frac{1}{1+e^{-\theta^Tx^{(i)}}})+(1-y^{(i)})log(1-\frac{1}{1+e^{-\theta^Tx^{(i)}}}) =y(i)log(1+eθTx(i)1)+(1y(i))log(11+eθTx(i)1)

= − y ( i ) l o g ( 1 + e − θ T x ( i ) ) − ( 1 − y ( i ) ) l o g ( 1 + e θ T x ( i ) ) =-y^{(i)} log(1+e^{-\theta^Tx^{(i)}})-(1-y^{(i)})log(1+e^{\theta^Tx^{(i)}}) =y(i)log(1+eθTx(i))(1y(i))log(1+eθTx(i))

所以: ∂ ∂ θ j J ( θ ) = ∂ ∂ θ j [ − α 1 m ∑ i = 1 m [ − y ( i ) l o g ( 1 + e − θ T x ( i ) ) − ( 1 − y ( i ) ) l o g ( 1 + e θ T x ( i ) ) ] ] \frac{\partial}{\partial θ_j}J(θ) =\frac{\partial}{\partial θ_j}[-α\frac{1}{m}\sum\limits_{i=1}^{m}[-y^{(i)} log(1+e^{-\theta^Tx^{(i)}})-(1-y^{(i)})log(1+e^{\theta^Tx^{(i)}})]] θjJ(θ)=θj[αm1i=1m[y(i)log(1+eθTx(i))(1y(i))log(1+eθTx(i))]]

= − 1 m ∑ i = 1 m [ − y ( i ) − x j ( i ) e − θ T x ( i ) 1 + e − θ T x ( i ) − ( 1 − y ( i ) ) x j ( i ) e θ T x ( i ) 1 + e θ T x ( i ) ] =-\frac{1}{m}\sum\limits_{i=1}^{m} [-y^{(i)} \frac{-x_j^{(i)} e^{-θ^T x^{(i)}}}{1+e^{-θ^Tx^{(i)}}}-(1-y^{(i)}) \frac{x_j^{(i)} e^{θ^T x^{(i)}}}{{1+e^{θ^T x^{(i)}}}}] =m1i=1m[y(i)1+eθTx(i)xj(i)eθTx(i)(1y(i))1+eθTx(i)xj(i)eθTx(i)]

= − 1 m ∑ i = 1 m y ( i ) x j ( i ) 1 + e θ T x ( i ) − ( 1 − y ( i ) ) x j ( i ) e θ T x ( i ) 1 + e θ T x ( i ) ] =-\frac{1}{m}\sum\limits_{i=1}^{m} y^{(i)} \frac{x_{j}^{(i)}}{1+e^{θ^Tx^{(i)}}}-(1-y^{(i)})\frac{x_{j}^{(i)}e^{θ^Tx^{(i)}}}{1+e^{θ^Tx^{(i)}}}] =m1i=1my(i)1+eθTx(i)xj(i)(1y(i))1+eθTx(i)xj(i)eθTx(i)]

= − 1 m ∑ i = 1 m y ( i ) x j ( i ) − x j ( i ) e θ T x ( i ) + y ( i ) x j ( i ) e θ T x ( i ) 1 + e θ T x ( i ) =-\frac{1}{m}\sum\limits_{i=1}^{m}\frac{y^{(i)}x_{j}^{(i)}-x_{j}^{(i)} e^{θ^Tx^{(i)}}+y^{(i)} x_{j}^{(i)}e^{θ^Tx^{(i)}}}{1+e^{θ^Tx^{(i)}}} =m1i=1m1+eθTx(i)y(i)xj(i)xj(i)eθTx(i)+y(i)xj(i)eθTx(i)

= − 1 m ∑ i = 1 m y ( i ) ( 1 + e θ T x ( i ) ) − e θ T x ( i ) 1 + e θ T x ( i ) x j ( i ) =-\frac{1}{m}\sum\limits_{i=1}^{m}\frac{y^{(i)} (1+e^{θ^Tx^{(i)}})-e^{θ^Tx^{(i)}}}{1+e^{θ^Tx^{(i) }} }x_{j}^{(i)} =m1i=1m1+eθTx(i)y(i)(1+eθTx(i))eθTx(i)xj(i)

= − 1 m ∑ i = 1 m ( y ( i ) − e θ T x ( i ) 1 + e θ T x ( i ) x j ( i ) =-\frac{1}{m}\sum\limits_{i=1}^{m}(y^{(i)}-\frac{e^{θ^Tx^{(i)}}}{1+e^{θ^Tx^{(i)}}}x_{j}^{(i)} =m1i=1m(y(i)1+eθTx(i)eθTx(i)xj(i)

= − 1 m ∑ i = 1 m ( y ( i ) − 1 1 + e − θ T x ( i ) ) x j ( i ) =-\frac{1}{m}\sum\limits_{i=1}^{m}(y^{(i)}-\frac{1}{1+e^{-θ^Tx^{(i)}}})x_{j}^{(i)} =m1i=1m(y(i)1+eθTx(i)1)xj(i)

= − 1 m ∑ i = 1 m [ y ( i ) − h θ ( x ( i ) ) ] x j ( i ) =-\frac{1}{m}\sum\limits_{i=1}^{m}[y^{(i)}-h_θ(x^{(i)})]x_{j}^{(i)} =m1i=1m[y(i)hθ(x(i))]xj(i)

= 1 m ∑ i = 1 m [ h θ ( x ( i ) ) − y ( i ) ] x j ( i ) =\frac{1}{m}\sum\limits_{i=1}^{m}[h_θ(x^{(i)})-y^{(i)}]x_{j}^{(i)} =m1i=1m[hθ(x(i))y(i)]xj(i)

[注]:虽然得到的梯度下降算法表面上看上去与线性回归的梯度下降算法一样,但是这里的 h θ ( x ) = g ( θ T X ) h_θ(x)=g(θ^T X) hθ(x)=g(θTX) 与线性回归中不同,所以实际上是不一样的。另外,在运行梯度下降算法之前进行特征缩放依旧是非常必要的。

一些梯度下降算法之外的选择: 除了梯度下降算法以外,还有一些常被用来令代价函数最小的算法,这些算法更加复杂和优越,而且通常不需要人工选择学习率,通常比梯度下降算法要更加快速。这些算法有:共轭梯度(Conjugate Gradient),局部优化法(Broyden fletcher goldfarb shann,BFGS)和有限内存局部优化法(LBFGS) ,fminunc是 matlab和octave 中都带的一个最小值优化函数,使用时我们需要提供代价函数和每个参数的求导,下面是 octave 中使用 fminunc 函数的代码示例:

function [jVal, gradient] = costFunction(theta)
    jVal = [...code to compute J(theta)...];
    gradient = [...code to compute derivative of J(theta)...];
end
options = optimset('GradObj', 'on', 'MaxIter', '100');
initialTheta = zeros(2,1);
    
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

4、简化代价函数并运用梯度下降求解参数

如何实现一个完整的逻辑回归算法?

代价函数: J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] J(θ)=-\frac{1}{m} \sum\limits_{i=1}^{m}[y^{(i)} log(h_θ (x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)}))] J(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

根据这个代价函数,为了拟合出参数,该怎么做呢?我们要试图找尽量让 J ( θ ) J(θ) J(θ) 取得最小值的参数 θ θ θ

使用梯度下降法来求解参数 θ \theta θ

参数更新公式: θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) θ_j:=θ_j-α\frac{1}{m}\sum\limits_{i=1}^{m}(h_θ (x^{(i)})-y^{(i)}) x_j^{(i)} θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)

当使用梯度下降法来实现逻辑回归时,参数 θ 0 θ 1 θ 2 θ_0 θ_1 θ_2 θ0θ1θ2 一直到 θ n θ_n θn,我们需要用上面的公式来更新这些参数。我们还可以使用 for循环来更新这些参数值,用 for i=1 to n,或者 for i=1 to n+1。当然,不用 for循环也是可以的,理想情况下,我们更提倡使用向量化的实现,可以把所有这些 n个参数同时更新。

最后还有一点,如果特征范围差距很大的话,那么应该使用特征缩放的方法使得梯度下降收敛更快。

5、高级优化

上一节中讨论了用梯度下降的方法最小化逻辑回归的代价函数 J ( θ ) J(θ) J(θ) ,这里讨论一些高级优化算法和一些高级的优化概念,利用这些方法,我们就能够实现使通过梯度下降方法进行逻辑回归时的速度大大提高,而这也将使算法更加适合解决大型的机器学习问题,比如,我们有数目庞大的特征量。现在我们换个角度来看什么是梯度下降,我们有个代价函数 J ( θ ) J(θ) J(θ),而我们想要使其最小化,那么我们需要做的是编写代码,当输入参数 θ θ θ 时,算法会计算出两样东西: J ( θ ) J(θ) J(θ) 以及 j j j 等于 0、1直到 n 时的偏导数项。
在这里插入图片描述
假设我们已经完成了可以实现这两件事的代码,那么梯度下降所做的就是反复执行这些更新。

另一种考虑梯度下降的思路是:我们需要写出代码来计算 J ( θ ) J(θ) J(θ) 和这些偏导数,然后把这些插入到梯度下降中,然后它就可以为我们最小化这个函数。

然而梯度下降并不是我们可以使用的唯一算法,还有其他一些算法更高级、更复杂。如果我们能用这些方法来计算代价函数 J ( θ ) J(θ) J(θ)和偏导数项 ∂ ∂ θ j J ( θ ) \frac{\partial}{\partial\theta_j} J(θ) θjJ(θ)两个项的话,那么这些算法就是为我们优化代价函数的不同方法,共轭梯度法、BFGS (变尺度法) L-BFGS (限制变尺度法) 就是其中一些更高级的优化算法,它们需要有一种方法来计算 J ( θ ) J(θ) J(θ),以及需要一种方法计算导数项,然后使用比梯度下降更复杂的算法来最小化代价函数。

这三种算法有许多优点:

一个是使用这其中任何一个算法,你通常不需要手动选择学习率 α α α,所以对于这些算法的一种思路是,给出计算导数项和代价函数的方法,你可以认为算法有一个智能的内部循环,而且,事实上,他们确实有一个智能的内部循环,称为线性搜索(line search)算法,它可以自动尝试不同的学习速率 α α α,并自动选择一个好的学习速率 α α α,因此它甚至可以为每次迭代选择不同的学习速率,那么你就不需要自己选择。这些算法实际上在做更复杂的事情,而不仅仅是选择一个好的学习率,所以它们往往最终收敛得远远快于梯度下降。

对于这些复杂的高级算法,我们实际上会应用就可以了,不需要真正理解这些算法的内环间在做什么,如果说这些算法有缺点的话,那么主要缺点是它们比梯度下降法复杂多了,对于这些算法,建议直接软件库。

6、多类别分类:一对多

如何利用使用逻辑回归 (logistic regression)来解决多类别分类问题?
先看这样一些例子。

第一个例子:假如现在需要一个学习算法能自动地将邮件归类到不同的文件夹里,来区分开来自工作的邮件、来自朋友的邮件、来自家人的邮件或者是有关兴趣爱好的邮件,那么,我们就有了这样一个分类问题:其类别有四个,分别用 y=1、y=2、y=3、y=4 来代表。

第二个例子是有关药物诊断的,如果一个病人因为鼻塞来到你的诊所,他可能并没有生病,用 y=1 这个类别来代表;或者患了感冒,用 y=2 来代表;或者得了流感用y=3来代表。

第三个例子:如果你正在做有关天气的机器学习分类问题,那么你可能想要区分哪些天是晴天、多云、雨天、或者下雪天,对上述所有的例子,y 可以取一个很小的数值,一个相对"谨慎"的数值,比如1到3、1到4或者其它数值。

对于二分类问题,我们的数据看起来可能是像这样:
在这里插入图片描述
对于一个多类分类问题,我们的数据集或许看起来像这样:
在这里插入图片描述
我用3种不同的符号来代表3个类别,问题就是给出3个类型的数据集,我们如何得到一个学习算法来进行分类呢?

在这里插入图片描述
现在我们有一个训练集,好比上图表示的有3个类别,我们用三角形表示 y=1,方框表示y=2,叉叉表示 y=3。我们下面要做的就是使用一个训练集,将其分成3个二元分类问题。

我们先从三角形代表的类别1开始,实际上我们可以创建一个新的"伪"训练集,类型2和类型3定为负类,类型1设定为正类,我们创建一个新的训练集,如下图所示的那样,我们要拟合出一个合适的分类器。

在这里插入图片描述
这里的三角形是正样本,而圆形代表负样本。可以这样想,设置三角形的值为1,圆形的值为0,下面我们来训练一个标准的逻辑回归分类器,这样我们就得到一个正边界。

为了能实现这样的转变,我们将多个类中的一个类标记为正向类(y=1),然后将其他所有类都标记为负向类,这个模型记作 h θ ( 1 ) ( x ) h_θ^{(1)}(x) hθ(1)(x)。接着,类似地第我们选择另一个类标记为正向类(y=2),再将其它类都标记为负向类,将这个模型记作 h θ ( 2 ) ( x ) h_θ^{(2)}(x) hθ(2)(x),依此类推。

最后我们得到一系列的模型简记为: h θ ( i ) ( x ) = p ( y = i ∣ x ; θ ) 其 中 : i = ( 1 , 2 , 3.... k ) h_θ^{(i)} (x)=p(y=i|x;θ)其中:i=(1,2,3....k) hθ(i)(x)=p(y=ix;θ)i=(1,2,3....k)
在这里插入图片描述
最后,在我们需要做预测时,我们将所有的分类器都运行一遍,然后对每一个输入变量,都选择最高可能性的输出变量。

总之,我们已经把要做的做完了,现在要做的就是训练这个逻辑回归分类器: h θ ( i ) ( x ) h_θ^{(i)} (x) hθ(i)(x), 其中 i i i 对应每一个可能的 y = i y=i y=i,最后我们要做的就是在我们三个分类器里面输入 x x x,然后选择一个让 h θ ( i ) ( x ) h_θ^{(i)} (x) hθ(i)(x)最大的 i i i,即 max ⁡ i h θ ( i ) ( x ) \max\limits_{i} h_θ^{(i)} (x) imaxhθ(i)(x)

现在知道了基本的挑选分类器的方法,哪一个分类器是可信度最高的,那么就可认为得到一个正确的分类,无论 i i i 值是多少,我们都有最高的概率值,我们预测的 y y y 就是那个值。这就是多类别分类问题,以及一对多的方法,通过这个方法,我们现在可以将逻辑回归分类器用在多分类的问题上了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值