机器学习的决策树介绍

概述:机器学习是当今科技世界的一个时髦词汇,特别是对于那些相信某一天机器人会取代我们的工作并最终统治全世界的人来说,这个词汇包含了趣味,挑战,困惑甚至恐怖。不管喜欢与否,我们都需要适当地在生活中引入一些智能的东西,它能够帮助我们在一瞬间解决最基本的日常问题。

机器学习是计算机科学的一个分支,它使计算机能够在没有编程的情况下进行学习。

—— 亚瑟·塞缪尔,1959

在熟悉的《终结者》系列中,我们看到了机器学习的身影,对于影片中强大的人工智能,有些人表现了对幻想成真的担忧,而另一些人则表现出了对这全新世界的期待。或许,未来的人工智能可能想要消灭整个人类,但就目前而言,人工智能所带来的成就和收益远远超出了我们想象。

谷歌的无人驾驶汽车,Facebook的人脸识别,亚马逊的智能推荐,Siri和Cortana的语音识别,PayPal的欺诈检测……诸如此类的应用还有很多很多。

所以,我们有必要对机器学习作一个简单的认识。现在我们来看看机器学习的一项热门技术——决策树。

什么是决策树?

简单地说,决策树是一棵树,其中每个分支节点代表多个备选方案之间的选择,每个叶节点代表一个决策。

它是一种受监督的学习算法(带有预定义的目标变量),主要用于分类问题和对持续性输入输出变量归类的工作。它是归纳推理中应用最广泛、最实用的方法之一。(归纳推理是从具体例子中得出一般结论的过程。)

决策树从给定的例子中学习和训练自己,并预测看不见的情况。

机器学习的决策树介绍_第1张图片

决策树的图形化示例如下所示:

机器学习的决策树介绍_第2张图片

决策树算法:ID3

ID3是Iterative Dichotomizer 3的简称,此算法是由Ross Quinlan发明的,他通过对一组固定的示例构建决策树,然后将结果树用于对未来样本进行分类。其基本思想是通过使用一个自上而下的、贪婪算法来构造决策树,在每个树节点上测试各种属性。

机器学习的决策树介绍_第3张图片

这听起来很简单,但是我们该如何选择节点来构建正确和最精确的决策树呢?我们该怎样做出决策呢?

嗯。我们可以采取一些措施来帮助我们进行最好的选择!

(Entropy)

在信息论中,熵是对信息来源不确定性的量度。它定量了数据无序的程度。熵越大表示集合越混乱,反之则表示集合越有序。

集合S中包含了与目标内容有正反偏差的实例,那么S在布尔分类上的熵就是:

决策树的熵

在这里,p+和p-是S中正反实例的占比。由于这个熵函数涉及到布尔分类,因此p+和p-的取值是介于0和1之间。

注意,如果S中只包含了一种分类,那么熵就是0。例如,如果所有的成员都是正的(p+ = 1),那么p-等于0 ,Entropy(S) = -1 * log2(1)–0 * log2(0) = -1 * 0–0 * log2(0) = 0;当集合中包含的正反例子数量相等时,熵的值就为1;如果集合中包含了不相等的正反例子,那么熵值就介于0和1之间。

机器学习的决策树介绍_第4张图片

信息增益(Information Gain)

它衡量了熵值的预期减少量。它决定了哪个属性会放入决策节点。为了让决策树的深度最小化,拥有最大化减少熵值的属性是最优的选择。

更确切地说,属性A的信息增益Gain(S, A)相对于集合的例子S可被定义为:

决策树

其中S为属性A可能出现的任意值的集合,Sv为属性A在值为v时S的子集,|Sv|为Sv中的元素数量,|S|为S中的元素数量。

让我们看看这些措施是如何工作的。

假设我们需要ID3来决定天气是否适合打棒球。在两周的时间里,收集数据来帮助ID3构建决策树。目标分类是“我们应该打棒球吗?”答案为是或者否。

参见下面的表格:

机器学习的决策树介绍_第5张图片

天气属性包含了outlook(气象), temperature(温度), humidity(湿度)和wind speed(风速),它们包含以下的值:

  • outlook = {sunny, overcast, rain}
  • temperature = {hot, mild, cool}
  • humidity = {high, normal}
  • wind = {weak, strong}

我们需要找到在决策树中哪个属性会成为根节点。

  • Entropy(S) = –(9/14) Log2 (9/14) – (5/14) Log2 (5/14) = 0.940
  • Gain(S, Wind) = Entropy(S) – (8/14)*Entropy(Sweak) – (6/14)*Entropy(Sstrong)= 0.940 – (8/14)*0.811 – (6/14)*1.00 = 0.048
    • Entropy(Sweak) = - (6/8)*log2(6/8) – (2/8)*log2(2/8) = 0.811
    • Entropy(Sstrong) = - (3/6)*log2(3/6) – (3/6)*log2(3/6) = 1.00

对于其它几个属性我们也可以照这种方法进行计算,得出的结果分别为:

  • Gain(S, Outlook) = 0.246
  • Gain(S, Temperature) = 0.029
  • Gain(S, Humidity) = 0.151

很明显,outlook属性拥有最高的增益值,因此我们选取它作为根节点的决策属性。

由于outlook有三个可能的值,因此其根节点有三个分支(sunny,overcast,rain)。那么下一个问题是,在sunny分支节点应该选什么属性来检测?由于我们已经使用了outlook,那么将在humidity, temperature和wind之间作出选择。

  • Ssunny = {D1, D2, D8, D9, D11} = 表格中outlook值为sunny的5个实例
  • Gain(Ssunny, Humidity) = 0.970
  • Gain(Ssunny, Temperature) = 0.570
  • Gain(Ssunny, Wind) = 0.019

Humidity拥有最高的增益,因此,它被选作决策节点。这个过程一直持续到所有的数据都被完美地分类或者所有属性被用完。

此决策树也可以用规则格式表示为:

机器学习的决策树介绍_第6张图片
  • IF outlook = sunny AND humidity = high THEN play baseball = no
  • IF outlook = rain AND humidity = high THEN play baseball = no
  • IF outlook = rain AND wind = strong THEN play baseball = yes
  • IF outlook = overcast THEN play baseball = yes
  • IF outlook = rain AND wind = weak THEN play baseball = yes

以上便是对决策树的简单介绍,希望对你有所帮助。

 

你可能感兴趣的:(算法)