最近小芳的妈妈准备给小芳介绍相亲对象,想问小芳愿不愿意去见见。
小芳:多大年纪了?
妈妈:26。
小芳:长的帅不帅?
妈妈:挺帅的。
小芳:收入高不?
妈妈:不算很高,中等收入。
小芳:是公务员不?
妈妈:是,在税务局上班呢。
小芳:那好,我去见见。
以上小芳与妈妈的对话可以简单归纳为以下的决策过程
其实以上小芳的决策过程与机器学习中的决策树算法实现过程非常类似,决策树顾名思义就是长得很像树的一种模型,是机器学习中一种简单而又经典的算法,接下来给大家简单介绍一下决策树的基本原理,并教大家学习如何使用scikit-learn来构建一个决策树分类模型(决策树也可以做回归模型),最后使用此模型来预测鸢尾花的种类。
为了让大家更好的了解决策树模型的原理及实现过程,老shi再给大家举个栗子
假设现在我们又采访了一个妹纸,对以下10个男生做出相亲与否的判断,数据具体情况如下:
ok,这个栗子很简单,只有10个男生(样本),包括编号列的6个已知条件(特征),最后一列是目标变量(因变量)思考一下,单单看这10条数据,我们能不能快速找出其中的规律呢?(最怕此时空气突然安静?)前面说过妹纸的决策过程与决策树非常类似,而决策树的实现过程又可以简单归纳为以下流程图
数据集就代表样本数据,属性集就是特征
聪明的同学想必已经从流程图中注意到了一个很关键的东西--最大信息增益。有同学可能会问,信息增益是什么东西??说到信息增益,那就要从信息熵说起了,很久很久以前...啊不,跑题了。。。简单地说信息熵就是随机变量的不确定度,信息熵越大,随机变量的不确定度越大(还不明白??)比方说太阳明天从东边升起,西边落下,这件事的不确定度就是0,因为我们都知道这是个必然事件。而如果有个人说明天会下雨,那这个就不一定了,此时明天下雨的可能性就是不确定度,这样说大家该明白了吧?
信息增益就是按照某个特征划分整个数据(族群),划分前后数据(族群)信息熵的差值大小,信息增益越大,表明该特征越有区分度。比如,妹纸只见帅的,丑的都不见,那相貌这个特征就是一个很有区分度的特征(信息增益最大)因为这个特征可以最快让妹纸把决策做出来,这时就不用再扯收入、职业、身高那些了,因为这些都不是妹纸最看重的特征。所以简单地说,决策树实现过程就是依次找出信息增益最大的特征,然后划分数据(族群)的过程,直到将原来的整个数据(族群)划分开来或实现我们既定目标的过程。
以上说的都是按信息增益来划分数据(族群),这叫ID3算法,因为ID3算法会偏向取值类型较多的特征,后来人们在ID3算法基础上作出了改进,提出了C4.5算法,C4.5算法是按照信息增益率来划分数据(族群)的,这样可以有效避免算法偏向多取值特征的问题。
好的,到这里相信大家已经对决策树分类模型实现的原理有了一个基本认识。最后献上利用决策树模型预测鸢尾花种类(多分类)的模型代码,有兴趣的同学自己可以尝试一下。下节课给大家带来随机森林算法,不见不散~