第三部分:逻辑回归

本文介绍了逻辑回归的应用,如垃圾邮件分类和肿瘤诊断,以及如何通过sigmoid函数解决分类问题。逻辑回归的判定边界通过sigmoid函数确定,代价函数因非线性导致非凸,故改用交叉熵损失函数进行优化。文章还探讨了梯度下降法在逻辑回归中的应用,并指出尽管形式类似,逻辑回归与线性回归的梯度下降本质上不同。最后提到了特征缩放的重要性。
摘要由CSDN通过智能技术生成

1.分类问题(Logistic Regression)

应用场景:预测的变量y是离散的值

应用举例:是否垃圾邮件;肿瘤分类;

 2.假说表示

问题:例如在肿瘤判断的模型中,出现一个尺寸较大的肿瘤的情况,如下图,就容易出现误判

解决方法:

模型定义:h_\theta(x)=g(\theta^TX)

引入s型(sigmoid)函数:g(Z)=\frac{1}{1+\varrho ^{-z}} 

        python定义方法:

import numpy as np
def sigmoid(z):
    return 1/(1+np.exp(-z))

        模型图像:

 3.判定边界

3.1逻辑回归里面:如上图

h_\theta (x)>= 0.5时,预测 𝑦 = 1

h_\theta (x)<0.55时,预测 𝑦 = 0

根据上面绘制出的 S 形函数图像,我们知道

当 𝑧 = 0 时 𝑔(𝑧) = 0.5 ,𝑧 > 0 时 𝑔(𝑧) > 0.5 ,𝑧 < 0 时 𝑔(𝑧) < 0.5

又 z=\theta^Tx ,即: \theta^Tx>=0 时,预测 𝑦 = 1 ,\theta^Tx<0时,预测 𝑦 = 0

3.2若模型为h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_2)

若 拟合结果是theta=[-3 1 1],则当x_1+x_2>=3时,模型预测为1

可以绘制直线x_1+x_2=3,作为判断边界,此时图形的边界拟合为

3.3h_\theta(x)=g(\theta_0+\theta1x_1+\theta_2x_2+\theta_3x_1^2+\theta_4x_2^2)这一类的假设,若\theta=[-1 0 0 1 1]判断边界为圆形

4.代价函数

问题:当我们采用传统的线性回归代价函数的时候,将sigmoid代入的时候,由于sigmiod本事是一个非线性函数,会发现代价函数变成一个非凸函数(non-convexfunction)。如左图,出现了我不少局部最小值,这很不利于我们的优化。

 解决方案:重新定义代价函数:

J(\theta)=\frac{1}{m}\sum ^m_{i=1}\frac{1}{2}(h_\theta(x^i)-y^i)^2\\Cost(h_\theta(x),y)=\left\{\begin{matrix} -log(h_\theta)),\ if\ y=1\\ -log(1-h_\theta(x)),\ if\ y=1 \end{matrix}\right.

此时:当实际的 𝑦 = 1 且ℎ𝜃 (𝑥)也为 1 时误差为 0, 当 𝑦 = 1 但ℎ𝜃 (𝑥)不为 1 时误差随着ℎ𝜃 (𝑥)变小而变大;当实际的 𝑦 = 0 且ℎ𝜃 (𝑥)也为 0 时 代价为 0,当𝑦 = 0 但ℎ𝜃 (𝑥)不为 0 时误差随着 ℎ𝜃 (𝑥)的变大而变大。

 简化:

Cost(h_\theta,y)=-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x)) \\in\ cost\ function:\\ \ J(\theta)=-\frac{1}{m}\sum^m_{i=1}[y^ilog(h_\theta(x^i))+(1-y^i)log(1-h_\theta(x^i))]

用numpy实现:

import numpy as np
def cost(theta,x,y)
    theta = np.matrix(theta)
    X = np.matrix(X)
    y = np.matrix(y)
    first = np.multipy(-y,np.log(sigmoid(X* theta.T)))
    second = np.multiply(1 - y),mp.log(1 - sigmoid(X* theta.T)))
return np.sum(first - second) / (len(X))

此时就可以重新使用梯度下降算法:

Repeat \\\{\ \theta_j:=\theta_j-\alpha\frac{\partial }{\partial\theta_j}\\ (simulataneously\ update\ all\ \theta_j\ ) \\ \}

求导后:

Repeat \\\{\ \theta_j:=\theta_j-\alpha\frac{1 }{m}\sum^m_{i=1}(h_\theta(x^i-y^i)x^i_j \\ (simulataneously\ update\ all\ \theta_j\ ) \\ \}

6.简化成本函数与梯度下降

简化代价函数:

 梯度下降算法:

want\ min_\theta: \\Repeat\{\\ \qquad \theta_j:=\theta_j-\alpha\frac{1}{m}\sum^m_{i=1}(h_\theta(x^i)-y^i)x^i_j\\ (simulataneously\ update\ all\ \theta_j)\\ \}

所以,计算后会得到等式:

\theta_j:=\theta_j-\alpha\frac{1}{m}\sum^m_{i=1}(h_\theta(x^i)-y^i)x^i_j

计算后会发现,这式子正是我们用来做线性回归梯度下降的。 但是因为本身假设定义发生了变化,所以线性回归与逻辑回归的梯度下降算法虽然在形式上相同,但是因为假设本身不一样,实际上他们为完全不同的两个东西。

 注:线性回归的特征缩放也可以用到逻辑回归中

6.高级优化

7.一对多

情况例子:

 解决:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值