吴恩达机器学习(四)—— Logisitic回归

tech2024-11-19  16

1. 分类问题2. 假设表示3. 决策边界4. 代价函数5. 梯度下降6. 高级优化7. 多类别分类

        Logistic回归又称Logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。

1. 分类问题

        我们讨论的是要预测的变量y是一个离散值情况下的分类问题。         在分类问题中,我们尝试预测的是结果是否属于某一个类。分类问题的例子有:判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈;判断一个肿瘤是恶性的还是良性的。         我们预测的变量 y ∈ { 0 , 1 } y\in \left \{ 0,1 \right \} y{0,1},其中 0 表示负类(Negative class),1 表示正类(Positive class)。         Logistic回归算法是一种分类算法,它适用于标签取值离散的情况,它的输出值永远在0到1之间。不推荐将线性回归用于分类问题,线性回归模型的预测值可超越[0,1]范围。

2. 假设表示

        对于分类问题,我们需要输出0或1,我们可以预测:

             - 当 h θ ( x ) ⩾ 0.5 h_{\theta }(x)\geqslant 0.5 hθ(x)0.5时,预测 y = 1 y=1 y=1。              - 当 h θ ( x ) ⩽ 0.5 h_{\theta }(x)\leqslant 0.5 hθ(x)0.5时,预测 y = 0 y=0 y=0

        Logistic回归模型的假设函数是 h θ ( x ) = g ( θ T X ) h_{\theta }(x)=g(\theta ^{T}X) hθ(x)=g(θTX) ,其中 X X X代表特征向量, g g g代表Logistic函数。一个常用的Logistic函数为S形函数(Sigmoid function),公式为 g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1 ,函数图象如图1所示。

图1 S形函数图象

         h θ ( x ) h_{\theta }(x) hθ(x)的作用是:对于给定的输入变量 x x x,根据选择的参数计算输出变量 y = 1 y=1 y=1的可能性(estimated probablity),即 h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_{\theta }(x)=P(y=1|x;\theta ) hθ(x)=P(y=1x;θ),所以有 P ( y = 0 ∣ x ; θ ) + P ( y = 1 ∣ x ; θ ) = 1 P(y=0|x;\theta )+P(y=1|x;\theta )=1 P(y=0x;θ)+P(y=1x;θ)=1

3. 决策边界

        决策边界分为线性决策边界(Linear decision boundary)和非线性决策边界(Non-linear decision boundary)。         图2为线性决策边界的例子,红色代表正类,蓝色代表负类,其中参数 θ \theta θ为向量[-3 1 1],则当 − 3 + x 1 + x 2 ⩾ 0 -3+x_{1}+x_{2}\geqslant0 3+x1+x20,即 x 1 + x 2 ⩾ 3 x_{1}+x_{2}\geqslant3 x1+x23时,模型将预测 y = 1 y=1 y=1 。 我们可以绘制直线 x 1 + x 2 = 3 x_{1}+x_{2}=3 x1+x2=3,这条线便是我们模型的决策边界,它能将预测为1的区域和预测为0的区域分隔开。

图2 线性决策边界

        图3为非线性决策边界的例子,其中参数 θ \theta θ为向量[-1 0 0 1 1],则当 − 1 + x 1 2 + x 2 2 ⩾ 0 -1+x_{1}^{2}+x_{2}^{2}\geqslant0 1+x12+x220,即 x 1 2 + x 2 2 ⩾ 1 x_{1}^{2}+x_{2}^{2}\geqslant1 x12+x221时,模型将预测 y = 1 y=1 y=1 。 我们可以绘制圆心在原点且半径为1的圆形 x 1 2 + x 2 2 = 1 x_{1}^{2}+x_{2}^{2}=1 x12+x22=1,它能将预测为1的区域和预测为0的区域分隔开。

图3 非线性决策边界

        决策边界是假设函数的一个属性,我们可以用非常复杂的模型来适应非常复杂形状的决策边界。

4. 代价函数

        定义Logistic回归的代价函数为 J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) J(\theta )=\frac{1}{m}\sum_{i=1}^{m}Cost(h_{\theta }(x^{(i)}),y^{(i)}) J(θ)=m1i=1mCost(hθ(x(i)),y(i))

其中 C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) ,                     i f     y = 1 − l o g ( 1 − h θ ( x ) ) ,         i f     y = 0 Cost(h_{\theta }(x),y)=\left\{\begin{matrix} -log(h_{\theta}(x)),\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}\ _{}if\ _{}\ _{}y=1\\ -log(1-h_{\theta}(x)),\ _{}\ _{}\ _{}\ _{}if\ _{}\ _{}y=0 \end{matrix}\right. Cost(hθ(x),y)={log(hθ(x)),          if  y=1log(1hθ(x)),    if  y=0

         h θ ( x ) h_{\theta }(x) hθ(x) C o s t ( h θ ( x ) , y ) Cost(h_{\theta }(x),y) Cost(hθ(x),y)之间的关系如图4所示:

图4 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_{\theta }(x),y) Cost(hθ(x),y)函数的特点是:当实际的 y = 0 y=0 y=0且预测的 h θ ( x ) h_{\theta }(x) hθ(x)也为0时代价为0,当 y = 0 y=0 y=0 h θ ( x ) h_{\theta }(x) hθ(x)不为0时误差随着 h θ ( x ) h_{\theta }(x) hθ(x)的变大而变大,如图4中a)所示;当实际的 y = 1 y=1 y=1且预测的 h θ ( x ) h_{\theta }(x) hθ(x)也为1时误差为 0,当 y = 1 y=1 y=1 h θ ( x ) h_{\theta }(x) hθ(x)不为1时误差随着 h θ ( x ) h_{\theta }(x) hθ(x)变小而变大,如图4中b)所示。          C o s t ( h θ ( x ) , y ) Cost(h_{\theta }(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_{\theta }(x),y)=-y\times log(h_{\theta}(x))-(1-y)\times log(1-h_{\theta}(x)) Cost(hθ(x),y)=y×log(hθ(x))(1y)×log(1hθ(x))

        那么 Logisitic回归的代价函数为 J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) = − 1 m ∑ i = 1 m [ y ( i ) × l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) × l o g ( 1 − h θ ( x ( i ) ) ) ] J(\theta )=\frac{1}{m}\sum_{i=1}^{m}Cost(h_{\theta }(x^{(i)}),y^{(i)})=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}\times log(h_{\theta}(x^{(i)}))+(1-y^{(i)})\times log(1-h_{\theta}(x^{(i)}))] J(θ)=m1i=1mCost(hθ(x(i)),y(i))=m1i=1m[y(i)×log(hθ(x(i)))+(1y(i))×log(1hθ(x(i)))]

5. 梯度下降

        为了拟合出参数,我们需要最小化代价函数,找到尽量让 J ( θ ) J(\theta) J(θ)取得最小值的参数 θ \theta θ,所用的方法是梯度下降法。         梯度下降法的实现: 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 \left \{ \theta _{j}:=\theta _{j}-\alpha \frac{1}{m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)} )x^{(i)}_{j}\right \}\ _{}\ _{}(Simultaneously\ _{}\ _{}update\ _{}\ _{}all\ _{}\ _{}\theta _{j}) Repeat{θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)}  (Simultaneously  update  all  θj)

6. 高级优化

        一些更高级的优化算法有:共轭梯度法、BFGS 和L-BFGS 等。

优点:一个是通常不需要手动选择学习率,它们有一个智能内循环(线性搜索算法),可以自动尝试不同的学习速率 α \alpha α并自动选择一个好的学习速率,它们甚至可以为每次迭代选择不同的学习速率,那么我们就不需要自己选择。还有一个是它们经常快于梯度下降算法。缺点:过于复杂。

7. 多类别分类

        如何使用 Logisitic回归来解决多类别分类的问题。         对于一个多类分类问题,我们的数据集看起来可能会像图5中b)所示,而图5中a)是我们之前讨论的二元分类问题的数据集。

图5 二元分类和多类别分类的数据集

        我们用3种不同的符号来代表3个类别,如图6所示,可以使用"一对多"方法来进行分类。

图6 用3种不同的符号表示多类别分类数据集中的类别

        现在我们有一个图6所示的训练集,共有3个类别,我们用三角形表示 y = 1 y=1 y=1 ,方框表示 y = 2 y=2 y=2,叉表示 y = 3 y=3 y=3。我们下面要做的就是使用一个训练集,将其分成3个二元分类问题。         我们先从用三角形代表的类别1开始,实际上我们可以创建一个新的"伪"训练集,类型2和类型3定为负类,类型1设定为正类,我们创建一个新的训练集,如图7所示,我们要拟合出一个合适的分类器。

图7 创建一个新的"伪"训练集( y = 1 y=1 y=1为正类)

        为了能实现这样的转变,我们将多个类别中的一个类标记为正类( y = 1 y=1 y=1),然后将其他所有类都标记为负类,这个模型记作 h θ ( 1 ) ( x ) h_{\theta }^{(1)}(x) hθ(1)(x)。接着,类似地第我们选择另一个类标记为正类( y = 2 y=2 y=2),再将其它类都标记为负类,将这个模型记作 h θ ( 2 ) ( x ) h_{\theta }^{(2)}(x) hθ(2)(x) ,依此类推。 最后我们得到一系列的模型简记为: h θ ( i ) ( x ) = p ( y = i ∣ x ; θ ) h_{\theta }^{(i)}(x)=p(y=i|x;\theta ) hθ(i)(x)=p(y=ix;θ) ,其中 i = 1 , 2 , . . . , k i=1,2,...,k i=1,2,...,k。         最后,在我们需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,都选择可能性最高的输出变量。         在分类时,我们要做的就是训练这个逻辑回归分类器 h θ ( i ) ( x ) h_{\theta }^{(i)}(x) hθ(i)(x), 其中 i i i对应每一个可能的 y = i y=i y=i。最后为了做出预测,我们给出输入一个新的 x x x值,用这个值做预测。我们要做的就是在我们三个分类器里面输入 x x x,然后我们选择一个让 h θ ( i ) ( x ) h_{\theta }^{(i)}(x) hθ(i)(x)最大的 i i i,即 max ⁡ i h θ ( i ) ( x ) \max_{i}h_{\theta }^{(i)}(x) imaxhθ(i)(x)

最新回复(0)