从前,夕小瑶种了一棵树

从前,夕小瑶种了一棵树

从前

从前,小夕种了一棵树,种在了小夕的小屋后面~

为什么要种这棵树呢?因为呀,它可以帮小夕总结历史经验,然后帮小夕对当前的局势做出决策~这样小夕就可以安心给大家写文章啦~

这棵树是这样的。

一开始,小夕买了一颗小树苗,把它栽到地上。

然后呢,小夕不给它浇水,也不给他浇肥料,而是让他吃历史经验。比如呢,今天,小夕让它帮小夕识别出图片中的生物是喵还是驴。所以呢,这里的历史经验就是一大堆喵和驴的图片,并且小夕给它标注好了每张图片是喵还是驴。

可是由于树没有眼睛呀,不能直接观察图片。所以呢,小夕帮它把图片转化成了特征,也就是用几个特征来描述每张图片。

小夕选了如下几个特征来描述每张图片:

1、头是否是长条形
2、身上有没有毛
3、有没有发现胡须
4、丑不丑
5、萌不萌

所以,比如小夕就会对下面这张图片:


转化为[False True False False True]特征向量(即,不是长条头、有毛、没发现胡须、不丑、萌)

然后小夕一口气给上千张图片提取完了特征,当然,这些图片都是标注好类别的。

小夕就把它们丢给小夕心爱的小树苗啦~

快快长大

诶?那小树苗要怎么生长呢?

小夕问小树苗:“小树小树,你接下来要怎么长呢?”

小树苗喝了口水,说:“我每一步的生长都是非常慎重的,我从不会多长个枝丫或者少长个枝丫。每个样本这不是有五个特征嘛,我呢,就会从中挑选出最有价值的一个特征,来作为我第一次生长的分支。”

小夕接着问:“那你要怎么挑选特征呢?”

小树苗说:“你看啊,比如你挑出来的第二个特征,“身上有没有毛”,这就是很糟糕的特征。为什么呢?我们就来看“有没有毛”这个特征。我数了一下,在所有有毛的动物中,50%的动物是喵,50%的动物是驴。而在所有没有毛的动物中,也是50%的动物是喵,50%的动物是驴。所以“有没有毛”这个特征的任何一个取值下,所有类别的样本数一样,是完全等概率的,这样的特征完全无法用来做分类啊。因为不管这个特征的值是什么,它所映射的各个类别都是等概率的。所以这个类别是最糟糕的。”

小树苗喝了口水,接着说:“但是你用的第三个特征,“有没有胡须”,就非常棒。我统计了一下,有胡须的动物中,喵占了92%,驴占了8%。而没有胡须的动物中,喵占了20%,驴占了80%。这样,如果给我一张未知类别的样本,只需要看“有没有胡须”这个特征的话,基本就可以判断出这个样本的类别是什么了!比如说这个样本的这个特征的值恰好是“没有胡须”,那么我就有80%的把握说这是一头驴!当然,如果恰好这个样本的特征的值是“有胡须”,我就有92%的把握说这个样本时一只喵!这么棒的特征,当然是首选的啦!所以,我下面要长的枝丫就是叫做“有没有胡须枝丫”!”


小夕:

“我可能买了一棵假树。

我。。。懂你的意思了。你说的选择最优特征的方法实际就是计算条件熵的过程。对于你说的“有没有毛”这个很糟糕的特征,由于这个特征的每个取值下,各个类别都是完全等概率分布的,所以是最无序的,最随机的特征,我们称为“条件熵最大的特征”。熵最大就是1,所以计算出的“有没有毛”这个特征的条件熵肯定是1。

而你说的“有没有胡须”这个特征,它的每个取值下,类别分布很随机,也就是说很有序(想象一下,最有序的状态就是每个取值下,所有样本都是同一个类别,多么有序啊。而类别等概率分布的时候,就是每个特征下鱼龙混杂的时候,啥类别都有,乱糟糟的),这种很有序的特征,计算出的条件熵肯定很小。最有序的情况下,条件熵就是0啦。”

小树:“好了。但是,我的分类目标是达到100%的准确率。所以,我要进一步挑选特征了!

基于有胡须的那个分支,我会将这个分支里的样本重新计算各个特征的条件熵(当然胡须这个特征除外),像之前一样选择条件熵最大的特征作为下一个枝丫!

一直重复这个过程,直到哪一个枝丫下的全部样本都是同一个类别了,这个枝丫就不再继续分裂了。”

最终,小树长成了大树。

这时,小夕忙着给大家写文章呢,但是小夕的一个好闺蜜小娅拿着一张图片过来了,她想让小夕帮她看看这是驴还是喵。

但是小夕很忙呀,没空理她,就让她拿着图片问后院的决策树啦~

然后小娅去问决策树这是啥,决策树说:“它有胡须吗?”

小娅说:“有!”

树:“它萌吗?”

小娅:“一点也不萌!”

树:“它是长脸吗?”

小娅:“是长脸!”

树:“那这就是只驴!”

留下一脸懵逼的小娅在树下凌乱( ̄∇ ̄)

这棵神奇的树叫什么呢?

这棵树的专业说法叫“ID3决策树”,为什么是ID3呢?因为它是通过计算条件熵来选择最优特征的。其他经典决策树如C4.5决策树、CART决策树等与ID3的区别仅在于最优特征选择的算法。

总结

然后对本文总结一下,本文经过了如下步骤,这也是一个简单的机器学习/数据挖掘任务的经典流程。

1、对已标注类别的数据集进行数据预处理与特征提取
2、训练决策树(分类器/机器学习模型)
3、对未知类别的数据集进行数据预处理与特征提取
4、利用决策树对未知类别样本的类别做出决策

想要详细了解ID3决策树选择最优特征的过程(即计算条件熵)的同学,可以Google或者百度一下“条件熵”或者查阅《数据挖掘导论》等机器学习相关的书籍;想要详细了解如何代码实现ID3决策树的同学,可以搜索各种CSDN博客或者查阅《机器学习实战》等侧重代码实现的书籍。对于如何提高决策树的泛化能力(防止过拟合)等优化技巧,或者其他类型的决策树,可以看《数据挖掘导论》等经典书籍~

喜欢本文?那小夕推荐一下自己的微信订阅号【夕小瑶的卖萌屋】,据说每个想学机器学习的人进来后都停不下来了( ̄∇ ̄)

编辑于 2017-05-08

文章被以下专栏收录

    同步与改编自微信订阅号【夕小瑶的卖萌屋】中的文章,致力于输出最萌最有营养的原创NLP&ML干货。