00:14
然后呢,下一页是这个,我们就讲第一个啊,最简单的模型,就大家以前在物理实验里边肯定遇到过的这个线性回归,线性回归这个模型呢,非常的简单,但是呢,里边还是有很多可以探讨的东西,如果我们把线性回归掌握清楚之后啊,其他的很多机器学习的模型共用的东西大家都都掌握了。那我先看一下这个表。这个表里啊,有两个,一个自变量和一个因变量啊,自变量是X,这个X呢很简单,就是123456789 Y呢呈这样一个趋势变化。就乍一看我看不出来它是什么趋势,对吧,我就画一个图把它画出来了。大家可以看到啊,它这个图基本上是这样的,这样一个图像,从这个图上我们可以看出来,Y是围着X呈线性增长的。
01:09
对吧,那Y和X并不完全是线性。就是基本趋势是显性的,对吧?但是中间还有一些差值,这个差值我可以怎么认为呢?我可以认为它是噪音,对吧?比如打个比方说,北京房价它受很多其他原因素的影响,但是呢,主要还受什么呢?市场供求关系的影响,对吧?当然了,它那个北京盖了多少房子,然后这个,呃,今年中介是不是哄抬房价,这个也有关系,但是我们可以把他们统统看成噪音,因为他们是围着这个直线来回波动的,明白吧,所以说噪音并不一定就是噪音啊,它可能是一些我们不关心的东西,那我们现在有XY的这个关系了以后,我们就需要去选一个模型了,对不对?就刚才说的,我们最开始我只有数据,我这个数据放在这里,我什么都不知道,但是我经过观察,我认为线性的。
02:01
回归线性的model很可能就适用于这个数据的分析工作,对不对?至于它真正适不适用,那我们得看十、11、12后面的数据,它的预测效果怎么样。在这些数据上,我们是看不出来的。对吧?所以我们先用一个线性回归的模型,叫Y等于A加B去建立了这样一个模型,对吧,就一个线性回归,这很简单吧,是吧?接下来的问题就是说怎么能求出来这个A和B。就给你两点怎么求一条直线,是不是两点求直线对吧,那我们再画一个图啊。两点求直线呢,可以说是非常简单,但是呢,这里边儿有一个问题,就这个点它并不是非常规整的。
03:02
这个点是这样的啊,比如说这样,如果给你的这两个点让你求直线,这是很好求的,它有唯一解对吧,一求就求出来了,但是这么一群点怎么求直线呢?其实它是无解的过程,曲线应该是这样的。不是这条直线对吧,但是呢,大家知道你这个曲线本身,你这么求本身就很难,对吧,你肯定得求出来啊,也不符合我们这个模型的假设,那么我们只能做一个折中,就这条线过去以后,让它距离所有点的距离加和最小,这不就把所有点都照顾到了嘛,对吧?那距离加和怎么去描述呢?我们就用这样一个式子去描述啊。假设这一点是Yi或者Y就是Y3吧,第三个点Y3,它的X轴X值呢是X3对吧?然后呢,假设这个直线叫Y等于X加B。现在呢,我把X3和Y3代进去之后,是不是就得到一个Y3减去AX3减B啊,这是不是一个差值对吧?这是一个差值,我我用平方而不用那个直接相加,为什么它有正有负一加就没了,对吧?我们用平方,我们让它平方值最小,这可以理解对吧?这就是最小二乘法对吧?我只要求让它所有的距离平方加和是最小的,它肯定是某种意义上最权衡的一种方案,对不对?但是你有人就会问,四次方行不行?六次方行不行?
04:33
这都可以,对不对啊,他们的四次方、六次方的解和二次方的解现在来看是一样的,但是呢,某些场合下它是不一样的,但是四方不影响,为什么呢?因为这就是你定义的一个问题,什么叫权衡呢?对吧?这是定义不同,有的时候你说它的二次方最小值叫权衡,各位有的时候你说四次方最小值叫权衡,对吧?他们的标准是不一样的,你不能说权小值快,反正他们是顾及到了,只是有人权重高,有人权重低而已,对吧。
05:03
在这里边我们就看到了几个概念啊,然后大家简单过一下。第一个是我们要评价我们现模型好不好,我们必须得把原始数据切出一部分。为什么呢?我现在这个模型我用我这个,我用这个模型去学了是吧,这个模型在我这个训练集上学的非常好,咱们打个比方啊这样。我现在是这样的,这个直线可以可能说学的很好,但是呢,他在另一部分数据上,这个数据是这样的,其实他应该学在这样一个曲线对不对,结果他学着这样的曲线,他自己认为自己非常好,对吧,这有问题了,所以说我们一定要把我们手里有的数据切出来一部分当验证机。验证级的目的就是客观的评价一下我这模型学的好不好。
06:00
明白,所以我们做了一个训练机和,呃,测试机也行,验证机也行啊,这一个一个切切割,你看这上面是一个训练机,然后下面是测试出去,然后我们给它切了一刀是吧?那测试集怎么取呢?一种情况下你就是很直接的就取1/10,到测试集就完事了,这非常简单,对吧。但是这种取法往往不够好,因为你取那部分数据很可能很多就就特殊,你就就把这部分给取出去了,是吧,这这就这你在训练的时候,你无论如何也学不到这个模式啊,对吧,你学到永远是条直线,怎么也学不到这个模式,对吧?怎么办呢?一般是K折交叉验证。什么叫K值呢?第一次取这么一部分当测试题,第二次呢,取中间这部分当测试题,第三部分第三次取这一部分当测试题,明白吧,所以我总比如说十个验生的话,我能取十个测试题出来,能做十次。明白吧,说这14,我用这14的平均值,或者用这14的那个最低最小值作为它的这个验证级的这样一个准确率,这是很客观,明白吧。
07:09
OK,然后接下来还有三个重要的概念,第一个叫目标函数,这个刚才我们已经说过了,我们要优化的是什么呀?Y,是吧?我们要优化的是Yi减去axi减B,对不对?平方是吧?再怎么样对Y求和吧。我们要优化的是这东西,这就是目标函数。这就是我们要优化的目标函数对吧?那什么是损失函数呢?在这里边很巧合,损失函数也是它。什么叫损失函数?就是说如果你这个点全在直线上,损失是零对吧?它不在直线上就有损失了,我们要是损失最小化的损失函数往往是它,既然他俩现在来看是一样的,为什么我会提出目标函数和损失函数两个概念呢?
08:08
是因为这样的啊,这个可以给大家提前说一下,就这个A和B现在来看只有一个参数,但是呢,我们可以有很多参数,比如说减去AX方减bxi减C是吧,我们甚至可以有100次对吧,1000次对不对是没问题的,对吧?这样的话就导致这个模型十分复杂,十分十分复杂,这个模型十分复杂以后你和能力肯定是非常强,就理论上来讲,他能把所有点都过了。他能把所有点都过了对不对,但是这不是一个好模型。对吧,所以我们会在系数上加一个惩罚项,我们把所有系数加一块给它同时做一个惩罚,比如说你这个系数啊,是和,以及这次数也是一个系数。比如说你这个A现在,假设这个A现在是1000对不对,B是999,看起来他俩你看一个一个负999哈,假设看起来你先减1000,又加999,好像最后得到跟一一样的效果,但是呢,这两个我会把这个A平方加B平方同时做一个损失,加到损失项里去。
09:16
这个时候它的损失非常大。我就倾向于用X。明白明白意思是吧,就这个地方数学推导不是那么严谨啊,我就是打打个比方,意思就是说现在系数有可能很波动,前面是1000,后边负999,后面就是正确998,再一个负997,对吧,这个损失看上去和那个X加B是X加一加S2加S是一样的,但实际上这个损失对我们来说非常大,因为我们把它的平方加在后面了。明白吧?理解了是吧。然后第三个是优化方法,优化这块呢,咱们也不用详细说,无非就是一阶优化或二阶优化,这里边来看呢,我们现在用的比较多,就是梯度下降,对吧,上午给大家讲过了,我们还需要讨论两个问题啊,第一个是拟合的问题。
10:06
什么是拟合呢?就是说我们要拿这个模型把所有的数据都给拟合上,对吧?我刚才说了一个模型如果足够强大的话,他能把所有点都过了,对吧?但是这样是好模型吗?不是好模型,假设你像你和一个人的一个语言,它的语言里边有很多噪声,对吧?如果你你觉得非常非常好,把这些东西全学到了之后,你说的话跟这个人反而就不一样了。明白吧,他可能今天是有一些噪音,今天可能他是说话的时候他嗓子哑了,昨天晚上唱歌去了,和今天说话有点嗓子哑了,明天呢,他可能有点感冒了,说话的声音又跟正常不太一样,你把这些特征全学到了,所以呢,你学的东西就有问题。这这个这种情况下就叫什么呢?叫过拟合,那还有一种情况下是这个人说话,然后你去学,你只能学到他一半的这个声音和特点。
11:04
这种情况下叫什么呢?这没写叫欠拟合。对,就没拟合上,就打个比方说哈,大家能看到这个第一个图里是吧,这明显是一条曲线对不对,然后我们拿一个直线去拟合这个,这个准确率肯定是上不去的,对吧,就是欠拟合,对,但是右边这个图呢,就是过拟合。对吧,他学到了很多噪音,那这个噪音呢,他现在学到了,在未来的时候,他去预测的时候,不一定什么时候就会发挥一些错误的作用,就会有问题过拟何嵌拟合都不是我们要,我们要的就是正常的拟合,但是这个度呢,完全是靠人去评估,去把握,所以这也是我们为什么机器学习里边经常需要调参的一个原因,我们先用一个直线去拟合,我这调了这么个参数,发现铅体合了,我调成二次,哎,发现还行,调成三次,发现更好了,这个时候我要想一想,是不是数据本身原噪音我学到了。明白吧?所以这个是要人去评估的。
12:02
然后在这里面还有两个概念,一个是准确率,一个是泛化性能,什么是准确率呢?呃,说点非常简单啊,就是比如说现在有这么这么些数据是吧,然后呢,你你先去学,学完之后呢。在训练集或者在测试集里,你能预测对多少个就准确率。对吧,比如说训练,训练集里边有80个,然后呢,经过模型学习之后,你模型也是有上限的,不可能所有东西都学,对,对吧,是这个理解是吧,模型是有上限的,不是说不是说你扔80个给模型,模型100%能学,学出80个,它不是记忆系统,对吧,它是个model model的话,它里边是有一些model的本质,就是说它这个东西有一个能力,它有一个能力在这model里,就比如打比方哈,嗯,你用一个线性的模型,你就学不来二次的曲线。明白吧,你怎么学他也学不来对吧,所以说他肯定是学不了80个对吧,就是你最开始模型选错了,或者怎么样,或者模型选的不够好,但是另一方面呢,你永远不可能学到一个非常非常合适的模型,因为你不知道这个世界的函数是什么。
13:09
你是去拟合它对吧,你去去去猜它对吧,所以说假设你最开始有80个数据,然后你学对了60个,那这个准确率就是3/4呗,对不对,75%呗,对吧,这很简单。接下来呢,我们把线性回归再推导一下,这个地方大家以前可能是见过这推导啊,现在可能都忘掉了。好,大家准备好了是吧?开始我们第一个推导,这个推导大家可能会觉得刚开始有点吓人啊,但是。讲一讲就就很简单。首先呢,我们看到一个高斯分布对吧。这个高斯分布是我们今天上午讲过的,我也不关心它是什么高斯分布,它的这两个参数,高斯分布两个参数嘛,一个是西格玛对吧,另外一个还有一个参数在这里可能没体现出来,就是它U这边有个U对吧,原来是X减U的平方。
14:03
对吧,这里面没体现出来,为什么呢?西格玛我就不关心了,西格玛控制的是什么,它那个曲线。对吧,这个形状对吧,对吧,一个曲线不管是什么情况,反正你最中间那个肯定概率最大对吧,旁边肯定概率就就小对吧,那现在我认为这个房价就有很多点,这都是房价的点。啊,这样一条直线啊,只要这个点没在这个直这个直线上,我都认为是一个噪音对不对,噪音是什么呢?就是刚才我们说的Y什么Y减去axa减B对不对平方,那么噪音满足什么?一定满足高斯分布。对吧,我跟他说,他说好多次噪音满足高斯分布,所以这个式子是成立的,所以下一个式子也是成立的。看懂了没?
15:00
这这是什么,这是Y嘛,对吧,比如第三个这是Y,为什么谁的T是一个转支呢?因为我们默认都是列向量。默认都是列线量,谁的是什么,谁的就是,比如说AI加BY等于A加B是吧?谁的是什么,谁的就是AB,就是这么一个向量,明白吧,所以你现在要要算这个,那后边这个咱们就可以看成S0次方,前面看成S1次方,就是这么看的,对吧?所以可以看成S1次方,S0次方乘那个矩阵,矩阵再乘上AB嘛,对吧?那现在倒过来乘它是个转值对不对,一行乘一列嘛,对不对,不就是这个公式成积吗?这是一个点的损失对吧,我们现在要我们现在的目的是什么呢?它满足高斯分布,然后我们要让它整体的这个损失最小,对吧?整体损失最小怎么办呢?高斯分布是一个什么东西,是一个概率密度函数对不对?概率密度函数,也就是说高斯分布的意思是这个是个P,这是个概率,就在这个谁的的情况下,发生这个噪音的概率取极大的,因为我见到它了,这个点我见到了,它就要取极大,明白吧,每个点我都见到了,我就认为这是事实,这就是客观的真理,我就让他取,取那个极大值,对吧,怎么取极大值呢?概率乘起来求极大就完事了呗,对不对?
16:30
好,明白,那求极大,另外一方面,咱们等价来说,我要把每个点的损失全加起来,对吧?你刚才我们说的是要把损失全加起来求极小值,就相当于在这个位置上求极小值对不对?那么就等价于把它把这个求和公式求和拿下去,不就连乘吗?不就等价于对这个概率求极大吗?对吧。
17:00
明明白了是吧,就是明白了是吧,你你对这个这个直线,你对上面这个下边这个点所有点加在一块,求他们的损失极小,就等于求他们这个事儿发生的概率极大。是吧,好OK,然后我们看下一页啊,下一页就稍微难了一点,这个地方呢,是一个求和,就是我们刚才讲的,我们优化目标不就是它取极小吗?对不对,它取极小值。怎么能取极小值呢?求导呗,对吧?只要求导等于零,它就是极小值,对吧?这个东西可以展开,是不是可以展开变成这个对吧?大家可以想想是不是这个东西啊,刚才我们说过AB是一个转值,乘上X1啊,可能X1X2。X2我们可以认为就是X1的那个X0次方是吧?啊,假设X1S2吧,这是一个点是吧,现在我有很多数据点是吧,我就可以S1S2。
18:10
X11X21X21X2,我会认为它这是一个矩阵乘上AB,这跟前面那个这个乘法再加起来是一样的。对吧,这是一样的,Y呢,也是一个列向量,你看这个东西乘完是什么呢?乘完就是。对吧,我我给大家放在这后面。这是后面这个东西对吧,它每一行乘完不都是原来那个方程嘛,对吧,我再把YY1写前面Y2写前面YY3写前边这X31X32。我每一行乘完都跟Y3做一个差,这不就是第一项嘛,对吧,最后这个做完这一项之后呢,它肯定是个列向量对吧?你这个Y3是个列向量对不对,Y是个列向量,然后X每一行乘上谁的之后,都是那个一行对应的那个方程的那个数对不对?每一行做差,每一行做差是个列向量对吧?给它转值成这个横向量,然后两边一乘,这不就是一个数吗?所以你要让上面这个数极极小,就让导数为零,导数为零呢,就是这个式子。
19:20
它取导数为零对吧,这个式子本身是个数,它不乘出来不是个向量,是个数,明白吧。OK了啊。然后呢,所以这个地方大家如果还是有一点听不懂啊,下去可以参照这个,参照这个PPT慢慢推导,因为矩阵乘法大家可能一时半会脑子里想不出来,但是你如果你把那个矩阵写出来,一看就是这回事,知道吧,这个式子呢,求之后就是求导了,求导就就很简单了。我们先把它打开,这个求导是就矩阵连矩阵相乘,就是YTY啊,打开就是这个值对不对,这肯定没问题,关键的问题就是矩阵对塔怎么求导。
20:03
对吧,这上面都是矩阵,对谁在怎么求导呢。这个地方可以简单简单讲一下啊。但是大家也是只是了解一次就OK了。比如说现在有一个矩阵,它是A1 a2。嗯,都是A。X8。S1 S2 S3。嗯。X4。假设它们后面都有一个C塔,因为我们现在求的是矩阵求导啊,比如说我们有个矩阵叫X是吧,然后它成了X11。一塔二。这是一个二乘二的矩阵啊,是不是就可以写成这个啊,X矩阵乘12X1吧。
21:03
再再写就写重复了。重生。变成加了是吧,我们可以说下面这个矩阵乘完得到了上面这个矩阵对不对?好,现在下面这个矩阵是X矩阵是吧?乘上一个C塔等于上面那个我们认为是Y,现在让你求Y对于西塔的导,关于西塔求X这个导数。就把西塔看成是一个呃把X呃把谁塔看成是一个自变量,求它的导数,怎么求呢?因为YY是什么?Y现在呃谁它是一个列向量对不对?所以它有两个值,我们得分别求对吧?现在你Y导Y导对C塔求这个。
22:11
导数的话。等于什么呢?有点有点别扭啊,有点X,现在是是一个系数矩阵啊,所它是自变量。首先Y是两行,就是一呃一列成两行了对吧?两行乘一列,第一行对谁的一求导,第二没有了对吧?第一个还剩S1对不对X1,然后呢,第二行对X呃,对谁他一求导剩到X3对不对?X3放在第一行,为什么放第一行呢?因为我谁他一是一行。明白啊,然后对C塔二求导,那就留下了什么X2X4吧,对,所以大家可以看到Y的对X对谁的求导数就等于XTX转置。看到了没,对吧。当然有人会说,我为什么不放一列呢?你对谁?他一求导,我放一列行啊。但是要注意一点,就是说不管你是放一列还是放一行,你的所有的结果全部都是一列或一行,所以是不影响计算的。
23:15
明白意思是吧,就是你只要按照一个规则去做,他们要么全是行,要么全是列对,而且最后你求导数,你求的是什么等于零,所以你在左边加一个转置,全体都转置,右边还是零。明白吧,这是丝毫没有影响,所以这个地方怎么求,大家都可以自己定的定的规则,但是矩阵对这个参数求导呢,我们现在基本上做法就是求完等于ST,对吧。这个地方大家了解了,这个矩阵求导这块就不难了。这个地方就对谁的挨个求导,第一项是什么,跟谁的没关系,对吧,第二项呢,那是有一些那个我再往下写一下,这有几个公式,大家可以把这个公式记一下,这是矩阵求导公式,最后求出来的导数呢,是这个东西。
24:03
是这个东西所有数据样本的矩阵的转值乘上数据样本,再乘上西塔,再减去数据样本的转值,乘上它的值等于零。必须要这个公式满足才是导数。同学用。有点有点迷糊了啊,没事,马上就完事了,大家这个地方听不懂是正常的,因为矩阵你要展开写才明白,而且你要做习惯了以后才能看得出来矩阵是怎么回事。对于很多同学刚开始学这个数据分析这块来说,他的矩阵乘法都需要在脑子里慢慢演算,他就跟不上那个过程,所以是很正常的,大家回去多演算几次就OK了。对吧,然后再一个就是大家注意一点,就是你在做数学推导的时候啊,你可能不要想那么多这个东西,具体里边是怎么变的。明白吧,就你要做到熟能生巧,就是导数,谁求谁的导数就等于它。
25:05
比如说就打个比方,咱咱们以前经常说那个,比如说比如打比方说一加二等于三,你会去想苹果的事儿吗?对吧。啊,十加上20等于30,你会想苹果的时候,它就是你根据这个数学规则去算出来,明白吧,当你做矩阵乘法也是这样的,你做多了是这样这种感觉,而不是说矩阵里边每个元素是怎么乘出来的,怎么排列的,然后它是什么什么不是这样的,对吧?然后最后我们得到这样一个式子以后,我们就可以把这个C塔求出来了。对吧。谁呢?就求出来了,这就OK了,我们现在有了所有的样本,有所有的样本的标签,不是标签,它的值我就可以求出来一个最优的塔。明白吧,大家下去可以用二乘二的矩阵自己验算验算一下,二乘二很好算,就直接就能算出结果,给自己验算一下。这时候的谁,他就是你最好的谁,那么这个时候有一个问题,我再给这个墨迹提一下。
26:07
就是我们得到这个式的时候呢,我们对这个XT和X做了一个提取哈,我们这个式可以再展开写成X1乘X塔等于X1Y。这个时候我们做一个操作,西塔等于X7X的逆。就相当于倒数一样嘛,是吧,乘过去对。我们做这一操作,得到这个式子对不对?但是X1乘X1定有逆吗?不一定是吧,我没有说X1乘S,比如打比方说,假设我现在给你样本全是零,三个零,一个矩阵,它就没有一对不对,这个地方零乘谁才等于它,你就没有办法把零扔过去,对不对,但这种情况下你你你又不能说不做,我们怎么做呢?我们在这个这是一个矩阵,对吧。我们可以这么认为,这个数据样本呈上给它,等于它我让它摆脱这个病态的这个区域,我给它加上一个栏目的E。
27:10
乘C塔等于它。也就是下面这个值。为什么加拉嘛的E呢?我在对角线上加元素啊,因为这个拉嘛呢是非常非常非常微小的一个数。对,让它可逆这个栏目的非常微小,所以对整体这个成绩没有任何的影响。但是呢,因为有这个蛤蟆的存在,它可逆了,能求出来了,所以谁的一次性就能求出来几。明白了吧,这个地方。OK。就是面,如果你去面试的话,会考这些东西啊,但是如果平时你使用的话呢,呃,可能也会学到一点点啊。
28:05
然后我们再来讨论这样一个问题,就直接采用极值的方法求解,是不是有些问题是吧?比如打个比方,那个还是今日头条给你推荐一百一百亿的文章是吧?我想用100亿个文章给你推荐,他没有任何内存和硬盘,能让他一次性把100亿的只有件求出来。对吧,没办法做这个事儿怎么办呢。我们能不能每次拿一条样本,然后去更新一下参数,再拿下一条样本,再更新一下参数,就比如我们下山,刚才我们的下法是一步迈到底,对吧?我们现在能不能一次就走一点,一次往下看一小步,对吧?其实也是可以的啊。这个做法也不难,首先呢,我们比如说拿一个样本的话,我们还是这公式对吧,还是这个公式,我们还是要写它最小范,但是现在我只有一个样本,一次只更新一个样本的话,所以前面求和,求和这个值就没了,对吧,我一次就让这一个点的损失值最小。
29:06
明白这意思吧,是吧,那一个点损失值最小怎么办呢?嗯。我我要分析参数对吧,那参数比如说A和B。我第一次更新A,第二次更新B,对不对?所以他每次对谁的Z求越大。明白吧,就是第一次你对A求导,第二次对B求导,第三次对C求导。对吧,你要更新参数,你不能一次把他们全求出来,你要挨个更新对不对,要挨个新来了一个样本,你要挨个更新,你要算出来每一个参数更新的梯度是多少,对吧?那你要挨个求求导数之后呢,求出每一个G的导数,其实就是这个式子。你就可以一次更新一个参数。可以啊,大家回去可以再review一下这个这个地方。然后一次卖到底,这三课一次到底和一次下降一小步,就下降一个样本点都不好,比如说今日头条要给你推荐一百一一一百亿个文章,如果每次只要你算一个样本的一个梯度的话,他是猴年马月也算不完这个事对吧,怎么办呢?一次算1000个,或者一次算2000个。
30:16
这种方法叫做mini SD。对,一个败取就是什么呢?就是这个这个在集群里边非常多,一个败取就是一批样本,可能是100个,可能是500个,但是我见过最多的就是一百一百二十八这二个1000个多少。但是如果数据量特别大的话啊,1000也可以。SGD是什么呢?随机梯度下降对吧,随机然后green随机梯度下降。这样的话呢,每次算一个批一个批量的一个数据,做一个平均,然后再做这个参数的更新就OK了。然后这里面有一个思考的问题,就是目标函数一定有极小,一定有最小值吗?
31:07
大家可以思考是不是没有对吧?目标函数不一定有最小值,或者来说我们世界当中的所有的函数基本上都没有最小值。但是呢,我们并不需要找最小值,我们的目的是找到极小值。但是这里就有一个问题了,假设我在一个山上。山在前面呢,我看看下一下有没有山,没有山在前边,假设我们有一个很随随意的一个函数,如果我一下就像我第一次一下能找到全局最小值,对吧,我就可以一次到底,但是现在我用批量梯度中心,我就开始在这我一次只往前看一点,一次往前看一点,到这个位置的时候,我认为我经达到极小值了,我就不往上走了,我就来回反复的这个迭代,反复迭代对吧。因为你这个地方出不去,所以你到了这个位置对不对。对吧,这是一个局部极小值的一个问题,当我们在更新数据的时候,要适当的给数据加一些更大的一些不长,就比如你更新到一定程度了,这个数据已经不会太好了,这个时候一种情况下你是减小学习率。
32:16
因为防止你为什么减小学运呢?防止你在这里来回走,大家明白吧,因为腿巨人腿特别长是吧,来回走就是到就是下不去,明白吗?减更减小这个学习率是为了让他一方面能下去,对吧,然后另一方面呢,你还要给他最好给他不同的训练初始的一个位区间位置参数初始化的方式,比如说第一次你初始到这个位置上去了,它就只能下到这里了,但是如果你这次初始化是在这个位置上的话,它就可以下到这里边。明白吧?明白是吧,可以吗?都很通俗的理解。
33:01
然后呢,这个,呃,刚才我们说过这个房价的这个预测,怎么评估它这个预测的结果好不好呢?其实很简单啊,我们既然用方差作为它的那个优化目标,那可以用方差做评估,对吧?然后如果对于离散数据,你不能用方差评估怎么办呢?有这么几个算法啊,比如说现训练量没有100个,正负样本各有50个,经过模型分类以后呢,正负样本呢,结果仍然是50个,对吧,但是有的分错,有的分对了,正样本里边呢,分对了40个,分错了十个。啊,分对了40个,分错了十个,那么我诶这个这个前面不是够50个,这个写错了。正样本里分对了40个,分错了十个,我们认为准确率是什么呢?呃,这个准确率有两种说法,第一个叫accuracy,就是就是准确率,准确率讲的是全体的,所有的,因为你现在他分错十个对不对,负样本分出20个对不对,所以它的准确率叫0.7对吧?但是呢,这个0.7呢,我们用的比较少,为什么?因为我们做正负样本分类的时候,往往权重不一样。
34:16
打个比方说,你先抓抓抓坏人,对吧,你说你好人分错了两个和坏人分错两个,他的权重能一样吗?对吧?权重肯定是不一样的,所以我们要单独看一个样本,比如说正样本里面,它这个pre是多少?正样本现在总共有50个对不对,现在分对了40个,所以它的准确率是0.8对吧?所以这个时候我认为你模型是不行的,因为你正样本现在是罪犯,你只抓住0.8,这是有问题的,对吧,你宁可把这个好人多抓点,你也不能让罪犯跑了,对吧。接下来还有一个指标叫recall。什么叫record record的意思是召回率。召回率就是说你现在啊,这个正样本有40个分成40个对吧。
35:06
还有那个负样本里边啊,你看分对了30个,负样本分错了20个,就是说你把负样本分成正样本了。用20个明白吗。所以你现在总共的正样本有多少个,60个对不对,明白吧,在这里边算他一个召回率,这里边真正真的正样本只有40个,所以它的召回率是什么?0.66。对吧,上面叫P,下面叫RP和R往往不可兼得。准确率很高的时候,召回欲往很低。明白吧,因为你准确率很高,所以你这个这个正样本分的全对了,分的非常好,但是负样本你这个时候对应的性能就要下降了,它可能分错了很多,对吧,所以这个P和R是一个一个矛盾的东西,所以在机器学习里边,我们经常会用什么呢?P和R的调和平均数去做这个事儿,去评估,就P分之一加1/2。
36:08
这里边有一个问题,就是说训练集上的PR达到100%,这是最好的情况吗?不是是吧,我刚刚才给大家讲过过拟合的问题,对不?你看这个就是过拟盒了,这这明显是有问题的,对吧?啊。那么为了避免过拟和刚才给大家说过,我们可以把参数作为一个项加到它的损失函数里边去。对于第一个,如果你加它是一次方的话,加一次方的话叫拉索回归,如果加的是它的平方的话。那就叫做回归。这就两个定义啊,然后L1L2正则化对应着拉赫回归和润回归呢,它们分别有自己的一个用处,拉货回归往往会有吸收参数化的参数的作用,而range呢,往往收敛更快,这个地方就简单提一下。
37:06
然后呢,我再看到在这个是不是需要飞球给大家发一个这个Python的一个文件。大家可以在本地跑一下试试。
我来说两句