Task01 了解逻辑回归的理论
一、学习内容概括
学习地址:
1.阿里云天池-AI训练营机器学习:https://tianchi.aliyun.com/specials/promotion/aicampml?invite_channel=1&accounttraceid=7df048c2ce194081b514fd2c8e9a3f00cqmm
2.《吴恩达机器学习》视频课笔记by黄海广:http://www.ai-start.com/ml2014/
3.书:《机器学习》by周志华
二、具体学习内容
这里我会以“给别人讲述”的方式整理自己的学习思路。
1.当我们讨论机器学习时具体是在讨论什么?
机器学习主要的研究内容是“学习算法”。学习算法是从数据中产生模型的过程,模型可以实现我们的某些需求。即当我们有了学习算法,那给定一些经验数据,算法会基于数据产生模型,这部分就是所谓的“学习”or“训练”。之后,当给定一个新的数据时,模型会根据之前学习到的经验对这个新数据做出相应判断,这部分可以称之为“推理”or"预测”。
换言之,想“学习”,想从数据中学得模型,必须执行某种学习算法。今天要讲的逻辑回归就是一种很简单又很经典的模型,也称为一种学习算法,那到底什么是逻辑回归?为什么提出逻辑回归?逻辑回归又该如何实现呢?
2.什么是逻辑回归?为什么提出逻辑回归?(是什么、为什么)
学习主要有两种类型:监督学习和无监督学习。我们知道光有学习算法不行,必须喂给学习算法数据,那划分两种学习类型的依据就是看训练数据是否有标记信息,举个例子,带标记信息的数据指的是给你一张图,并告诉你这是一只猫,不带标记信息的数据就是直接给你一张图,什么也不说。
监督学习是我们先教计算机如何去完成任务,无监督学习是我们让它自己进行学习。说白了,监督学习就像是我们先手把手教给他如何解决问题,它学会了就可以自己解决新问题了,就像我们学习、考试。而非监督学习是我们给他一堆数据,我说你自己学吧,看看能看出什么规律。
监督学习里要解决的问题又主要分为两类:分类问题和回归问题。分类就是判断,好与坏、对与错、留与弃,以上这些涉及两个类别的叫二分类问题;如果有多个类别就是多分类问题,分类问题得到的结果信息是一个离散值比如0表示好或1表示坏。而回归得到的结果是一个连续值比如房租500、1000、1500等等。
记住监督学习的训练数据是有标记信息的,训练/学习一次,模型推理得到的结果信息就要与标记信息进行比较,如果结果信息与标记信息不一样,就调参数,继续训练,直至结果信息与标记信息相匹配。相当于一开始给你一个西瓜,并且告诉你这是个好瓜,这里的好瓜是标记信息,如果你的模型刚开始训练出来的结果信息说这是个坏瓜,那就是模型中的某些参数设置的不对,通过调整,直至结果也说这是个好瓜才算训练成功,然后继续丢下一个西瓜,继续训练。再举一个例子,你第一遍做题,得到的答案是A,但答案告诉你是C,于是你找错误的原因,扭转错误的思路,最终解出来确实是C,那这一题你才算会。这就是监督学习的学习模式。
总结一下,分类就是以监督学习的学习模式得到一个离散值的解,回归就是以监督学习的学习模式得到一个连续值的解。思及此,你可能要认为逻辑回归是解决回归问题的一种学习算法了,注意这里是个坑,是无论在哪里都会被重点提醒的坑---逻辑回归解决的其实是分类问题,至于为什么被称为回归,把它当成历史遗留问题就好了,不用在意~~~ 重申一遍,逻辑回归是分类算法,解决的是分类问题,所以它的标记信息是离散值。特别的,如果是二分类问题,离散值就取0或1。
最后总结一遍,逻辑回归是解决分类问题的一种学习算法,通过这种算法得到的模型称为逻辑回归模型。因为分类问题属于监督学习,所以学习的模式是监督学习模式---训练、比对、改错、训练、比对......
现在知道了逻辑回归是什么了,做什么的,那接下来的问题就是怎么做,怎么实现逻辑回归?怎么用逻辑回归解决分类问题?
3.如何实现逻辑回归?(怎么做?)之当我们谈一个学习算法的时候我们到底在谈些什么?
学习算法,解决问题的方法。逻辑回归算法,解决分类问题的方法。这个方法,就是学习算法的解决方案,就是数据产生的模型,形式就是一个函数,这个函数我们称之为假设函数h。具体来讲,训练集经过学习算法生成一个假设函数h,给h一个输入变量x,会得到我们想要的输出变量y,这个流程就是监督学习的学习模式。那接下来的问题就是在分类问题中,要用什么样的假设函数?
3.1 假设表示
首先我们提一个要求,想把分类器的输出值定在0和1之间,这样h(x)大于等于0.5时预测y=1,h(x)小于0.5时预测y=0,比较方便。那我们给定的假设函数就要满足这个性质,使输出变量始终落在0、1之间,引入的这个模型就是逻辑回归模型。逻辑回归的假设(函数)是: 其中:代表特征向量/输入向量,代表逻辑函数,是一个常用的S形函数(Sigmoid function),公式为: 。该函数的图像为:
的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1的可能性,即。例如,如果对于给定的,通过已经确定的参数计算得出,则表示有70%的几率为正向类,相应地为负向类的几率为1-0.7=0.3。
3.2 代价函数
知道了假设函数的形式,接下来就要为我们的假设函数,为我们的模型选择合适的参数,在介绍如何拟合参数之前,首先要知道拟合的目的是什么,只有知道我们要达到什么目标,才能知道为什么这么做。我们的目标是想要使模型曲线能更好地“覆盖”训练集并分类,模型所预测的值与训练集的实际值之间的差距称为建模误差,一般希望使建模误差的平方和最小,我们把这个优化目标也定义成一个函数,称为代价函数。
形式就是建模误差的平方和:,这里的是,我们目标就是调整使最小。但其实这里的是一个非凸函数(non-convexfunction),有很多局部最小解,不利于寻找全局最小值。图像如下:
因此我们要重新定义代价函数形式:,其中
3.3 梯度下降算法
在得到这样一个代价函数后,我们就可以拟合参数来使代价函数最小了,方法就是梯度下降算法。
先整体介绍梯度下降法的思想:开始时我们随机选择一个参数的组合,计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到得到一个局部最小值,因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值,选择不同的初始参数组合,可能会找到不同的局部最小值。可以从一个例子体会,想象一下你正站立在山的这一点上,站立在你想象的公园这座红色山上,在梯度下降算法中,我们要做的就是旋转360度,看看我们的周围,并问自己要在某个方向上,用小碎步尽快下山。这些小碎步需要朝什么方向?如果我们站在山坡上的这一点,你看一下周围,你会发现最佳的下山方向,你再看看周围,然后再一次想想,我应该从什么方向迈着小碎步下山?然后你按照自己的判断又迈出一步,重复上面的步骤,从这个新的点,你环顾四周,并决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点的位置。
批量梯度下降算法的公式为:
重复直到收敛{
(同步更新所有)
}
其中学习率,它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
知道了梯度下降法的原理,接下来我们要知道如何运用梯度下降法拟合出逻辑回归的参数。把求导后的代价函数代入梯度下降法的模板就得到以下公式:
当使用梯度下降法来实现逻辑回归时,我们可以使用 for循环来更新这些参数值,用 for i=1 to n
,或者 for i=1 to n+1
。当然,理想情况下,我们更提倡使用向量化的实现,可以把所有这些n个参数同时更新。
参数拟合好,使代价函数最小,模型能很好的拟合数据,就说我们就得到了一个训练好的逻辑回归模型,完成学习。
三、学习问题和解决方法记录
暂无
四、学习总结
1.本文主要是想理清一下逻辑回归的理论知识,从机器学习这个名词入手,然后搞懂什么是逻辑回归,逻辑回归是解决什么问题的,以及实现逻辑回归基本的流程。但因时间有限,无法面面俱到,其中或许还有错误,但是通过梳理,对逻辑回归的理论知识有了一个很好的复习巩固,总体来说还是很有意义的。
2.第一次用LaTex,简单易上手,不过本文没有全部用公式写,有的地方太繁琐直接从参考资料处截图了,后续有时间会修改。
3.本文没有涉及代码,纯理论知识,后续会补充python代码。
4.没有涉及数学推导,待学习待补充。