00:16
我们接下来来过这个决策数这个算法,决策数呢是一类非常大的一个算法体系,它并不是有一两个算法组成的,是一个算法符,因为我们刚才讲的那个所有的这个算法啊,刚才讲的这个线性回归和老G的回归也提到了一下的,他们都是先建立一个model,用model去我们这个date是吧,但是决策数不是这么做的。学生书是怎么做的呢?我现在拿到了很多很多数据,比如说现在拿到了,嗯,还是这个很多样本啊,很多数据。决策书就模仿人类做决策这个过程去做这个决策。比如说现在这就男一号,男二号,男三号,一直男五号,然后呢,他有各种各样的特征,还是这个特征哈,有很多特征,然后呢,这个表格给我了。
01:08
我们做了一个决策数,这个决策数很可能是什么样的呢?假设现在是相亲的话,就是年龄是不是大于30吧?大三十不限对吧?小等于30,看长相是不是帅是吧?丑见是吧?如果收入这个是高见是吧?可以确定见第一,不见中等,看看是不是公务员是吧?如果是的话,建不是不建对吧?这个价值观有点不符,够我们这个主流是吧,那我觉得上面是应该有一个根基点,是不是程序员,程序员建是吧,不是程序员不见是吧,这是我的一个价值观啊,那么我现在就还言归正传啊,我们还是说这个问题,我们拿到这个很多数据以后呢,我就知道了,如果我做这样一个决策数呢,它可以让我们这个数据分开,分成,见或不见最快。什么意思呢?我们看下一个页里边的数据哈,现在我们有一个人种分类的一个训练数据,它是不是亚洲人,然后呢,我们看到了眼睛颜色呢,有black,有brown,就有这个黑色和棕色是吧,头发颜色有black white,还有这个白,这个金色,还有白色是吧。
02:18
我们有这样的特征,还有身高,还有体重,很多有四种特征,我们现在要分成他是不是亚洲人,理论上讲我怎么都能把它分出来,对吧?但是我应该怎么分呢?我应该用最快的方式去分,最好是一次就能把它分出来,为什么这么说呢?因为你用很多次才把它分出来,说明你这个特征选的不够好。对不对,你这特征肯定选的不够好,这特征没有区别度啊,对吧?特征没有区别度,所以才需要需要好多好多特征组合在一块才把它分出来,对吧?这种情况下你这个预测结果可能也不会好,如果有那么一个特征就能跟你这个判别标准正好对应起来,一次就把它全分开了,就比如像眼睛一样,只要是黑眼睛,就是亚洲人一次性能把它分开,这是最好的,这是我们最最喜欢看到的,对不对?所以说亚洲人只跟眼睛有关,跟其他三个可以无关,对吧?或者说当眼睛眼色存在的情况下,其他三个完全可以不要,对吧?这就是我们的一个标准。
03:17
那我们的标准是这样的哈,那接下来问题是就来了,我们怎么去衡量我们这个标,就是怎么去量化这个标准。怎么去量化呢?就是说用数学语言去表达。一个特征切一刀就能把所有的结果正好劈成两半,它叫什么呢?我们上午讲过商,对吧,它叫做熵减最大。大家可以理解一下为什么叫双减最大哈,我现在这么看,现在我们现在原始的数据是没劈开的,对不对。亚洲人有一半,不是亚洲人有一半对吧,所以亚洲人的概率是1/2对不对,1/2就是他的信息量吧。
04:03
对吧,负批烙批嘛,对吧,他信息量那不是亚洲人的也得加一块吧,对,你不能把不是亚洲人那部分给扔了,对不对,也得减去1/2,还是什么1/2对不对,对对,这个式子就是它原来的什么不确定度,也就它的信息量,就大家现在对信息有一要有一个概念啊,就大家每天都在从事itd工作,你对信息没有概念,那那是有问题的,就本身这个数据给你,就这这个表格老板能给你了,你要明白这个表格里蕴含的信息量是大是小,什么意思呢?如果全是亚洲人,这个表格跟说跟没说是一样的,对不对,前面说了一堆,后面全是亚洲人有什么用啊,对吧,这个表格的信息量就是零对吧。但是这里面亚洲人正好前一半,然后不是亚洲人正好后一半,他的信息量就要大一点,对吧,但是还没有达到那种说让你根本搞不清楚这事该怎么办的情况,对吧。
05:00
这还是可以可以可以控制的对吧,所以它这个时候的信息量呢,就是负1/2 lon1/2,再减去后面这个LON1/2对吧,二分1/2对吧,这就是它的信息量也不能叫皮这个地方大家可以理解吧,是吧。我们再强调一次啊,商就是不确定性的度量就是不确定性的度量,我们做预测的时候,就是要从无确定的数据里得到确定的结果。明白吧?所以我们现在对这个数据做区分,不断的切,切几刀切几刀,我们就是为了让他尽快的切成几个小堆,这个小堆里的数据是干净的,这堆里就是欧洲人,那堆里就是美国人,那堆里就是亚洲人。我们就是为了做这个事,只要他每一个堆里都纯净了,那么在那个堆里它是对应人种的概率,比如说现在我把亚洲人给切出来。非亚洲人切出来,那么在这一堆儿里,亚洲人的概率是不是就是一啊?
06:02
对吧,肯定是亚洲人对不对,所以他的信息量是什么零嘛,一就是零嘛,对吧,后面肯定不是亚洲人,所以他的信息量是什么零嘛,零加零等于零吧,是吧,最开始是这个值,你看它带个负号,它其实是个正的。这个值是个正的,最开始假如说它是三三,假如它是三哈,后来变成零了,所以说你切了一刀,你让这个两堆打个比方说,现在有有一有一个原始数据,原始数据呢,你在用这个红米钥匙做蓝屏钥匙。这个原始数据的混乱不堪呢,这就全混在一块儿了。对吧,就是这样的一个数据,它的这个熵值就很高。这个地方跟化学上可能有点像,它本身这个熵值就很高,它全混在一块儿对吧,很乱,然后经过你找了一个特征,你不管是怎么着,反正你切了一刀。
07:00
切了一刀以后变成了这样,粉色的在一块,蓝色的在一块儿。在一块对吧,两对都非常纯净。对吧,纯净的意思就是说,呃,负PP等于零。因为一批是什么一对吧,零上面信息量也是零下面信息量零上面两上面都和下面都都非常确定,所以经过你这一刀以后,他的伤变小了。对吧。可以理解是吧,它变得整齐了,有序了,对吧?我们就要以最快的商检去做这个工作,因为我们认为商检越快,这个特征越有代表性,特征越有代表性就说明它的泛化能力越强。明白吧,打比方哈,眼眼睛颜色就是black和brown,他就能把亚洲人正好区分开,如果你用其他三个特征去组合的话,你也能把这三亚洲人和非亚洲人分开,但是他肯定是有误差在里边的,因为身高和体重明显跟亚洲人没关系,对不对?但是在现在的数据里,我我看不到全局的那些所有的数据,我在我现在注意力我很短视,我认为身高和体重看起来好像跟亚洲人有关系,所以我就是用这个模型去做了,结果去泛化的时候,去预测没见过的数据的时候,身高和体重毫无疑问就是一个噪音。
08:26
对吧,他很可能就对这个结果造成很错误的影响,所以这是我们为什么一定要最快的一个商检来做这个区分的这样一个原因。明白吧,是吧。那这个算法非常简单,这个算法就叫做角色处理的ID3算法,具体怎么算呢?大家可以挨个算一下,如果以眼睛分类的话呢,它是这个东西,就原始的商是这个东西啊,以眼睛分类呢,是第一个是吧,你看以眼睛分类一下,就把它分成零了,商就降低了2.08,如果是以头发颜色分类的话,可以看到只降低了一点几,对吧。
09:04
没没降没降没没降完,因为你以头发分类,你是分不开他们的,只是能让每一堆里的概率就那个是不是亚洲人那个概率更大一些,对吧,你的这个信息降低,就这个商检是有帮助的,但是没有帮助到头,对吧,没这么好,就是它一下就给你全全搞定了,第三也是一样,第四也是一样,对应成这四个。以身高分类,以体重分类,而且大家可以看到以身高分类和以以体重分类看起来怎么样,商都降低了,对吧,从2.08降到了1.814,看起来数值都降低了,所以往往你在数据里如果做的那个东西啊,就你如果没有足够的sense的时候,你会被一些现象蒙蔽了双眼,你会觉得诶,确实这个东西对这个分类有有帮助啊,你说身高确实是对这个是不是亚洲人有有帮助啊,对吧,因为加入身高信息以后,我是不是亚洲人确实猜准了一些,对吧?但实际上这个东西是误差,是噪音对抗,这种情况最好的办法就是你去多找数据。
10:08
为什么现在互联网很多模型就是可以训练的,大家都能接受呢?因为他用的是你几千万几亿的一个行为数据去训练,不会用几几千条数据去训练。明白吧,所以大家以后去那个技术公司里边,最重要的就是数据,如果你要有一天不小心把他的哈多里边的数据全删没了的话,那公司就完事了,对,当然这个哈,他们肯定不让这么干的是吧,他们大数据的部门肯定不会上,但是服务器上的那个RM杠,RF斜杠还是很有可能的,大家一定要尽可能的小心,对,甚至有的时候你删除某些目录的时候,你在那个斜杠中间写了一个空格,他就把登录给删了,都是有可能的,一定要十分小心啊。那这个这个地方多说了一句啊,所以说我们知道了这个商减最快的这个方向呢,就是我们要求的这一个方向,所以说我们其实很简单,因为我现在做的是一个预测和一个分类的工作,我并不需要在线这个服务那么快的一个响应速度,对吧?所以我现在每一局所有特征看哪个特征分的快,我就把它分了就完事了,我就每举就OK了,对不对,每个特征我就先先按这身高分类,然后看一下得到的结果是什么,反正我是在做模型,是速度无所谓对吧,挨个特征去看,看了特征快,现在我们选择了这个以眼睛颜色这个做分类是吧?那这里有一个问题,我以编号做分类行不行的,你看我很明确就知道了,123就是亚洲人,456就是就是不是亚洲人,这可以吗?这肯定是不可以的,对吧,但是呢,换一种情况,有的人就觉得可以了,比如说有一个他自己采集到一些什么类似于学号,或者是一些真的是这个人的一个信息。
11:56
比如打比方有可能是他的,呃,身份证号对吧,或者是他的身份ID,他真的本身就是跟那个亚洲人就是有关系的,但是他也把这东西拿过来放在这个模型里边去了,他放进来没错,但是这么分毫无疑问是没有分化能力的,对吧?我学到了所有身份证,这这对于我未来遇见其他没见过的人来说,没有任何的帮助,对不对?所以说这就学到,你也知道我们一个思想,就我们要给他惩罚。
12:25
不要再提它一次性,它能把所有的特征都分出来,这是件好事,但是我不能让它这个特征分的时候把它数据全切开,明白吧?比如说现在编号,咱们拿编号来说,编号要想把亚洲人和非亚洲人分开的话,它会切成六份,对吧?而眼睛颜色只需要切成两份对吧?所以六很明显这六是一个比比二大很多的数,对吧,大三倍的数,我把六做一个惩罚就OK了。明白吧?最简单的办法就是把他们当成分母一出,看看谁大就就是谁好,因为这个六它分类虽然好,但是它很显然就那种ID类的那种信息,你你拿100万数据,1000万数据进来训练的时候,他肯定一除他那个就是他那个好处啊,就那个优势都都出没了,肯定出没了对吧,所以这个就可以把这种算法过滤掉,我们刚才讲这种不除的这种算法,就是枚举这个算法叫ID3,叫ID3算法有ID1,有ID2,但是大家不用了解了啊。
13:30
后面讲的这个,呃,缺陷呢,这个优化呢,叫做74.5。74.5他们就是几好多人都同时在研究,那肯定是都有一个系列,就ID1ID2 id3 id3比较出名,就前面三法,然后74.5呢也比较出名,他就是把ID3做了一个改进,除了一个你分分类之后的这样一个商,明白吧啊。然后呢?
14:00
测试决策数是不是决策数很简单是吧?决策数是不需要你提前设计一个模型,甚至你什么都不需要做,唯一需要你做的就是剪枝和限制树高和一些指定的一些叶子,为什么呢?哈,有的时候这个数据里有噪音。对吧,但是你如果让那个数无穷无尽的去拟合它,它就又过拟合这个数,最后很可能把能把这个数据拟合成100%,很可能的就准确度达到100%,但是这对于你,你对于未来的预测来说,这本身你把噪音已经弄起来了,这不是什么好事,对吧?所以我们要限制数高,比如说数十层就已经到头了,我们不能让它变成11层,变能不能变成12层,对吧?我们也可以限制成子节点,如果这一个树根下边有五个子节点,我认为它是一个OK的,如果这树根下面只有一个子节点,我觉得这就有问题了,我我不能分到这么细的力度上,这太细了,明白吗?
15:00
明白吧,就是我循环,假设我循可以循环利用特征的话,大家觉得处理是不行的,假设我循可以循环利用特征,我是肯定能把它分成100%的。肯定能对吧。理解吧,大家我肯定能把它分成100%,但是这样对我们做这个分类来说没有任何好处,对吧?你把噪音都学进来的,我我最多让它分到十层,然后每一个叶子节点就必须最小是五个,这五个里边我要求它呃纯度,比如说大于80%或大于90%,这个时候再停止分割,这这些参数都是可以做的,对吧?所以这些东西是这个决策数里边的一些参数设置,但是本身这个模型就结说并不存在说一个model,说你要去假设一个什么线性函数啊,或者二次函数啊这个东西,对吧。学术非常简单,大家学的可能比较清楚哈。
我来说两句