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

Logistic回归是一种广义的线性回归分析模型。它是一种分类方法,可以适用于二分类问题,也可以适用于多分类问题,但是二分类的更为常用,也更加容易解释。实际中最为常用的就是二分类的logistic回归,常用于数据挖掘,疾病自动诊断,经济预测等领域。

用于两分类问题。其基本思想为:
a. 寻找合适的假设函数,即分类函数,用以预测输入数据的判断结果;
b. 构造代价函数,即损失函数,用以表示预测的输出结果与训练数据的实际类别之间的偏差;
c. 最小化代价函数,从而获取最优的模型参数。

1. 分类问题

我们讨论的是要预测的变量y是一个离散情况下的分类问题。
分类问题中,我们尝试预测的是结果是否属于某一个类。分类问题的例子有:判断一封电子邮件是否是垃圾邮件; 判断一次金融交易是否是欺计;判断一个肿瘤是恶性的还是良性的。
我们预测的变量 y ∈ { 0 , 1 } y \in\{0,1\} 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\left(\theta^{T} X\right) 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, 函数图象如下图所示。

在这里插入图片描述

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 \mid x ; \theta) hθ(x)=P(y=1x;θ), 所以有 P ( y = 0 ∣ x ; θ ) + P ( y = P(y=0 \mid x ; \theta)+P(y= P(y=0x;θ)+P(y= 1 ∣ x ; θ ) = 1 1 \mid x ; \theta)=1 1x;θ)=1

3. 决策边界

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

在这里插入图片描述

下图为非线性决策边界的例子,其中参数 0 为向量[-1 0 0 1 1], 则当 − 1 + x 1 2 + x 2 2 ⩾ 0 -1+x_{1}^{2}+x_{2}^{2} \geqslant 0 1+x12+x220, 即 x 1 2 + x 2 2 ⩾ 1 x_{1}^{2}+x_{2}^{2} \geqslant 1 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的区域分隔开。
在这里插入图片描述

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

4. 代价函数

定义Logistic回归的代价函数为:

J ( θ ) = 1 m ∑ i = 1 m Cost ⁡ ( h θ ( x ( i ) ) , y ( i ) ) J(\theta)=\frac{1}{m} \sum_{i=1}^{m} \operatorname{Cost}\left(h_{\theta}\left(x^{(i)}\right), y^{(i)}\right) J(θ)=m1i=1mCost(hθ(x(i)),y(i))

其中
Cost ⁡ ( h θ ( x ) , y ) = { − log ⁡ ( h θ ( x ) ) ,  if  y = 1 − log ⁡ ( 1 − h θ ( x ) ) ,  if  y = 0 \operatorname{Cost}\left(h_{\theta}(x), y\right)=\left\{\begin{array}{ll}-\log \left(h_{\theta}(x)\right), & \text { if } y=1 \\ -\log \left(1-h_{\theta}(x)\right), & \text { if } y=0\end{array}\right. Cost(hθ(x),y)={log(hθ(x)),log(1hθ(x)), if y=1 if y=0

h θ ( x ) h_{\theta}(x) hθ(x) Cost ⁡ ( h θ ( x ) , y ) \operatorname{Cost}\left(h_{\theta}(x), y\right) Cost(hθ(x),y) 之间的关系如下图所示。
在这里插入图片描述

Cost ⁡ ( h θ ( x ) , y ) \operatorname{Cost}\left(h_{\theta}(x), y\right) Cost(hθ(x),y) 函数的特点是:
如上图 a)所示,当实际的 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) 变大而变大;
如上图 b)所示,当实际的 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) 变小而变大。
Cost ⁡ ( h θ ( x ) , y ) \operatorname{Cost}\left(h_{\theta}(x), y\right) Cost(hθ(x),y) 函数也可以写成如下的式子:
Cost ⁡ ( h θ ( x ) , y ) = − y × log ⁡ ( h θ ( x ) ) − ( 1 − y ) × log ⁡ ( 1 − h θ ( x ) ) \operatorname{Cost}\left(h_{\theta}(x), y\right)=-y \times \log \left(h_{\theta}(x)\right)-(1-y) \times \log \left(1-h_{\theta}(x)\right) Cost(hθ(x),y)=y×log(hθ(x))(1y)×log(1hθ(x))
那么 Logisitic回归的代价函数为
J ( θ ) = 1 m ∑ i = 1 m Cost ⁡ ( h θ ( x ( i ) ) , y ( i ) ) = − 1 m ∑ i = 1 m [ y ( i ) × log ⁡ ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) × log ⁡ ( 1 − h θ ( x ( i ) ) ) ] J(\theta)=\frac{1}{m} \sum_{i=1}^{m} \operatorname{Cost}\left(h_{\theta}\left(x^{(i)}\right), y^{(i)}\right)=-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \times \log \left(h_{\theta}\left(x^{(i)}\right)\right)+\left(1-y^{(i)}\right) \times \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right] 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 θ, 所用的方法是梯度下降法
梯度下降法的实现
 Repeat  { θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) }  (Simultaneously update all  θ j ) \text { Repeat } \left.\left\{\theta_{j}:=\theta_{j}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)}\right\} \quad \text { (Simultaneously update all } \theta_{j}\right)  Repeat {θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)} (Simultaneously update all θj)

6. 高级优化

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

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

7. 多类别分类

如何使用 Logisitic回归来解决多类别分类的问题。
对于一个多类分类问题,我们的数据集看起来可能会像下图 b)所示,而下图 a)是我们之前讨论的二元分类问题的数据集。
在这里插入图片描述
我们用3种不同的符号来代表3个类别,可以使用"一对多"方法来进行分类。
现在我们有一个下图所示的训练集,共有3个类别,我们用三角形表示 y y y=1,方框表示 y y y= 2,叉表示 y y y = 3。我们下面要做的就是使用一个训练集,将其分成3个二元分类问题。
我们先从用三角形代表的类别1开始,实际上我们可以创建一个新的"伪"训练集,类型2和类型3定为负类,类型1设定为正类,我们创建一个新的训练集,如图7所示,我们要拟合出一个合适的分类器。
在这里插入图片描述
为了能实现这样的转变, 我们将多个类别中的一个类标记为正类 ( 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 \mid x ; \theta) hθ(i)(x)=p(y=ix;θ), 其中 i = 1 , 2 , … , k i=1,2, \ldots, k i=1,2,,k

最后,在我们需要做预测时,我们将所有的分类机都运行一遍, 然后对每一个输入变量,都选择可能性最高的输出变量。 在分类时,我们要做的就是训练这个逻辑回归分类器 h θ ( i ) ( x ) h_{\theta}^{(i)}(x) hθ(i)(x), 其中对应每一个可能的 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 ⁡ h θ ( i ) ( x ) \max h_{\theta}^{(i)}(x) maxhθ(i)(x)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值