吴恩达机器学习——第7章 逻辑回归

概述

一看到这个驴唇不对马嘴的名字,就忍不住笑,明明是个分类算法,却非要命名为逻辑回归。这是个历史问题,是由于逻辑规则算法中的假设函数而来的,它的假设函数别名为“逻辑函数”。
逻辑回归是用来解决二分类问题的机器学习方法,用来评估某种事物的可能性。

名词解释

伯努利分布

这个名词非常好记:“不努力”。
伯努利分布又称“两点分布”或“0-1分布”,来源于伯努利实验。在做实验的时候,只有两种结果:成功、失败。假设成功的概率为p,则失败的概率就是1-p。
在这里插入图片描述

基本原理

逻辑回归是基于线性回归实现的,在线性回归的基础上增量了一个函数,从而增加了非线性的特性。

假设函数

线性回归的假设函数是 h θ ( x ) = θ T X h_θ(x)=θ^TX hθ(x)=θTX,逻辑回归在线性函数的基础上增加函数 g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1,得出逻辑回归的假设函数是:
h θ ( x ) = g ( θ T X ) = 1 1 + e − θ T X h_θ(x)=g(θ^TX)=\frac{1}{1+e^{-θ^TX}} hθ(x)=g(θTX)=1+eθTX1

为了方便理解,假设这是一个二分类问题,y的取值只能是0或1。
h θ ( x ) h_θ(x) hθ(x)就是针对指定x,y=1的概率,使用数学概率表示为: h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_θ(x)=P(y=1|x;θ) hθ(x)=P(y=1x;θ),意思是在限定x θ的情况下y=1的概率。
y=0的概率就是 P ( y = 0 ∣ x ; θ ) = 1 − P ( y = 1 ∣ x ; θ ) P(y=0|x;θ)=1-P(y=1|x;θ) P(y=0x;θ)=1P(y=1x;θ)

决策边界

g ( z ) g(z) g(z)函数的效果图如下所示:
在这里插入图片描述
当z趋近于无限大时,函数值无限趋近于1;当z趋近于无穷小时,函数值趋近于0;
当z=0时,函数值为0.5。
作为一个二分类问题,结果只能是0和1两种,所以我们做个假设:

  • g ( z ) > = 0.5 g(z)>=0.5 g(z)>=0.5时,结果y为1.也就是 z = θ T X > = 0 z=θ^TX>=0 z=θTX>=0
  • g ( z ) < 0.5 g(z)<0.5 g(z)<0.5时,结果y为0.也就是 z = θ T X < 0 z=θ^TX<0 z=θTX<0

基于以上的结论,我们可以对具体的逻辑回归案例进行分析,找出两个分类的临界点即决策边界。

线性的决策边界

假设逻辑回归的假设函数为 h θ ( x ) = g ( θ 0 + θ 1 ∗ x 1 + θ 2 ∗ x 2 ) h_θ(x)=g(θ_0+θ_1*x_1+θ_2*x_2) hθ(x)=g(θ0+θ1x1+θ2x2),θ取值是 [ − 3 1 1 ] \left[\begin{matrix}-3&1&1\end{matrix}\right] [311](参数的拟合过程老师没有给出,此处的目的是为了解释决策边界,而不是参数的拟合),根据上面的推导过程有以下的结论:

  • z = θ T X > = 0 z=θ^TX>=0 z=θTX>=0时,y=1,即 θ 0 + θ 1 ∗ x 1 + θ 2 ∗ x 2 > = 0 θ_0+θ_1*x_1+θ_2*x_2 >=0 θ0+θ1x1+θ2x2>=0,带入θ值,
    − 3 + x 1 + x 2 > = 0 -3+x_1+x_2 >=0 3+x1+x2>=0
    x 1 + x 2 > = 3 x_1+x_2 >=3 x1+x2>=3时,y=1
  • 同理当 z = θ T X < 0 z=θ^TX<0 z=θTX<0时,y=0,即 x 1 + x 2 < 3 x_1+x_2 <3 x1+x2<3时。
    在这里插入图片描述
    如上图所示,所有的元素以中间紫色的直线为界分为两部分,蓝色为y=0,红色的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 ] \left[\begin{matrix}-1&0&0&1&1\end{matrix}\right] [10011],根据上面的推导过程有以下的结论:

  • z = θ T X > = 0 z=θ^TX>=0 z=θTX>=0时,y=1,即 θ 0 + θ 1 ∗ x 1 + θ 2 ∗ x 2 + θ 3 ∗ x 1 2 + θ 4 ∗ x 2 2 > = 0 θ_0+θ_1*x_1+θ_2*x_2+θ_3*x_1^2+θ_4*x_2^2 >=0 θ0+θ1x1+θ2x2+θ3x12+θ4x22>=0,带入θ值,
    − 1 + x 1 2 + x 2 2 > = 0 -1+x_1^2+x_2^2>=0 1+x12+x22>=0
    x 1 2 + x 2 2 > = 1 x_1^2+x_2^2 >=1 x12+x22>=1时,y=1
  • 同理当 z = θ T X < 0 z=θ^TX<0 z=θTX<0时,y=0,即 x 1 2 + x 2 2 < 1 x_1^2+x_2^2 <1 x12+x22<1时。
    在这里插入图片描述
    对应的决策边界是个圆形。

不规则的决策边界

通过调整假设函数,可以得出不同的决策边界。
在这里插入图片描述

代价函数

代价函数是拟合参数的手段,回顾一下线性回归的代价函数为:
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 m ∑ i = 1 m 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ )=\frac{1}{2m}\sum_{i=1}^m(h_θ(x^{(i)})-y^{(i)})^2=\frac{1}{m}\sum_{i=1}^m\frac{1}{2}(h_θ(x^{(i)})-y^{(i)})^2 J(θ)=2m1i=1m(hθ(x(i))y(i))2=m1i=1m21(hθ(x(i))y(i))2
假设: c o s t ( h θ ( x ( i ) ) , y ( i ) ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 cost(h_θ(x^{(i)}), y^{(i)})=\frac{1}{2}(h_θ(x^{(i)})-y^{(i)})^2 cost(hθ(x(i)),y(i))=21(hθ(x(i))y(i))2
简化一下,去掉i c o s t ( h θ ( x ) , y ) = 1 2 ( h θ ( x ) − y ) 2 cost(h_θ(x), y)=\frac{1}{2}(h_θ(x)-y)^2 cost(hθ(x),y)=21(hθ(x)y)2
因为在逻辑回归中 h θ ( x ) = 1 1 + e − θ T X h_θ(x)=\frac{1}{1+e^{-θ^TX}} hθ(x)=1+eθTX1
则代入到 J ( θ ) J(θ) J(θ)中后画出的图形如下图所示,有很多局部优化点,这种图形称之为“非凸函数”,不利于进行梯度下降:在这里插入图片描述
下面给出逻辑回归的代价函数:
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_θ(x), y)= \left\{ \begin{aligned} -log(h_θ(x)) \qquad if \quad y = 1 \\ -log(1 - h_θ(x)) \qquad if \quad y = 0 \\ \end{aligned} \right\} cost(hθ(x),y)={log(hθ(x))ify=1log(1hθ(x))ify=0}
该公式等价于:
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)= \left\{ \begin{aligned} -y*log(h_θ(x)) -(1-y)log(1 - h_θ(x)) \end{aligned} \right\} cost(hθ(x),y)={ylog(hθ(x))(1y)log(1hθ(x))}

y=1的情况下,代价函数的图形如下所示,y轴代表代价函数的值,则当 h θ ( x ) h_θ(x) hθ(x)趋近于1时代价函数趋近于0,所以可知 h θ ( x ) = 1 h_θ(x)=1 hθ(x)=1时,y=1的概率最大:
在这里插入图片描述

y=0的情况下,代价函数的图形如下所示,y轴代表代价函数的值,则当 h θ ( x ) h_θ(x) hθ(x)趋近于0时代价函数趋近于0,所以可知 h θ ( x ) = 0 h_θ(x)=0 hθ(x)=0时,y=0的概率最大:
在这里插入图片描述
这与我们的推想是一致的,当预测值与实际值一致时,没有代价:

  • h θ ( x ) = 0 h_θ(x)=0 hθ(x)=0时,y=0的概率最大,代价为0;
  • h θ ( x ) = 1 h_θ(x)=1 hθ(x)=1时,y=1的概率最大,代价为0;

我们同样可以使用梯度下降法去求θ,梯度下降法可以参考线性回归中的描述。
梯度下降并不是唯一的算法,也可以使用conjugate gradiat、BFGS、L-BFGS算法计算,这些算法更加复杂也更加智能,计算速率也更快。

多类别分类算法

多类别分类问题,可以看成是多个二分类问题,假设现在y的取值范围变成了(1,2,3),可以定义以下3个假设函数:

  • h θ ( 1 ) ( x ) h^{(1)}_θ(x) hθ(1)(x),表示特定θX的情况下,y=1的概率:P(y=1|x;θ)
  • h θ ( 2 ) ( x ) h^{(2)}_θ(x) hθ(2)(x),表示特定θX的情况下,y=2的概率:P(y=2|x;θ)
  • h θ ( 3 ) ( x ) h^{(3)}_θ(x) hθ(3)(x),表示特定θX的情况下,y=3的概率:P(y=3|x;θ)

所以假设函数可以表示为: h θ ( i ) ( x ) = P ( y = i ∣ x ; θ ) h^{(i)}_θ(x)=P(y=i|x;θ) hθ(i)(x)=P(y=ix;θ)

所以判断x是什么类别,就是把x分别代入到3个公式中,取h最大的i作为最终的类别

示例

from sklearn.linear_model import LogisticRegression
import os
import pandas as pd
import numpy as np

# 要预测的结果字段
y_label = ['predclass']
# training_data 训练集,指标字段
x_label = [i for i in training_data.columns if i not in y_label]

lr = LogisticRegression(C=0.01, penalty='l1')

lr.fit(training_data[x_label], training_data[y_label])
# test_data是测试集,在测试集上测试一下效果
score = lr.score(test_data[x_label], test_data['predclass'])
# 速度比近邻要快得多
print("score", score)

参考

https://zhuanlan.zhihu.com/p/28408516

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值