00:14
然后给大家简单过一下随机森林,随机森林是怎么想的呢?角色树,我们知道角色树是一个弱分类期,为什么说决策树是一个弱分类器啊?因为觉得数每次取一个特征做分类,对不对?一个特征咱们还是假设刚才那个平面来说一个X和一个YZ等于X加Y也好,或者什么什么都好,反正X是一个变量,Y是一个变量,得到了一个Z,对吧?所以假设这么一个函数C等于X加Y,系数也不写了哈。决策数一次选一个特征去分,它就必须得在一个坐标轴的垂直方向上去切。明白吧,比如说你这次我要我要区分X,那你必须得这么切一刀对不对,下次你又选歪了,你必得这么切一刀对不对?
01:04
大家可以想象啊,我刚才给大家画了很多那种这种很奇怪的图,你现在用这种很方形的这种刀去切他能切的很好吗?肯定不能,对吧,所以我们说决策数是一个弱分离器。弱分类器怎么给他提做准确度的提升呢?很简单,有一个数学证明,比如说一个弱分类器,它的准确率是0.7的话是吧,我只要再弄十个0.7的让他们投票就可以了。只要弄100个,准确率可以达到99%。明白吧?那当然前提是你这个十个分类器,别说都是一个数据训练出来的,那没有什么意义,对吧,就比如说你们整个你们一个班里的人投这个Python的未来趋势,发展趋势,你们大家全是一个观点,那你整100个人也没有用,对吧?投的东西都都都一样的,但如果你们是从不同的地方来的,你们具有不同的信息,但是呢,独立的评价,你们每一个人投票准确率都是70%,你们放在一块一起投,最后你们有总票数除上那个总的投票数,对吧?总的正正样本除上这个总的投票数,你一定可以到一个90%的准确率。
02:18
这个理解是吧,证证明也不需要证了,对吧,这个没有必要证明。所以随客决策数是有随机性的,那我就建100个甚至300个决策数,甚至是500个。就可以做到很高的一个准确准确率,但是还是刚才那句话,如果你建这500个数都完全一样的话,这个事儿就又没有意义了,对不对?怎么建呢?它采用了这样的策略,首先数据随机化,第一个是数据随机化,就是你你建树的过程,你是需要样本的,但是我现在随机丢掉一些行的样本。因为我随机丢了,所以噪音就会被随机丢掉,对吧,因为好的是对大多数的,那噪音肯定就说被随都丢掉,对不对,因为我有好多模型,大家分别丢弃着对应的噪音,所以它会把这个好的,这个数据就是比较好的数据,毕竟是占大多数的嘛,它会加强。
03:13
明白吧,这是第一个,第二是纵向的一个随机丢弃,就是随机丢弃特征。就打比方,如果要随随机森林做刚才这个事呢,他会怎么办呢?有一个数,有一个数就会把这个身高给丢掉,而另外一个数很可能把体重给丢掉,有一个数呢,会把眼睛颜色丢掉,当然这个把眼睛颜色丢掉,这个数呢,分离效果肯定不好,对吧?所以它肯定是什么呀,它肯定是少数,因为这个这个特征非常,既然它非常重要,你丢弃所有的特征,它的概率是平均的,对不对,随机丢嘛,所以它很重要的这个特征,它被丢弃的那个概率是很小的。对吧,它在大多数情况下它是出现的,对不对,因为它出现,所以这个特征在整体里边会发挥一个加强的作用。
04:06
对吧,如果这三个全是特征的话,那他们加一块儿丢弃的这个频率跟他这个丢丢弃频率肯定是不一样的嘛,对不对,他们肯定成三的嘛,对不对,所以他们丢弃的这个这个这个频率可能会更高一些,这样的话就通过这种方式就把这个列的特征属性给加强了。这个明白了吧,是吧。明白了是吧,数学上一定有证明,但是呢,没有必要证,只要大家只要只要记着啊,只要把数据和特征就是随机抽样,然后并且堆叠出好多数来,就肯定是这个肯定是准确率就会提提提升很多。还有随意森林,随机森林也是一个应用的非常广泛的一个算法,那大家平时可以试一试,比如说现在公司里给你一些数据,然后让你预测一个准确率,你就可以用随你去做是吧,然后在那个SK论里边呢,调用方法也非常简单,这没有什么可以说的,嗯。
05:05
这里边儿呢,我们再再说这样一个问题啊,就是我现在形成随机形成森林的时候,我都是随机做的,对不对对,我第二次随机,第三次随机,然后我形成十棵树,第11棵树还是随机种,对吧。对吧,但是实际上这样做是有问题的。因为我形成第一棵树以后,我第一棵树肯定拟合不了全部的结果,肯定拟合不好嘛,对吧,那么我完全可以第二棵树在第一棵树和结果之间的残差去做拟合,比如第一棵树预测是值是三结果树,然后呢,你如果随森林的做法呢,是第二次继续队伍这个去做这个预测,可能预测四,然后又预测一个三,然后又预测一个二,就把他们投票得或者做一个平均得出一个值,就是随森林的做法,对吧?但是呢,第一次你已经知道了,我差二对不对,你第二次可以对二去做拟合。
06:00
对吧。这第二次可以对二去做拟合,然后你做了第二棵树呢,它这个结果假如说是是一的话,你就差一,你第三次做一去做拟合,明白吗?然后对一做拟合,因为大家知道啊,这个东西不可能一下就拟合的那么好,你可能就拟合0.8是吧,第第四次就对0.2去做拟合,明白吧。这个拟合方法呢?呃,说起来很多书上写的非常复杂,其实非常简单,就是一个二次函数X方,Y等于X方,就拟和这个函数就完事了。就你和这个产差完事,为什么你和二二那个X方的哈,那你和Y等于X也是OK的,没问题是吧,这是没问题的,但是X方大家知道,二阶导降就是它的逼近速度肯定很快。因为我们在现实当中没有没有一次函数,没有没有线性函数,对吧?所有的函数都是高次函数,那么你你这个平肯定是这个平方立方,甚至你知道五次方肯定拟合的很快,对不对,这是毫无疑问的,肯定方次方越多拟合越快,但是我们不能用,那么高次方呢,是因为什么求导,我们上午说过,它多元函数求导的时候很困难,对吧?所以二次方是我用的很多的,就是二阶,二阶的拟合是我用的很多的。
07:18
呃,随机森林呢,就叫random forest,然后呢,刚才给大家讲的这个。Y等于X,这种礼盒呢,它叫做GBDT。梯度,呃,梯度提升决策数。The BOO decision tree,梯度提升决策数用的是一阶导,然后呢,这个Y等于S方是用了二阶导的,这个这个东西呢,我现在不知道它叫什么,但是它有一个很牛的一个工具叫差距不。差距不大家可以记一下这个名字,因为你到后面用的时候啊,这差距不是打比赛经常会用的很多,而这个这个东西做那个比赛的时候用的很多。
08:11
对,然后具体的推导呢,就是我就不是给大家详细去讲了,因为呃,这么来说吧,上回给大家讲过一次推导,但大家都没有听懂,而且觉得很痛苦。而且我觉得这个树这东西本身推倒好像是有点儿过于形式化了,实际上没什么意义,呃。他推导从我现在看并不难,但是第一次给大家讲的话呢,肯这些符号大家看肯定就懵了,对吧?其实其实是非常简单的,其实只要你知道它的物理意义,就说Y是什么意思,就是第几次得到一个结果,第一次得到一个三的这个结果是吧?假设你你要要预测五,那不还差二嘛,对不对,你就在三就可以看成X对吧,那相当于Y等于X方,你把三看成X,呃,X看成X,现在等于三的时候,你对它求个导数,然后继续往往母上靠就完事了,就是这个意思。
09:06
就这个意思,这上面就是个残差嘛,就是五减三等于二嘛,对吧,就这。但是很多书上讲推导的时候,反正也很遗憾,可能大家可能都那书的作者可能也不明白啥意思,所以就大家都是在堆,但很很多这种也效果不太好,就大家很多这种教材在抄,所以就给大家讲的都云里雾里的,一谈机器学习呢,就一定要把高也论讲的很高大上,就好像一句话给人讲明白就不神秘了一样,这种我是不是不是很喜欢,而且像后面那个很多像L,还像CF这些在自然语言处理里边用的比较多的一个工具,其实我觉得从原理上来讲都并不难,但是现在来看网上的文章好像还没有讲的太清楚,对。其实对这些这些模型哈,大家要想真的掌掌握的特别特别清楚的话,第一个方法就是先去看一遍推导。
10:00
看一个推导你就会懂很多东西了,第次就你手推一次,不是说你们看啊,手推一次就很就很懂了,第二次你最好去实现一个算法,就手动去实现,不是调用库,就刚才不是说那个线性回归了吗?是吧,大家可以去实现一下这个线性回归的一个算法差距不呢?大家可以练习一下推导,这后面是我给大家列出来的一个推导的一个过程啊。这个推导的过程呢,其实也没有很复杂,它就是把这个叶子的这个值都加到一块儿去了,就做了一个变换,然后对W求的一个偏导,就得来一个值,嗯,大家详细的可以看,这个推导过程就不多不多说了。然后呢,呃,这个差距boos对于原有化和分类呢,我们可能呃没那么多时间去跑这个事例,我只有把代码给大家发下去啊,我们总结一下这个决策树,决策树呢是一类具有可解释性,泛化性能较好的模型,这里边可解释性是非常重要的,我们现在做机器学习和深度学习的很大一个问题是什么呢?是不可解释,因为深度学习模型,还有一些机器学习模型,他判别你这个人,比如是危险或者是有问题的这种订单,或者是你带着反正这种做这种判断的时候,他是会误判的。
11:17
明白吧,它是会误判的,但是决策数没有这个问题,决策数它的任何一个分类的一个节点,100%是有有据可可查的,对吧?每一个节点都是有原因的,你为什么跑到这个这个分值上去,是因为你的数据里有这个东西对吧?所以你是这个值对吧?我们要相信数据的话,那它这个决策数就是一类具有可解性的一个模型,它是非常,呃,就你对外面你都可以说的非常清楚,而且它的泛化性能也比较好,呃,精度呢,还还算比较高吧,然后也不需要做特征会议划,还有一个特别大的好处是它可以处理缺失值。什么叫处理缺失值呢?就我们现在收获到的这个样本哈,往往是有很多缺失值的,比如说现在这个人是男性,或者是男是女是吧?啊年龄是多大,这是最理想的情况,就有很多很多样本,但是有很多样本啊,通过因为某种方式,比如现在那个微信经常会让你们注册,然后让你填什么生日啊,什么年龄,那个东西你出去就被添上去了,但是呢,对,有些情况下,你这个男女可能在有些场景上,你你手机啪一下禁用他那个填写功能,或者怎么着,反正你进用一个位置定位功能,它这个地址这一列就是空的了,它获取不到对吧,这一列是空的,那你这个数据你是用是不用的,比如说它已经有100维了,它有一列是空的,你是用是不用的,对吧,这个时候如果用决策数,用其他模型就搞不定了,其他模型你就自己必须得往里填个数,对吧,你从平均值也好,还是用什么也好,用绝对数就有一个好处,这个地方你可以不算它。
12:48
明白吧,因为因为它这个地方没有值,所以算商的时候,算那个信息增益的时候,你就当它没有就行了,它不存在就完事了,所以它可以很好的处理缺失值,明白吧,嗯,然后呢,它适合于这个低维的一个稠密数据,不适合高维的吸收数据。
13:07
为什么不适合高维吸入数据呢?高维的那个数据啊,特征筛选起来,那个工作量非常庞大,它可能是成百上千上10亿维的,明白这个上10亿维的情况下,你要说拿出来其中一个特征,说它是拆成两份,拆成两份我觉得这个概率都不大。明白吗?就打个比方说,现在淘宝做推荐,淘宝里边有几十亿的特征,这个特征特别差。你说这几十亿的特征,你怎么能拿出一个特征,说这个特征就是区分这两类人群的呢?对吧,它很可能是几万个特征同时作用去区分一个人群,明白吧,所以你拿一个就不合适,但是绝证数他必须得必须要求你必须拿一个,对吧?它不能一次拿多个,这是它的问题,所以在这种情况下,你最好用LR老具体个回归,老具体个回归去做那个分类器,去做这个商品推荐,你最好用这个模型,那么最多呢,LR做完之后呢,你可以下边接一个那个接一个其他的一些这个特征工程的一些东什么东西就接到LR上去,对吧。
14:10
然后在金融推荐,还有商业化领域呢,用途是十分广泛的啊,然后呢,学术总结我们就说过去了。
我来说两句