离散分类问题决策树的启示

今天梳理决策树。说起这一个模型真的也算是一个经典的模型,还好也不算太难。索性把我理解算法的精髓和编码实现都交代一下吧。

在现实生活中有些事情是可以或者方便量化的,比如上一篇逻辑回归中我们给每一道菜进行打分然后给这个菜一个评判,看看它是否好吃。然而有些事情可能量化起来不是这么容易,举一个例子,前两天Leo的同学说她被家里强迫去相亲,后来她说对方男孩还是挺好的。这个时候Leo就开始想相亲这种事,仁者见仁智者见智,每一个人评判的法则肯定不太一样,以我们世俗的眼光中,一般“高帅富”无疑是受女孩欢迎的,但是什么程度属于“高”,什么程度属于“帅”这个我们只能给出模糊的答案,那么这个模糊的答案如何将它进行计算,或者以此条件下的结果可不可信呢?决策树给了我们答案。

其实说到决策树,我比较清晰的还是用于作为分类。我们还是以女孩相亲作为一个例子,接着我们把相亲对象的条件分成“身高”,“长相”,“富有”三个部分。每一个男孩的都会被这三个指标去衡量,然后女孩根据男孩这些条件去评判这个人我见还是不见。这个结构确定下来应该是我们数据结构中的树状结构,例如下图:

PS:哈哈哈~这只是一个猜测,现实中说不定还是有真爱的~

那么言归正传,这个决策树看起来挺好的那么它是如何学习出来的?这就需要我们再细细探究一番。通过观察会其实我们会发现这个树学习的关键是找出它的各个节点之间的排列次序,既然所有的叶子节点都是判断的结果,那么哪一个特征需要我们拿来作为根节点,哪一个会成为它子节点……其实决策树的精髓也在于此,只要我们知道怎么去给特征排序,那么问题基本就解决了。

那么这个顺序我们怎么排呢?在说比较专业名词之前我们先大体猜一下这个怎么分,我们一般人想这个问题大体会想找出特征区分最鲜明的分,比如上图中“富有”的人都会被约,那么我们的根节点就安排给“富有程度”好了。

其实这个思路基本上也就是特征选择的思路。在说怎么分之前先介绍几个概念。

PS:摘抄自《统计学习方法》

第一个概念叫做熵:熵(entropy)是表示随机变量不确定性的度量。假设X是一个具有取有限个值得离散随机变量,其概率分布为:

则随机变量X的熵定义为:

若p=0则定义0log0=0。

通常对数以2的底,这是熵的单位称作比特或者纳特,由此可知,熵只依赖于X的分布,而与X的取值无关,所以将X的熵记做H(p):

熵越大,随机变量的不确定性就越大。顺便一提:我们能发现,如果概率为0或者1时候,随机变量没有不确定性。

那我们看一下有两个随机变量(X,Y),其联合概率分布为:

知道了熵我们再看看条件熵:条件熵H(Y|X)表示在已知随机变量X的条件下的随见变量Y的不确定性,随机变量X给定的条件下随机变量Y的条件熵H(Y|X),定义为X给定条件下Y的条件概率分布对X的数学期望:

最后我们需要看一下信息增益:信息增益表示特征X的信息而使得类Y的信息不确定性减少的程度,特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即:

当你开展的事业从事的行动穷途末路大势已去的时候,

离散分类问题决策树的启示

相关文章:

你感兴趣的文章:

标签云: