数据挖掘方法决策树告诉你相亲时首要考虑什么因素?
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据挖掘方法决策树告诉你相亲时首要考虑什么因素?
一、概述
所谓决策树,顾名思义,是一种树,一种依托于策略抉择而建立起来的树。
我们先来讲个例子
套用俗语,决策树分类的思想类似于找对象。
现想象一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话:
女儿:多大年纪了?
母亲:26。
女儿:长的帅不帅?
母亲:挺帅的。
女儿:收入高不?
母亲:不算很高,中等情况。
女儿:是公务员不?
母亲:是,在税务局上班呢。
女儿:那好,我去见见。
这个女孩的决策过程就是典型的分类树决策。
相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。
假设这个女孩对男人的要求是:30岁以下、长相中等以上并且是高收入者或中等以上收入的公务员,那么这个可以用下图表示女孩的决策逻辑:机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。
我们现在将上述例子数据分为两块:
X = {年龄(大于等于30,小于30),长相(帅和丑),收入水平(高、中低),是否公务员} Y = {行为(见、不见)}
我们建立这颗决策树的目的就是,让计算机自动去寻找最合适的映射关系,即:Y = f(X),所谓听上去大雅的“数据挖掘”学科,干得
也差不多就是这回事,X我们称之为样本,Y我们称之为结果(行为/类)。
样本通常是多维的,X = {x1,x2,...xn},如本例:X = {x1=年龄,x2=长相,x3=收入水平,x4=是否公务员},我们就是要通过这些不同维度的观测记录数据,和应对的不同结果,找到规律(映射关系)。
这些样本X(本例中的每一个男性相亲对象)都有属性,左右着准丈母娘的行为Y见还是不见,但是不能通过几个相亲对象的属性就决定了最终是见或者不见,那么我们就要根据以往多人的相亲的经验(训练样本)来评判他们属性因素(年龄,长相、收入水平等)的重要性,当然,优先级高的肯定话语权是有重量的。
下面是一些既往经验,那么我们分析一下历史数据(训练数据),看他们哪个因素是首要考虑的:
先单纯的看看年龄的历史结果(统计训练
样本):
小于30->不见
小于30->见
大于30->不见
大于30->见
小于30岁,结果见与不见的概率都是
50%,大于30岁,你也是见与不见的概率都
是50%,看来这个因素的决定权似乎不坚定。
再看看长相的:
丑 -> 不见
帅-> 见
帅 -> 不见
帅-> 见
长相丑,不见你的概率是100%,长相帅,
33.3%的概率会不见你,66.6%的概率是见你!
这位因素决定权似乎坚定了一些。
再看看是否公务员的:
是 -> 不见
否-> 见
否 -> 不见
是-> 见
和年龄一样,话语权不坚定,50:50啊!
这样,长相的话语权的重量就提升了,因此决策树的第一层就考虑长相(即相亲第一看长相)。
计算机是怎么来做到这一步的呢?
决策树训练中,有一个很重要的尺子,来衡量因素的可信度,这个尺子,就是信息论的熵(Entropy),这个熵是何许人也,让我们对他做个自我介绍吧:
熵,洋名为(Entropy),乃测量信息的混乱程度为职,纵横科学界各门学术之中,为人低调,俭朴,就一个很短的公式:
E = sum(-p(I)*log(p(I))),I=1:N
(N类结果,如本例两种,见或者不见),当信息一致,所有样本都属于一个类别I,那么熵为0,如果样本完全随机,那么熵为1,表明这个因素对这种结果的预测就是胡言乱语。
熵,对我们的相亲数据:
E(小于30岁) = -(1/2)Log2(1/2) -
(1/2)Log(1/2) = 0.5 + 0.5 = 1
E(大于30岁) = -(1/2)Log2(1/2) -
(1/2)Log(1/2) = 0.5 + 0.5 = 1
E(丑) = -(1/1)Log2(1/1) - (0/1)Log(0/1)
= 0 + 0 = 0
E(帅) = -(1/3)Log2(1/3) - (2/3)Log(2/3)
= 0.5283 + 0.39 = 0.9183
E(是公务员) = -(1/2)Log2(1/2) -
(1/2)Log(1/2) = 0.5 + 0.5 = 1
E(不是公务员) = -(1/2)Log2(1/2) -
(1/2)Log(1/2) = 0.5 + 0.5 = 1
那么我们怎么用这个熵来衡量因素(每维
数据)的可信度呢,这里还要再引出一个概念,
其是熵的上级,他熟知熵的能力,很会用熵,
他就是信息增益(Information Gain),我们来
看看这位上级是如何用熵来衡量的:
Gain(Sample,Action) = E(sample) -
sum(|Sample(v)|/Sample * E(Sample(v)))
Information Gain,说说你是怎么评估这
个例子的三个因素的!
Gain(年龄) = E(S) - (2/4)*E(小于30) -
(2/4)*E(大于30) = 1 - (2/4)*1 - (2/4)*1 = 0
Gain(长相) = E(S) - (1/4)*E(丑) -
(3/4)*E(帅) = 1 - (1/4)*0 - (3/4)*0.9183 =
0.3113
Gain(是否公务员) = E(S) - (2/4)*E(是) -
(2/4)*E(否) = 1 - (2/4)*1 - (2/4)*1 = 0
接着,计算机通过信息增益结果,选择最大的,作为首要考虑因素。
再用同样的方法,再去选择次要考虑因素,第三个考虑的因素,这就是决策树的训练。
二、R语言实现
这里选取一个相对比较特殊的例子以显示决策树的多种用途(数据来源: /class/stats202/ DATA/stagec.data)。