本文整理总结自<机器学习 - 线性回归、逻辑回归与正则化><逻辑回归与正则化><逻辑回归及正则化>

  1. 线性回归/逻辑回归/正则化 数学推导汇总
  2. 逻辑回归详细解释
  3. 逻辑回归场景下,正则化的应用
  4. 逻辑回归分类用于实践的一些点子

注:正则化作为一种数据预处理方法,即可用于线性回归,也可用于逻辑回归。于两种回归应用场景下,正则化的本质原则和实现过程都是一样的,没有区别。本文的第三小节,主要是讲逻辑回归场景下正则化的应用,<补充附录(7.1)数据预处理:正则化之直观理解、代码>则更多地是关于线性回归场景下的正则化。但会发现,没有太多不同。在此说明,避免误以为,正则化只能用于某种回归。

1. 线性回归/逻辑回归/正则化 数学推导汇总

线性回归(Linear Regression)

逻辑回归(Logistic Regression)

补充:逻辑回归用于分类问题。如果输出类别变量具有两个或更多个层级,则可以使用多项式逻辑回归。另一种用于两个或更多输出变量的常见技术是 OneVsAll(这里所述两种技术不太理解)。对于多类型逻辑回归,交叉熵损失函数被修改为

其中,K 是类别总数。更多逻辑回归的相关内容,可参考https://en.wikipedia.org/wiki/Logistic_regression。

正则化(Regularization)

2. 逻辑回归详细解释

Logistic Regression(逻辑回归)是一个受到广泛传播与应用的分类算法。这个算法的表达式是这样子的:

这个函数表达式被称为logistic function,也经常被称为sigmoid function。当

, 则
,那么
;当
, 则
,那么 b
;当
,
;当
,
。嗯,这个函数长这个样子的, 长得很像累计分布函数啊

发现了不,这个函数的值域为(0,1),而且分布很均匀,任何一个数据值投入到函数中的x中,都可以映射到(0,1),那么,我们可以将他们的值分为两类,当y>0.5时(即x>0),就属于“1”,当y<0.5时(即x<0),就属于“0”。

所以啊,结合之前我们学过的知识,对于二分类问题,我们可否利用逻辑回归对他们进行分类呢?

我们需要对原有的逻辑回归函数稍稍改造一下,如下哦:

此时,我们再令

在这里,就要提出一个新的概念了,Decision Boundary(决策边界),什么是决策边界呢?还记得前文脑洞大开的时候,想象有这么一条线可以将两类数据集分割开来吗?一端是属于“1”,一端是属于“0”。结合这个逻辑回归函数,我们是不是发现了什么呢?

嘿嘿,没错,这个

中的
其实就是这么一条线啦,所以,知道我们为什么要对它进行改造了吧,因为很多时候,这么一条线不可能是一条直线的,
能够适应更多的可能。嗯,这么说你可能难以理解的话,请看下面这几个图:

嗯,我们需要找到一条分割开圆和叉的线,什么线比较好呢?接着看哦:

嗯,完美,在这个圆圈之外属于叉,圆圈之内属于圆。那么这个边界呢?我们该怎么去定义呢?假设

,当
(省略号全是0),此时
。 这个式子
让你想到了什么呢?或者说是
,这是一个半径为1,圆心在原点的圆。没错,就是上图中那个分开两类图形的分界线。所以,我们简单分析下,当
,即
,当
,即
。回顾我们前文的假设:

当y>0.5时(即x>0),就属于“1”,当y<0.5时(即x<0),就属于“0”。所以,结合上图,我们相当于将圆圈外的叉标记为“1”,将圆圈内的圆标记为“0”而通过逻辑回归得到的值,我们可以将它看成是分类为“1”的概率,通过逻辑回归,则我们很轻易地将两类数据分类了(即我们可以把h(x)=0.5,也就是θX=0的时候,称为决策边界。假设y为结果,y的值是1或者0)。当然,关键是我们得找到他们之间的决策边界,上面这个例子的决策边界就是那个圆啊。

以上的例子是个比较简单的例子,对于更多更加复杂的分类,本质上我们都能找到一个不错的决策边界,不知道大家是否了解泰勒多项式,理论上,任何函数都可以用泰勒多项式进行拟合,而泰勒多项式也可以由

表示,所以,简单如上图中的决策边界,复杂如五角星或者我们一时看不出来的决策边界,都可以拟合出一个多项式函数。当我们找到了这个决策边界后,再利用logistic对之进行分类,就可以对两类数据集进行比较好的分类了。

所以,你有没有这么一个疑惑呢?生活中并非所有的问题都是非此即彼的问题啊,二分类毕竟是少数,大多时候,我们面临的是one-vs-all(一对多)的问题,那么,我们要分类的不仅仅是两种,而是多种。可是逻辑回归只能分出两类,如果我有三类,四类,十类甚至更多需要分类,那该怎么办呢?

别着急,接着看,咱们也可以静下来好好思考下。先别考虑10类甚至更多的,考虑最简单的多类——3类,如图:

对于这么三类(三角形,矩形,叉),该怎么分类呢?两两比较嘛?那另外一个咋办呢?嗯,别掉入牛角尖哦,看全局试试。我干嘛不这样比较呢?选中其中一类,其他的无论多少类,我都当作另一类,多简单哈。同理,对于每一类都这么想,就如下图:

那么,我们标记三角形,矩形,叉分别0,1,2。则,此时,y = {0,1,2},那么,对于以上的三个分类,我们可以对它进行分类概率的计算:

所以,我们可以比较这三个值,哪个值最大,就意味这它属于当前那一类的概率最大。那么,三类也可以推而广之,如果有n类,那么就是在这基础上。

这样,多类分类的情况也就解决了。

接着又回到了在前几篇文章中需要解决的问题了,

该怎么获得呢?还是利用梯度下降法,我们要获得其代价函数J,在前面的线性回归中,我们的代价函数是这样子的:

具体到本问题,因为y只有0和1两个取值,这里就可以分两种情况讨论,让y从函数中去掉:

y=0:

y=1:

然而我们发现,这样拿出来的函数,因为y一会儿是1,一会儿是0,得到的图像如下(左边的)然而左边的凹凸不平(非凸),不方便梯度下降。最好别这样,如果对于逻辑回归依然使用线性回归的代价函数,会导致梯度下降很难到达全局最优点,可能会得到局部优点,我们想要的是右边那种滑溜溜(凸)的图像:

反正我们要的是代价函数

符合决策边界的条件就可以了,反正都把结果四舍五入成1或者0了,也没必要非得是某个函数对吧?所以它是什么函数无所谓。只要(它的函数处理了x以后,得到的y)符合决策边界的条件即可。而现在我们希望得到一个滑溜溜的凸函数。那么我们就假设(注意,这是假设出来的,符合条件的函数之一,没说非得这样。然而这是已有的函数中最好的):
假设的代价函数之图像

由于y只有1和0两个值,所以我们就直接把两种情况的cost函数相加,然后分别乘以y和y-1变为一个式子,因其形式,此损失函数又称为交叉熵项

找到了代价函数J,其余的过程就和之前是一样的。

不断的repeat以下过程:

当然,此时的

3. 逻辑回归场景下,正则化的应用

嗯,以上的问题清晰后,接下来我们要学习一个很重要的概念,regularization(正则化),这是什么呢?别急,慢慢来说明。

前文我们说了分类中,找到了决策边界,就可以利用逻辑回归进行分类了,那么,自然的,我们该选择什么决策边界好呢?由前文我们也可以看出,决策边界取决于

。我们看看以下三种决策边界(g是logistic function):

它的决策边界是:

它的决策边界是:

它的决策边界是:

这里面哪个拟合得最好呢?当然是第三个了,几乎把所有的都完美区分开了,我们看看它的函数十分复杂,特征比另外两个都多。但是,第三个真的是最佳的吗?不是的。

这里再引入一个新概念:Overfitting(过拟合)。什么是过拟合呢?一个高阶多项式可能很好地拟合训练集,能够几乎拟合所有的训练数据,但这函数太过庞大,变量太多,如果没有足够多的数据去约束这个变量过多的模型,就是过拟合。通俗地讲,过拟合就是在训练集(已知数据)上表现非常好,但是对于未知的数据表现得非常糟糕。嗯,再通俗地讲,比如在图片识别中,识别大熊猫,正常特征是黑眼圈等,结果,对于已有数据,它把一些大熊猫的特征也算进去了,譬如耳朵上要有什么图案啊才是大熊猫,结果这么一来,对于训练的大熊猫图片当然可以非常好地表现,给一张新的大熊猫图片,它耳朵上没有那个图案,结果就被错误分类了。所以过拟合就是,训练集好,预测集糟糕。

所以啊,我们就得防止过拟合,如图二那样的,就表现得不错,图一拟合的不好,那叫欠拟合,解释啥的自己查哦,这儿不详细解释。

所以,如何防止过拟合呢?

  1. 减少特征,比如上图第二个,就比第三个少很多特征,函数表现上就简单多了。
  2. 正则化。

因为有的时候我们不知道减少什么特征比较好,以及我们也不希望减特征,特征越多,越能使得训练表现好嘛。正则化可以在不减少特征的情况上,保持一个好的表现。

怎么做到的呢?

简单地说,就是在代价函数后面加一个小尾巴惩罚项,比如在线性回归函数中:

,其中
称为惩罚项系数。小尾巴前面那项是我们原本的代价函数,现在加上了惩罚项后,我们要使得代价函数最小,则后面的小尾巴也必须要小,小尾巴小的话,那么
就不能太大,如果
很小的话,那么那个
所在的项就接近于0了,也就可以近似地看成没有了那个特征。

接下来进行梯度下降,不断地迭代以下过程

。至于逻辑回归的惩罚项,这儿就不再详细展开了,可以思考下哦~

当然了,正则化还不仅仅只有这么一个作用呢。还记得前面学过的正规方程法吗?它有一个很大的缺陷,就是如果矩阵是奇异矩阵的话,那么就不能使用了。

而加上个正则项后,那就是非奇艺的了,正规方程法就可以很好地使用了。

4. 逻辑回归分类用于实践的一些点子

如何根据已有的邮件数据(贴上了垃圾邮件与非垃圾邮件的标记),来判断未来的一封邮件是否是垃圾邮件呢?

以上的问题本质上是一个分类问题,而且是一个二元分类,通俗讲就是非此即彼。假设我们标记垃圾邮件为0,标记非垃圾邮件为1,邮件的一些特征我们也进行数值化,利用我们之前了解的特征缩放等将数据整理。那么,我们需要的是一个适合的算法,对原始数据训练出一个模型。这样,新的邮件数据,我们带入这个模型,根据返回的值,比如1,我们就可以判断其为非垃圾邮件了

正则不能全为某个值_TensorFlow学习Program1——补充附录(7)线性回归、逻辑回归与正则化...相关推荐

  1. 机器学习算法大汇总--线性回归、逻辑回归、正则化、神经网络、SVM、K-Means、PCA、集成学习等!

    本文很长~请耐心观看 另:本文主要用于本人的复习使用,欢迎大佬的指正和添加. 还有:本人也只是初出茅庐,希望大佬手下留情,谢谢!! 1.算法分类 机器学习算法分为: 有监督,无监督 两大阵营 1.有监 ...

  2. 深度学习笔记(3) 向量化逻辑回归

    深度学习笔记(3) 向量化逻辑回归 1. 向量化运算的优势 2. 向量化编程 3. 举例 1. 向量化运算的优势 python的向量化运算速度快,是非常基础的去除代码中for循环的艺术 可以看出相同的 ...

  3. 吴恩达深度学习 —— 2.18(选修)逻辑回归损失函数的解释

    回想一下,在逻辑回归中,需要预测的结果y^\hat{y}y^​可以表示为y^=σ(wTx+b)\hat{y}=\sigma(w^Tx+b)y^​=σ(wTx+b),其中σ(z)=11+e−z\sigm ...

  4. 吴恩达机器学习学习笔记第七章:逻辑回归

    分类Classification分为正类和负类 (规定谁是正谁是负无所谓) 吴恩达老师举例几个例子:判断邮箱是否是垃圾邮箱 一个在线交易是否是诈骗 一个肿瘤是良性的还是恶性 如果我们用之前学习的lin ...

  5. 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-逻辑回归与交叉熵概述-05

    线性回归预测的是一个连续值,逻辑回归给出的"是"和"否"的答案一个二元分类的问题. sigmoid函数是一个概率分布函数,给定某个输入,它将输出为一个概率值. ...

  6. 多元线性回归数据集_TensorFlow学习Program1——13.实现一元、多元线性回归(基于房价数据集)...

    本节将针对波士顿房价数据集的房间数量(RM)采用简单一元线性回归,目标是预测在最后一列(MEDV)给出的房价.波士顿房价数据集可从http://lib.stat.cmu.edu/datasets/bo ...

  7. 线性回归、逻辑回归-学习笔记整理

    线性回归 线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式. 只有一个自变量的情况称为单变量回归,多于一 ...

  8. 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码

    吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...

  9. CS229学习笔记(3)逻辑回归(Logistic Regression)

    1.分类问题 你要预测的变量yyy是离散的值,我们将学习一种叫做逻辑回归 (Logistic Regression) 的算法,这是目前最流行使用最广泛的一种学习算法. 从二元的分类问题开始讨论. 我们 ...

最新文章

  1. 企业信息化所面临的问题
  2. unique_ptr使用介绍
  3. 基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
  4. 浅谈Spring5 响应式编程
  5. unity怎么设置游戏页面_杭州有没有正规的unity游戏开发培训机构?
  6. react学习(57)--map赋值
  7. 十家全国学会就IEEE“审稿门”事件发表联合声明
  8. 使用 git pull 拉代码时提示:There is no tracking information for the current branch.
  9. react apollo_2020年的React + Apollo教程(真实示例)
  10. android8.0自适应图标,适配8.0+的自适应图标
  11. 705. 设计哈希集合
  12. 马云:眼光有多远 未来就有多远【2014世界互联网大会】
  13. android代码判断当前手机的手机号码是属于移动、联通、还是电信的
  14. JDK内置命令行工具
  15. Win10 WUP网易云应用出现网络异常
  16. IDEA显示树状目录结构
  17. 电脑ps计算机磨皮,用PS磨皮详解教程 -电脑资料
  18. Elastic开源社区:开发者招募
  19. springboot线程中获取bean
  20. 屏幕小于6英寸的手机_2019小屏手机有哪些 8款6英寸以下小屏全面屏手机推荐

热门文章

  1. CSS的alt:图片无法显示时候显示alt内容
  2. Linux之cmake3.6安装
  3. php异步检测用户名是否已经存在,AJAX实例-检测用户名是否存在
  4. linux alsa 录音程序,Linux下alsa直接录音代码
  5. 【若依(ruoyi)】验证码
  6. 【spring-session】store-type
  7. Linux 利用yum源安装subversion(svn)客户端
  8. Eclipse 打开文件出现乱码情况总结
  9. java.io.IOException No FileSystem for scheme hdfs
  10. mysql事件计划自动_逐步讲解MySQL中定时事件计划的创建