机器学习(吴恩达)-4 处理分类问题的方法——逻辑回归

之前学习的几节内容都是讨论监督学习(supervised learning)下的回归问题,预测连续值的输出,而这节讨论如何处理分类问题,即如何预测离散值的输出情况。


1. 对分类问题作一个概括介绍

分类问题(classification problem):

给出一组训练集数据(x,y),对于y,有y∈{0,1},一般情况下0代表负类,1代表正类(如给出一组数据,x表示肿瘤大小,y表示经诊断肿瘤为良性/恶性肿瘤,则y=0表示良性肿瘤,y=1表示恶性肿瘤)。

另外,y∈{0,1}属于二分分类问题(binary classificationproblem),若y的取值超过两个,如y∈{0,1,2,3},则属于多类别分类问题(multi-class classification problem)。

本节主要内容为二分分类问题,最后会讲一点关于多类别的分类问题。


2. 是否可以使用线性回归方法处理分类问题?

现通过肿瘤问题的例子,来分析是否可以用线性回归方法:

假设现在有训练集中8个数据,分布如下图所示:

那么很直观的可以将假设函数设为一个一次线性函数h_\Theta (x),阈值为0.5:

h_\Theta (x)\geq 0.5,预测“y=1”(判断为恶性肿瘤)

h_\Theta (x)< 0.5,预测“y=0”(判断为良性肿瘤)

如果对目前训练集中增加一个新数据如下图所示:

那么仍可以使用一次线性函数作为假设函数,但是斜率会发生较大改变:

在阈值仍为0.5的情况下,通过假设函数预测出的肿瘤性质与实际肿瘤性质开始发生较大的偏差。并且,使用线性回归预测离散值时预测的结果很可能会与y的取值{0,1}差距较大。

 因此,使用线性回归处理分类问题并不是一个很好的方法。


3. 处理分类问题的方法——逻辑回归

(1)概念

逻辑回归是一种常用的处理分类问题的方法,逻辑回归的特点是预测的输出值常介于[0,1]区间内,并不会大于1或小于0,因此对于结果的判定非常合适。

逻辑回归模型:

假设函数范围:0\leq h_\Theta (x)\leq 1    ,其中假设函数定义:

 

h_\Theta (x)=g(\Theta ^Tx)   

g(z)=\frac{1}{1+e^{-z}}

g(z)曲线图:

假设函数\small h_\Theta (x)的含义:\small h_\Theta (x)值为输出结果是“y=1”的可能概率(介于0~1之间)。

 

举例:

根据肿瘤例子,我们可以知道特征x为肿瘤大小,\small h_\Theta (x)=g(\Theta ^Tx)

假设对于一组参数\small \Theta,代入某肿瘤大小值,根据计算得到\small h_\Theta (x)=0.7,那么函数的意义就是在这组参数\small \Theta下,此肿瘤有70%可能是恶性肿瘤。

所以根据概率论我们可以写成:\small h_\Theta (x)=P(y=1|x,\Theta )

\small P(y=1|x,\Theta )+P(y=0|x,\Theta )=1,可以得到y=0的概率为:\small P(y=0|x,\Theta )=1-P(y=1|x,\Theta )

(2)决策边界

根据对逻辑回归的介绍,我们已知

h_\Theta (x)=g(\Theta ^Tx)   

g(z)=\frac{1}{1+e^{-z}}

g(z)代入得:h_\Theta (x)=\frac{1}{1+e^{-\Theta ^Tx}}

而根据g(z)曲线图我们可以得到:

z\geq 0g(z)\geq 0.5

即:当\Theta ^Tx\geq 0,有h_\Theta (x)=g(\Theta ^Tx)\geq 0.5

由此我们可以得到关系:

\Theta ^Tx\geq 0 \, \, \, \, \rightarrow \, \, \, \, y=1

\Theta ^Tx< 0 \, \, \, \, \rightarrow \, \, \, \, y=0

因此通过假设函数判定y为0或1是通过\Theta ^Tx得结果为正/负得到得。我们来用一个简单的例子和图表现出来:

假设现在有一个训练集的数据,其中特征x有x1,x2组成,h_\Theta (x)=g(\Theta_0+\Theta_1x_1+\Theta_2x_2)

\Theta =\begin{bmatrix} -3\\ 1\\ 1\\ \end{bmatrix},则h_\Theta (x)=g(-3+x_1+x_2)

则当\Theta ^Tx=-3+x_1+x_2\geq 0时,预测结果y=1。将-3+x_1+x_2=0曲线画在坐标轴上,可以看出此曲线分别将两种数据划分到两边,这条线就叫做决策边界。

注意:决策边界并不是由训练集中数据决定的,而是由参数\Theta决定决策边界,当\Theta发生改变时,决策边界也会发生改变。将决策边界画出可以看出决策边界是否清晰的分割了数据的类别,体现出选取的\Theta是否合适。

(3)另给出一个关于决策边界的小例子

给出训练集数据的分布如下图,令假设函数h_\Theta (x)=g(\Theta_0+\Theta_1x_1+\Theta_2x_2+\Theta_3x_1^2+\Theta_4x_2^2),并赋值\Theta =\begin{bmatrix} -1\\ 0\\ 0\\ 1\\ 1 \end{bmatrix}

那么若-1+x_1^2+x_2^2\geq 0,则预测出y=1,将决策边界画出如图所示:

决策边界不一定是一条直线,根据数据的实际分类需要,决策边界曲线有各种各样的形式,只要能将数据划分在曲线的两边即可。


4. 逻辑回归中如何选取参数\Theta

(1)给出代价公式

训练集:\{(x^{1},y^{1}),(x^{2},y^{2}),...,(x^{m},y^{m})\}(共有m个样本数据)

x\in \begin{bmatrix} x_0\\ x_1\\ x_2\\ ...\\ x_m \end{bmatrix},其中x_0=1,y\in \{0,1\}

假设函数h_\Theta (x)=\frac{1}{1+e^{-\Theta ^Tx}}

根据之前学习的线性回归的经验,我们知道对于回归问题,使用线性回归方法时选取\small \Theta使用到了代价函数\small J(\Theta )

\small J(\Theta )=\frac{1}{m}\sum_{i=1}^{m}\frac{1}{2}(h_\Theta (x^{(i)})-y^{(i)})^2

令:\small Cost(h_\Theta (x),y)=\frac{1}{2}(h_\Theta (x)-y)^2

\small J(\Theta )简化为:\small J(\Theta )=\frac{1}{m}\sum_{i=1}^{m}Cost(h_\Theta (x),y)

那么能够将此代价函数公式照搬到分类问题中呢?答案是不能的。由于假设函数\small h_\Theta (x)的不同,若仍旧使用这个代价函数\small J(\Theta ),那么我们得到的\small J(\Theta )曲线图并不是弓形的,而是非弓形,非弓形曲线无法使用梯度下降算法找到全局最小值。

所以我们这里需要用到新的代价函数:

\small 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.

新的代价函数可以很好的体现出假设函数\small h_\Theta (x)是否合适,具体的代价函数曲线图如下:

 

   

左边图表示,当y=1时\small Cost(h_\Theta (x),y)=-log(h_\Theta (x)),从代价函数与\small h_\Theta (x)的关系曲线图可以看出当\small h_\Theta (x)越靠近1,代价函数值越小,即表示与实际情况越符合(因为y=1是实际结果,而\small h_\Theta (x)是根据假设函数推算出的结果);右图的含义相似,当y=0时\small Cost(h_\Theta (x),y)=-log(1-h_\Theta (x)),对应的代价函数C越小说明假设函数\small h_\Theta (x)选择的越合适。

另,当前的代价函数分为y=1和y=0两种情况的公式,可以将其简化为一个公式:

\small Cost(h_\Theta (x),y)=-ylog(h_\Theta (x))-(1-y)log(1-h_\Theta (x))

从而\small J(\Theta )=-\frac{1}{m}\sum_{i=1}^{m}(ylog(h_\Theta (x^{(i)}))+(1-y^{(i)})log(1-h_\Theta (x^{(i)})))

(2)算法描述

使用梯度下降算法,根据代价函数的值选择最适合的参数\small \Theta

\small Gradient \, \, descent

    \small \, \, want \, \, minJ(\Theta )

    \small Repeat\, \, \{​

        \small \Theta_j:=\Theta_j-\alpha \frac{\partial }{\partial \Theta_j}J(\Theta)

    \small \{​


 5. 高级优化算法

本小节介绍几个可以使逻辑回归运行更快、并且让算法适用范围更广(能够处理更多的特征数)的几个优化算法。

首先我们知道使用算法是为了算出最小的代价函数值,从而找到最合适的参数\small \Theta,因而我们主要的计算量在于\small J(\Theta )和偏导。那么除了梯度下降需要计算这两项外,下列的优化算法也通过计算代价函数的偏导来得到最小代价函数值,只不过其中计算的程序要比梯度下降复杂得多。

①Conjugate gradient

②BFGS

③L-BFGS

这些优化算法与梯度下降相比的优缺点:

优点:

①不需要去人工选择学习率\alpha(算法可自动选择);

②通常比梯度下降更快速。

缺点:

与梯度下降算法相比更加的复杂。


6. 多类别分类问题

上面讲的都是二分分类问题,y只有0和1两种取值,除此之外,y取两种以上值的分类问题叫做多类别分类问题。例如:

邮件按类型不同分类存放:工作(y=1),朋友(y=2),家庭(y=3),兴趣(y=4)

医疗诊断:没有生病(y=1),感冒(y=2),流感(y=3)

气候:阳光明媚的(y=1),多云的(y=2),雨天(y=3),下雪天(y=4)

以上都属于多类别分类问题,在分类中需要分出3~4个类别。

那么如何将多类别进行分类呢?通过下图举例说明:

上图中将统一类别的数据用一种符号代表,因此共有三种类别。

处理多类别的方式是:将其中两种类型看作一个类型,因此就变成了二分分类问题,便可以将第三种类别单独分离出来。若想把三种类别分别分离出来,需要处理三次二分分类。

例如,现在需要分离出class 1,把class 2和class 3看作统一类别,判断class 1为“y=1”,class 2和class 3为“y=0”。

分离class 2和class 3也是相同的方法,在此不过多叙述。

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

音无八重

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值