00:00
接下来再给大家讲另外一种分类方式,找罗辑斯蒂回归,那首先大家想到一听这个名字啊,他回归,那那它应该是处理这个连续问题的呀,呃,线性回归对吧?罗辑斯蒂回归听起来都是回归啊,那它怎么又变成了分类呢?好,那我们首先想一下线性回归,我们这里假如说有一个具体的问题之前,我们用线性回归去拟和这个学习时间和学习效果得到分数的这个关系的时候,你和还不错,对吧,看起来还凑合,那我现我们现在再提一个新的问题啊,比方说我这里边的数据是什么呢?数据是知道一堆肿瘤的大小。然后还知道它是否是恶性肿瘤。接下来我需要找到一个规律,根据这样的一个规律,或者叫模型去预测,我接下来再输入一个数据,知道它大小,这个肿瘤有多大,然后你判断一下它到底是恶性的还是良性的。
01:07
哎,大家想一下,我们用线性回归可以解决这个问题吗?其实可以的,大家看一下怎么解决呢,我这里边是不是就。已知的这些点,我就拟合了一条曲线,一条直线啊,大家看这是不是到这条直线它距离会最近啊,哎,这个按照平方误差算出来,拟合了这样一条直线,这条直线大家从直观上来讲代表什么含义呢?是不是它默认就是肿瘤越大?月应该是恶性对不对?呃,那大家其实可以判断,我现在如果再来一个肿瘤的大小,那它到底应该是恶性还是良性呢?看到那大家可能就会想到,那我就看你到底有多大了,对不对,你如果在这个位置一取,哎,这个值比较小,那我是不是认为它更接近于零的话,我就认为它是良性这一类不是恶性对不对?如果你这个取值这个size很大,那么到这儿它接近于一或者都超过一了,我是不是就认为你这是一个恶性肿瘤啊,诶这是不是就是一个可以用线性回归去做分类的一个一个一个过程啊。
02:22
没问题,对不对,但是大家想一想他有什么毛病吗?对,大家会想到你特别小的和特别大的这两类还比较好分,那中间这部分呢,这个就不太好分了,对不对?当然我们可以大家会想到你这里面是否良性,是否恶性,我可以定义零到一,就是如果是良性就是零,大家看到这个取值是不是良性就是零,恶性就是一啊,它就是一个012元的一个取值,离散的一个取值,我是不是可以定义,比方说中间值0.5是不是可以啊,0.5这里取一个,那么我就对应的这个值,你你就拿过来一个这个大小,我就带到这一个直线里边去看,它得到的那个值比0.5大还是小,对不对?如果比0.5大,我认为它就是恶性,比0.5小啊,那就是良性对不对,诶这个分类好像也可以对吧。
03:22
啊,那来说他会不会有什么问题。首先它有一个问题,大家其实直观的就能想到啊,直线这个表达它的这个变化过程是不是非常的均匀啊,也就是说随着这个它这个大小的增大,应该是变成恶性的概率应该是逐步上升一点一点增加的,对不对,但是在实际的这个分类过程当中,其实不是好,好像看起来它其实是中间应该有一个有一个对断崖式的变化对不对,它最好的分类方式,其实我们不应该用一条直线去拟合,它应该是怎么样呢?应该是之前大概都是零,都是零,到中间某个值应该是是不是应该急速上升啊,急速上升,然后它很很快就变成了恶性的,然后之后大于这个数据都是恶性的,那这个就是有点像我们那个接跃图像那种跳变的那种图像,对不对啊,就像方波一样的那种图像,那种情况可能才是我们想要的一个曲线啊,这个直线显。
04:29
显然是不太合适的表达,它中间这一部分变化是不太合适的。另外线性回归还有一个问题,大家再看下面这个图,大家会看到我们刚才的数据样本点是集中在啊,这里零,这里有一部分,这里一有一部分对不对?那假如我们还有一些异常,呃,这里其实不能叫异常点,这应该是正常的点,对不对?很大的肿瘤它就是恶性的,没问题,对吧?那大家会看到,如果有这样的一些点的话,我们拟合出来的曲线是不是很快就朝着这边去倾斜了。
05:07
那大家会想到你如果还按照之前0.5的这个判定的话,这个还靠谱吗?看这里的,如果我们朝着这边去倾斜的话,0.5是不是就会朝着我们这个比较大的这个方向偏移了很多啊,那其实就是说本来。我们应该按照这个大小,已经是一个恶性肿瘤了,我们还认为它在0.5以下,对吧?呃,那那所以我们还还以为他还是良性的呢,这个分类显然就不太靠谱了,对不对?所以线性回归它的健壮性是不够的,我们这里还只是有一些这个偏差比较大的点,如果再有一些异常噪声点的话,Outlier对吧?异常点的话,那其实这个线性回归出来的效果就会非常非常差,所以大家会想到,如果说线性回归做这样的问题已经不太合适的话,那我们是不是应该用别的一些方式去做这样的一个分类问题了,对不对?所以大家会看到啊,我们要解决这样的分类问题的话。
06:11
其实是不是可以不要用一条直线,我们可以用各种各样的曲线找到两类样本点的一个分类边界啊,哎,所以我们现在其实是想要做这样的一个事情,在前面的这个肿瘤的问题里边,它的边界其实就应该是在这里的这个跳变这个函数对不对,它就应该从这里去划分。所以我们现在。把这个分类问题就转变成了找到一条分类边界曲线的这样一个问题,所以大家会想到你找这样一条曲线的话,这是不是又变成了一个曲线拟合,是不是又像一个回归问题了呀?诶,所以这就是为什么我们这里给大家讲解的这一个方法啊,这个模型叫做逻辑斯蒂回归,它就是用回归的方式要找到这个曲线。
07:01
然后呢,最后这个曲线是作为分类边界去去做分类问题的,呃,当然了,这个分类边界有可能是这样不规则的一条曲线,它甚至还有可能是一个圆,对不对,我们是不是有可能有这样的分类啊,这个圆里边的是一类,外边的是一类,对不对,还有可能是什么呢?啊,这种非常不规则的各种五花八门的边界,一组曲线构成的一个边界,这都是有可能的,所以这一类更复杂的问题。在分类的过程当中,我们就用逻辑回归来处理,那大家会想到它比KNN有什么好处,有什么优势。KNN的问题在于,如果说它这两类区分,它有明确的分类边界的话,那是不是你在内部去找一个点的话,KN分的很好对不对,如果在接近边界的这个位置,你去分类的话,这个是不是就很不靠谱了呀,对吧,这个而且K的影响就会很大很大,所以。
08:06
我们对于这样的问题就干脆去想,要找到一条曲线去拟合它的边界就好了,这就是我们提出的逻辑斯地回归的一个问题,呃,那这里大家其实也能够想到啊,就是说为什么把它叫做罗辑斯蒂回归呢?罗辑斯D这个本身它的英文就叫logistic,那其实就是罗辑那个词对不对啊,就是逻辑那个词,所以它从概念上来讲它是什么?就是逻辑上它是个回归对不对,也就是说实际上它是个分类对不对,实际上解决的是分类问题,但是逻辑上它确实是用了回归的方式去找了一条曲线做分类的啊,所以它就是跟回归和分类都有一点关系,最终划分还是去解决分类问题的。接下来呃,就又是跟数学会相关了啊,大家会想我们这个罗辑斯蒂回归,在介绍这个罗辑斯蒂回归之前,他怎么去找这个分类边界呢?我们先给大家介绍一个函数,这个函数在呃机器学习里边也是非常有名啊,叫做S贸易的函数,有些地方把它叫做压缩函数,呃,这个不用多说,我们直接把这个函数的表达式给大家写出来,它是一个什么样的表达式呢?大家看到里边是不是?哎,这是什么?这是指数还是对数?E的负Z次方,这个是指数函数对吧?大家回忆一下啊,Log那个叫对数对不对?它反过来求log的那个叫对数函数,好回忆一下,那大家想一下,它的这个表达式稍微有点有点绕是什么呢?哎,这里的自变量是定义了一个Z,不是X了啊,大家看自变量是不是Z啊Z它。
09:51
E的负四次方。那么大家想象一下,大家回忆一下啊,这里我把这个指数函数的函数图像是不是列出来了,大家回忆一下指数函数A的X次方,它的函数图像是不是跟A有关系啊,A如果大于一的话,是不是单调递增,如果大于零小于一的话,是不是单调递减啊,而且它一定过一个点,哪个点呢?零,一,因为如果X取零的话,任何数的零次方是不是都是一啊,哎,所以它的取值永远都是大于零的,所以它是这样的一个函数,那么这里EE是什么来着?对,E是我们所说的这个自然常数对不对啊,对吧?啊,就是2.718,呃,多少多少这样这样的一个参数,这样的一个常用的参数,那么它应该是大于一,对不对,所以E的如果是E的X次方,它应该是单调递增对吧。
10:55
E的负类次方的负加一个负数,那是不是就这个指数项的负数负号负一是不是相当于就是分之一啊,那是不是就是反过来了单调递减了对不对?好,再加上一整个分母是不是单调递减啊,随着Z增大减小,然后再求一个倒数,诶是不是又变成单调递增了?哎,所以大家看一下它最后的图像是这样的一个图像,诶,那为什么它又叫做压缩函数呢?那我们就要看它的最大最小值了,对吧?我们看一眼啊,它既然单调递增,那这个Z的取值范围是不是负无穷到正无穷都可以取啊,这个没毛呃,没有约束,没有要求对吧?那是不是在负无穷的地方取到最小值,正无穷的地方取到最大值啊好,负无穷的时候大家想一想是什么?Z是负无穷,负号填上是不是?
11:55
正无穷了,E的正无穷次,那是不是肯定就无穷大对不对,分母无穷大,哎分之一是不是就趋近于零了,哎,所以大家会想到他在这个啊,当然这里夸张了一点啊,就直接在这里就看看起来已经跟零差不多了,就是大家会想到趋近于零的时候,是不是就逐渐趋近于我们这个X轴接近于零了呀,那么最大它能取到什么呢?
12:25
是不是正无穷的时候,E的负无穷次,E的负无穷次是不是趋近于零了,那么分母这里就趋近于是不是一呀,然后分之一是不是趋近于一诶,所以大家看它的变化单调递增,然后负无穷的时候趋近于零,正无穷的时候趋近于一,画出来是不是就是这样的一个图形啊,那大家看它其实是不是把负无穷到正无穷的一个变化的自变量压缩到了零到一之间啊,那是不是函数图像压回来了,诶,所以这就是我们的这样一个压缩函数的一个定义,那大家会想到它有什么好处呢?
13:11
它的好处在于大家想啊,这个尽管看的还不是很明显,但是它的好处是不是在于在比较小的时候,它就都大概是零,然后变大,变大接近于零,这里的时候它是不会突然就开始增大啊,增大增大增大,然后0.5是一个分界值,对吧,然后之上是不是就又开始增大,开始减缓,减缓,减缓之后是不是越越大的时候就会越来越趋近于一啊,这个是不是根据我们前面那个肿瘤的那个区分,是不是很很容易想到用这样的一个图像。去划分它的两类,是不是比一条直线会更好啊?哎,所以这大家就会想到了,把一条直线负无穷到正无穷的这条直线这么一压,然后它中间这部分变化率是不是也会增大,诶,这刚好就符合我们中间有一个接阅,有一个快速变化的过程,符合我们这样的一个需要,所以我们之前的那个问题就可以用这样的一个函数来做它的分类函数了,对不对啊,那这个分类函数怎么去取呢?那是不是就是哦,大于0.51类,小于0.5是不是另外一类啊,大于0.5是恶性的,小于0.5是良性的,那大家这个就会想到,你如果这个时候再去给一堆那个异常点的话,对我有影响吗?
14:42
其实影响不大对不对,因为你多大的异常点来了之后,我这里是不是都已经趋近于一了呀,所以其实它是差不多的,所以这个时候比线性回归虚拟和我们刚才那个问题显然就要好得多了。好,这是s Mo函数,我们接下来再给大家看一看这个S贸易函数的一些应用场景,那除了刚才我们说的这样的一个零一这样的一个分类,它还可以怎么分呢?比如说这里我们有这样一组样本点,大家其实直观的就能看出来是不是分了两类,呃,这个分成两类是已经定好的,对吧?这是已经数据里面都都知道的,这个它的坐标代表的是X,它的类别是不是我们这里是用不同的形状颜色来表示的啊,红叉是一类,蓝圆圈是一类,大家看一下它的分类边界是不是很明显啊,是不是应该大家看大概就是这样的一条直线,把它划分开就可以了呀,那大家想想一下,我们这里如果要用S里的函数。
15:42
去对它做一个划分,怎么划分呢。诶,我们可以定义这样的一个模型,什么模型呢?HC和X对不对,这是我们的模型,它的这个模型外层是一个J,那J是什么,是不是就是我们上面一页给大家讲到这个贸易函数,压缩函数对吧?那这里边本来我们定义它的自变量是Z,但是这里我们的自变量是不是应该变成了X啊,X有两个维度,X1X2对吧。
16:14
这两个维度大家看,把这么一个表达式替换成Z,就会出现一个什么样的状态呢?那大家看这个表达式它代表一个什么东西,这是不是如果把它看成一个Y等于FX的话,这是不是就相当于是一个二元的一个函数啊,而且是一个线性的函数对不对?它是不是空间里边一条直线,如果划分就是带着Y去做的话,那这是空间里边一条直线,如果我们直接让它等于零的话,大家想一下。这是不是就变成了平面里面的一条直线啊?我们这个轴是X1,这个轴是X2的话,是不是我们用它等于零就可以把X1X2的关系拟合出来?
17:09
哎,所以大家看啊,假如这里边我们取一下西塔零是负三,西塔一是一,西塔二是一。我们是不是就可以让它等于零,是不是得到了一条直线?大家看是不是这条直线啊啊,大家直观的一看,这是不是截距都是三啊,对吧?X1是三的时候X2是零,X2是三的时候X1是零,是不是就是这条直线,所以我们另里边的这一部分等于零得到的这条平面上的直线是不是就可以作为我们所有点的一个分类边界啊。所以大家注意,我们这里拟和的时候,不是你和它跟Y的关系,它跟Y的关系在哪里,这是Y对不对?Y是不是要做分类的呀?所以这是Y,而我们这里拟合的是X之间的关系,这里比较明显的我们X只有两个,那是不是正好拟合出来就是一个平面的曲线,平面的图像啊,所以我们得到的这条直线就可以作为分类函数,那大家再想一下,我们这个分类为什么可以认为这是它的分类边界呢?大家想一下这边的红叉这些点有什么特点?
18:27
都在这条直线的上方,都在这条直线上方的话,带到这个分类函数里边,大家会想到它可以得到一个什么结果,对,假如说我们这里边取一个三,三这个点是不是在它上边,应该是红叉这一类,对吧?那大家会想到带进去是不是应该大于零啊,大于零的值带到西格的函数里边。我们得到的Y最后的那个Y值应该是什么样的?大于零的时候,是不是就应该大于0.5啊,是不是趋近于一这一类啊,是不是很符合我们之前想到的这个零一分类的这个过程,所以是不是大于零里边的分类函数只要大于零,我们最后的这个分类是不是就大于0.5,它就属于一这类啊,那同样如果要是。
19:20
在它下边呢,圆蓝圆圈这一类是不是带进去都小于零啊,小于零代进去是不是就会小于0.5。哎,就会分到零那一类对不对,这是是不是就完美的把它做了一个二元的分类啊,好,所以大家就看一看我们这样的一个做法啊,所以其实就是说把它拟合出来这个值,这个值再套到压缩函数里边做一个压缩,那是不是得到了那个分类就变成了零一这样的一个分类啊,分类边界我们用它的值是,里边是用零来做区分,大于零小于零做区分,外边是不是就是大于0.5或者小于0.5啊,啊就是这样来分类的,分成正样本和负样本。
20:06
好,那么我们再来看一个例子,那如果是这样的一个一个图形呢?圈对,那大家就会想到这是不是应该是一个圈啊,里边的是一类,外边的是一类,对不对?那你和这条曲线的时候,大家会想到,那是不是应该是一个二次曲线,是一个二元对吧?首先是X1X2对吧,还是这样的,你和他俩之间的关系,那这个关系它是不是应该是一个二元的圆的方程,这样的一个曲线啊,所以是二元二次这样的一个曲线。那大家如果我们把这个取出来的话,对应的参数取出来是不是应该是一个X一方加X2方减一等于零,就是前面这一部分是不是就是X一方加X2方减一啊等于零的时候,这是不是就是一个圆啊,所以这是不是就是它的分类曲线,那大家会想到里边的点带进去有什么特点哦,大家会想到对这个减一等于零其实就是等于一嘛,那也就是这个圆的半径是不是一啊,那里边的点是不是这个都会小小于半径啊对吧?这个到原点的距离都会小于半径,是不会小于零啊小于零那带到C跟贸易的函数里边,诶是不是对小于0.5分到零负类那一类对吧?如果要是外面这一类是不是就大于零啊,到时候C跟贸易的函数里边大于0.51内内,这是不是就做完了这样的一个分类啊,所以大家看它其实就是说把里边我们这个X x1 x2之间的。
21:41
关系,用一条曲线来拟合,这里边它跟零的这个等于零就作为一个分类边界,分类曲线。外面再套一个贸易的函数,那么得到这个Y就可以有零、一两种分类了,对不对?根据大于0.5,小于0.5可以分类了。好,所以我们再来总结一下,就是这么两条对不对啊,就是在这个C贸易的函数,这是我们的一个根本啊,就是这个C的正负是不是就决定了最后它到底大于0.5还是小于0.5啊,所以我们把这个C带成我们的分类边界曲线那个表达式。
22:18
然后大家又会想到它如果要是大于零的时候就是一类,小于零的时候就是一类,对不对,就按照分类曲线分开了,好,这是我们这个,呃,这贸易的函数,然后引出的这个逻辑,回归它的这种用回归的方式实现分类的一种思路啊,大家先可以把这一块先捋一捋啊。
我来说两句