机器学习入门系列三(关键词:逻辑回归,正则化)

目录(?)[+]

  1. 一逻辑回归

    1. 逻辑回归
    2. 假设表示
    3. 决策边界
    4. 代价函数
    5. 其他优化方法
    6. 多元分类
  2. 二正则化

一、逻辑回归

1.逻辑回归

什么是逻辑回归问题,通俗地讲就是监督下的分类问题。通过前面的学习,我们已经掌握如何解决线性(非线性)回归的问题。那面对分类问题我们是否也可以用线性回归呢?简单起见,我们先讨论二元分类,首先让我们来看一个例子,肿瘤的大小与是否是恶性的关系,其中红色的×表示肿瘤大小,对应的y轴表示是否为恶性。

我们对数据进行线性回归,得到了一条很完美的直线。我们可以规定,当拟合出来的y值大于0.5时,为恶性1;当y值小于0.5时,为良性0。这一切看起来似乎很合理,当我们增加一个数据,即有一个肿瘤非常大,显然它是恶性的,但是再用线性回归时,我们可以发现为了去更好地拟合,直线的斜率变低,0.5不再是恶性与良性的分界线。除了这个问题之外,我们知道y的可取值应该是[0,1],而采用线性回归我们发现y的可取值是[−∞,+∞]。这一系列的问题就促使我们希望寻求一个新的方法来解决分类问题。

2.假设表示

在线性回归问题中,我们定义了

hθ(x)=θTx(1)

在分类问题中,我们改变该函数,增加一个作用函数,即

hθ(x)=g(θTx)(2)

其中g(z)为sigmoid函数

g(z)=11+e−z(3)

那么把式(3)代入式(2),得

hθ(x)=11+e−θTx(4)

为什么要使用sigmoid函数?有一系列的数学原因,感兴趣的可以搜索广义线性模型,在这里就不阐述原因了。我们来直观地感受一下sigmoid函数,当z→−∞时,g→0;当z→+∞时,g→1。

下面我们对hθ(x)输出的结果做一个解释。由于它的取值范围,我们可以把它理解为概率。若hθ(x)=0.7,在二元分类(本例)中即表示肿瘤在输入变量x下为恶性(y=1)的概率为70%。由于是二元分类,y取值不是0就是1,因此肿瘤为良性(y=0)的概率为1−70%=30%。
由于sigmoid函数的性质,且hθ(x)∈(0,1),我们认为当hθ(x)≥0.5时,我们把数据x预测为类1即y=1;当hθ(x)<0.5时,我们把数据x预测为类0即y=0。因此当θTx≥0时,预测为类1;当θTx<0时,预测为类0。

3.决策边界

既然是分类问题,那么对于二分类,hθ(x)一定可以做出一个决策边界,当数据集在某一侧时预测为类1,在另一侧时预测为类0。为了更直观地理解,我们来看一个这样一个例子,训练集分为两类,其中红叉表示一类,蓝圈表示另一类。

对于

hθ(x)=g(θ0+θ1x1+θ2x2)(5)

假设我们得到的参数θ=[−311],此时决策边界为黑线所示。由sigmoid函数我们可知,当θ0+θ1x1+θ2x2≥0时,预测为类1,即为直线以上;当θ0+θ1x1+θ2x2<0时,预测为类0,即为直线以下。我们预先规定:红叉为类1,蓝圈为类0。
注:这里有人可能会有疑问,假如我们规定红叉为类0,蓝圈为类1,如果我们还是认为θTx≥0即取得直线上方的点为为类1,θTx<0即取得直线下方的点为类0,那岂不是会分错?学完本系列,我将给出答案,这也是我曾经学习ML时的困惑。

4.代价函数

在线性回归问题中,我们是这样定义代价函数的

J(θ)=12m∑i=1m(hθ(x(i))−y(i))2(6)

那我们可不可以用这个代价函数来解决逻辑回归?答案是否定的,因为hθ(x)中包含了一个非线性函数即sigmoid函数,这使得J(θ)不是凸函数,有很多局部最小值,很难通过梯度下降法或其他方法得到全局最优值。我们来看一下J(θ)的大致图像。

为了方便说明我们令

J(θ)=1m∑i=1mCost(hθ(x(i)),y)(7)

其中

Cost(hθ(x(i)),y)=12(hθ(x(i))−y(i))2(8)

现在我们该选择一个Cost(hθ(x(i)),y),使得它是凸函数。函数的选择方法和选择原因涉及到比较复杂的数学原理,例如最大熵原理,感兴趣的可以上网自行搜索,在这里就不详细介绍了。总之我们找到了这样的一个完美凸函数(只有全局最小值)。

Cost(hθ(x),y)={−log(hθ(x)),−log(1−hθ(x)),if y=1if y=0(9)

让我们来直观地感受一下。

我们可以看到,当预测的为hθ(x)=1且实际的类别也是y=1时,代价函数取值为0;而当预测的为hθ(x)=0且实际的类别是0,意味着分类完全错误时,代价函数是无穷大,这个错误无法容忍。由于sigmoid函数的作用,hθ(x)∈(0,1),因此不会出现代价函数无意义的情况。这是y=1的情况,当y=0时,正好相反,我们可以自行画出图像,在这里就不进行解释了。
为了能用梯度下降法或其他方法寻找最优θ,我们需要改变一下Cost(hθ(x),y)的形式,使之更方便计算,并代入到代价函数中即

J(θ)=−1m∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))](10)

下面要做的就是用梯度下降法最小化代价函数,重复对所有的θj同时进行更新,方法同线性回归一样。

θj=θj−α∂θjJ(θ)(11)

其中

∂θjJ(θ)=1m∑i=1m(hθ(x(i))−y(i))x(i)j(12)

感兴趣的可以自行推导上式(12),涉及偏导数最基本的知识。这么看起来逻辑回归代价函数的偏导数和线性回归代价函数的偏导数一致,其实不然,因为在线性回归中的hθ(x)为式(1),而逻辑回归中的为式(2),逻辑回归比线性回归多了一个sigmoid函数,这点切记!

5.其他优化方法

除了梯度下降法,还有共轭梯度法、BFGS、L-BFGS等等,这几种方法收敛速度快,不用选择步长α,但是非常复杂,很难理解。不过在matlab的库中存在这几种方法,我们可以通过函数fminunc自行调用,不过前提是计算好代价函数和梯度。在这里就不详细介绍了。

6.多元分类

让我们举一个例子更直观地进行描述。假如我们有数据集x,并且分为三类:1,2,3。训练时我们可以这样做,先把注意力集中在类1,于是当前的任务是把类别1与类别2、3进行分类;然后再把注意力集中在类2,于是当前的任务是把类别2与类别1、3进行分类;最后把注意力集中在类3,于是当前的任务是把类别3与类别1、2进行分类。这样就把多元分类问题转化为二元分类问题,各个击破。现在我们得到了三个分类器,三组θ。若给定一个未知类别的数据,通过计算hθj(x),对于第一个分类器(j=1),我们得到的是未知类别是类1的概率;对于第二个分类器(j=2),我们得到的是未知类别是类2的概率;对于第三个分类器(j=3),我们得到的是未知类别是类3的概率。比较这三个概率,哪个概率最大,当然位置数据就属于这个类别。

注:回到前文所示的那个问题。假如我们规定红叉为类0,蓝圈为类1,如果我们还是认为θTx≥0即取得直线上方的点为类1,θTx<0即取得直线下方的点为类0,那岂不是会分错?其实不然,当我们规定的类别相反时,分类器给出的θ也正好相反,因为是最小化代价函数,如果分类彻底分反,代价函数则取得极大值。而且最关键一点,对于二维来说,θTx≥0不代表一定是取得直线上方的点。因此当θ取反时,θTx亦取反,于是当θTx≥0时,取得的是类别1,而且是黑色的决策边界下方,符合。所以训练集类别的设定丝毫不会对结果产生影响,无论怎样对训练集设定类1还是类0,当θTx时,一定选择的是类1,一定符合训练集即是训练集标注的类别1。

二、正则化

首先我们来了解一下什么是欠拟合和过拟合。欠拟合,顾名思义,拟合的所用的参数过少,导致无法准确拟合训练数据,准确度比较低。而过拟合意味着所用的参数太多导致虽然可以非常准确地拟合训练集,但是无法进行泛化(generalization),即无法掌握训练集的规律。下图左1为欠拟合,右1为过拟合,中间的拟合是我们所需要的。

线性回归和逻辑回归等问题中,如果问题比较复杂,并且特征(参数)较多,我们很难去选择一个很好的参数数量去防止欠拟合和过拟合,这时就需要对我们的代价函数进行正则化(regularization),即在后面增加一个才”惩罚项”,当参数的值较大时代价函数较大,这样训练出来的模型会尽可能地使参数变小,即模型较为简单,避免出现过拟合。增加的一项为:

λ∑j=1nθ2j(13)

注意:λ≥0,而且在这里我们没有考虑偏置项θ0,因为偏置项与特征数的选取无关。

对于线性回归,我们修改它的代价函数如下:

J(θ)=12m∑i=1m(hθ(x(i))−y(i))2+λ2m∑j=1nθ2j(14)

我们可以看到如果训练集特征数较多时,当λ减小,”惩罚项”趋近于0,即出现过拟合现象。当λ增加,”惩罚项”增加,如果想要最小化代价函数就要使θ尽量小,即此时会出现欠拟合现象。
因此对于权值θ的更新也要进行相应的改变,同样对于θ0我们不进行正则化。

⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪θ0=θ0−α1m∑i=1m(hθ(x(i))−y(i))x(i)0θj=θj−α(1m∑i=1m(hθ(x(i))−y(i))x(i)1+λmθj)(y=1,2,3,⋯)(15)

线性回归中的正规方程,我们进行这样的改变:

θ=(XTX+λ⎡⎣⎢⎢⎢⎢⎢⎢⎢011⋱1⎤⎦⎥⎥⎥⎥⎥⎥⎥(n+1)×(n+1))−1XTy(16)

注:正规方程中进行正则化之后,经过严格的数学证明可以得知矩阵一定可逆!

对于逻辑回归,我们修改它的代价函数如下:

J(θ)=−1m∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+λ2m∑j=1nθ2j(17)

权值更新的式子与线性回归的式(15)一致,除了注意hθ(x)是要作用在sigmoid函数上。

机器学习入门系列三(关键词:逻辑回归,正则化)相关推荐

  1. 机器学习入门|快速掌握逻辑回归模型

    http://blog.itpub.net/29829936/viewspace-2558236/ 2019-01-14 17:30:19 主要内容: 一.逻辑回归的原理 二.极大似然估计 三.逻辑回 ...

  2. 机器学习笔记(三)---- 逻辑回归(二分类)

    逻辑回归基本概念 前面提到过线性模型也可以用来做分类任务,但线性模型的预测输出 y = wx + b 可能是(-∞,+∞)范围内的任意实数,而二分类任务的输出y={0,1},如何在这之间做转换呢?答案 ...

  3. 逻辑回归阈值_机器学习入门(2)-逻辑回归

    1.什么是逻辑回归 逻辑回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域.逻辑回归分本质不是回归算法,而是分类算法.逻辑回归本质上是运用二分 ...

  4. (视频+图文)机器学习入门系列-第3章 逻辑回归

    机器学习入门系列,黄海广老师主讲.本站将持续更新,ppt.代码.课后习题见文末. 本系列的目录 01.引言 02.回归 03.逻辑回归 04.朴素贝叶斯 05.机器学习实践 06.机器学习库Sciki ...

  5. 机器学习之数学系列(三)逻辑回归反向传播梯度计算公式推导

    一.简介   在深度学习领域,我们往往采用梯度下降(或上升)法来优化训练函数模型,梯度下降法尤其是在解决凸优化问题上表现极佳.模型优化涉及到反向传播过程,反向传播过程需要先推导出梯度计算公式然后利用机 ...

  6. 机器学习入门系列四(关键词:BP神经网络)

    机器学习入门系列四(关键词:BP神经网络) 标签: 机器学习神经网络 2016-01-12 15:28 80人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: 机器学习(3) 作者同类文章X 版 ...

  7. 机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程

    机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程) 目录(?)[+] 一多变量的线性回归 二批处理 三特征缩放 四正规方程 五多变量非线性回归 一.多变量的线性回归 在#机 ...

  8. 机器学习系列(1)_逻辑回归初步

    转载自: 机器学习系列(1)_逻辑回归初步 - 寒小阳 - 博客频道 - CSDN.NET http://blog.csdn.net/han_xiaoyang/article/details/4912 ...

  9. 机器学习入门系列一(关键词:单变量线性回归,梯度下降法)

    机器学习入门系列一(关键词:单变量线性回归,梯度下降法) 如上图所示,我们的目标是希望通过这些数据得到城市人口数和利润可能的对应关系,并可以通过城市人口数(利润)来预测它的利润(城市人口数),在这里我 ...

最新文章

  1. java 生成二维码 QRCode、zxing 两种方式
  2. dataframe 转rdd java,在pyspark中将RDD转换为Dataframe
  3. 用了ReSharpe硬是爽
  4. C\C++ 交换两个变量的方法
  5. 【硬件】集线器,交换机,路由器
  6. readonly和const的区别
  7. python中range语法
  8. 应试教育下的三大群体
  9. html消息发送接收,在html页面中 如何应用mqtt协议发送/接收消息
  10. 圣诞快乐(祝福的话和音乐盒)
  11. 常用针织实用技术名词
  12. 三菱modbusRTU通讯实例_编程实例 | 台达PLC控制伺服项目接线及程序案例
  13. html手机表白弹窗,怎么制作抖音弹窗表白代码 制作抖音弹窗表白代码的教程
  14. vscode里使用正则表达式
  15. 金融行业认同的七本书
  16. 拭血长短句手札【2013-2017】微信公众号 shixuemp
  17. Python实现王者农药自动刷金币
  18. 【从零开始学习深度学习】34. Pytorch-RNN项目实战:RNN创作歌词案例--使用周杰伦专辑歌词训练模型并创作歌曲【含数据集与源码】
  19. 推荐一个小日本做的网站,超强震撼,创意绝对棒,真牛
  20. 机器学习之GD、SGD

热门文章

  1. html 下拉框字体,怎么把select下拉菜单里的文字设置成左右滚动效果
  2. iis占用服务器内存,W3wp.exe 进程占用内存高消耗CPU近100%导致网站反应速度缓慢的解决方案...
  3. matlab计算电路环流,双反星形整流电路并联运行环流分析
  4. 微型计算机的典型应用场景,单片机有哪些类型和应用场景?-MCU解决方案
  5. 计算机管理学科,计算机学院学科经费使用与管理细则(试行)
  6. 根据网络状态获取Ip地址
  7. 卷积神经网络(CNN)模型结构
  8. python function函数_Python34-06-函数(function)
  9. np.expand_dims()介绍
  10. 第4章 最基础的分类算法-k近邻算法