一、问题引入
我们应该设计什么的算法,使得计算机对贷款申请人员的申请信息自动进行分类,以决定能否贷款?
二、一个实例
一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话:
女儿:多大年纪了?
母亲:26。
女儿:长的帅不帅?
母亲:挺帅的。
女儿:收入高不?
母亲:不算很高,中等情况。
女儿:是公务员不?
母亲:是,在税务局上班呢。
女儿:那好,我去见见。
2.1、决策过程
这个女孩的决策过程就是典型的分类树决策。相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。
2.2、基本概念
决策树是一种描述对样本实例(男人)进行分类(见或不见)的树形结构。
决策树由结点和有向边组成。
- 最上部是根节点,此时所有样本都在一起,经过该节点后样本被划分到各子节点中。
- 每个子节点再用新的特征来进一步决策,直到最后的叶节点。
- 叶节点上只包含单纯一类样本(见或不见),不需要在进行划分。
结点两种类型:内部结点和叶结点。
内部结点表示一个特征或属性,
叶节点表示一个类。
2.2.1、特征选择
首先,我们该选择什么标准(属性、特征)作为我们的首要条件(根节点)对样本(男人)进行划分,决定见或不见呢?——特征选择
母亲希望女儿能最快速的有一个明确的态度,决定见或不见,这样好给男方一个明确的答复。
母亲需要获得尽可能多的信息,减少不确定性。
2.2.2、信息的如何度量? — 熵
母亲得到信息越多,女儿的态度越明确,与男方见与不见的不确定性越低。因此,信息量与不确定性相对应。使用熵来表示不确定性的度量。
2.2.2.1、 熵定义:如果一件事有k种可的结果,每种结果的概率为 P i , i = 1... , k P_i,i=1...,k Pi,i=1...,k
则我们对此事件的结果进行观察后得到的信息量为:
熵越大,随机变量(见与不见)的不确定性越大。
2.2.2.2 经验熵
根据给定的已知样本集,计算样本集的香农熵,就是经验熵。
比如
投硬币游戏,得到如下样本集:
正面:6次
反面:8次
则根据本次的样本集,得到样本集的香农熵就是经验熵:
经验熵
=-p(正面)*log(p正面) -p(负面)*log(p负面)
=-6/14*log2(6/14) -8/14*log2(8/14)
2.2.2.3、条件熵(局部,现象发生的前提下的熵)
条件熵H(Y|X)
表示在已知随机变量X的条件下随机变量Y的不确定性。例如,知道男生年龄的前提条件下,根据女儿见与不见的不确定性。
2.2.2.4、经验条件熵
以2.2.2.2、经验熵
为基础计算出来的条件熵,就是经验条件熵。
2.2.3、信息增益
信息增益表示得知特征X(年龄)的信息使得类Y(见与不见)的信息的不确定性减少程度。
特征A对训练数据集D的信息增益g(D,A)
,定义为集合D的经验熵H(D)与特征A给定条件下的经验条件熵H(D|A)之差
熵H(Y)与条件熵H(Y|X)之差称为互信息,即g(D,A)
。
信息增益大表明信息增多,信息增多,则不确定性就越小,母亲应该选择使得信息增益增大的条件询问女儿。
2.2.3.1、信息增益准则的特征选择方法
对数据集D,计算每个特征的信息增益,并比较他们的大小,选择信息增益最大的特征。
2.3、计算
根据贷款申请样本数据表,我们有15条样本记录,则样本容量为15。最终分为是否贷款2个类,其中是有9条记录,否有6条记录。有年龄、有工作、有自己的房子和信贷情况4个不同特征。每个特征有不同的取值,如年龄有老、中、青3种取值。
2.3.1、经验熵的计算
2.3.2、信息增益的计算
然后计算各特征对数据集D的信息增益。分别以A1,A2,A3,A4表示年龄、有工作、有自己的房子和信贷情况4个特征。
2.3.2.1、条件熵
根据年龄有取值青年、中年、老年。
青年贷款是2条记录,否3条记录,共5条记录
中年贷款是3条记录,否2条记录,共5条记录
老年贷款是4条记录,否1条记录,共5条记录
年龄为已知条件的条件熵
D1,D2,D3分别是年龄取值为青年、中年、老年的样本子集。
2.3.2.2、以年龄为条件的信息增益为
有工作的信息增益
有房子的信息增益
信贷情况的信息增益
最后比较各特征的信息增益值,对于特征A3有自己房子的信息增益值最大,所以选择特征A3作为最优特征。
结合最开始的例子,我们可以知道年龄作为首选特征的信息增益最大,选择年龄作为见与不见首要条件。
三、决策算法
3.1、ID3
ID3算法的核心是在决策树各个子节点上应用信息增益准则选择特征,递归的构建决策树,具体方法是:从根节点开始,对节点计算所有可能的特征的信息增益,选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点;再对子节点递归调用以上方法,构建决策树。
直到所有特征的信息增益均很小或没有特征可以选择为止。最后得到一个决策树。
继续前面的过程,由于特征A3: 有自己房子的信息增益值最大,所以选择特征A3作为根节点的特征。它将训练数据集划分为两个子集D1(A3取值为是)和D2(A3取值为否)。由于D1只有同一类样本点,可以明确要贷款给D1,所以它成为一个叶节点,节点类标记为“是”。
对于D2则需要从 特征A1(年龄),A2(有工作)和A4(信贷情况) 中选择新的特征。计算各个特征的信息增益:
选择信息增益最大的特征A2(有工作)作为节点特征。A2有2个取值,一个对应“是”(有工作)的子节点,包含3个样本,他们属于同一类,所以这是一个叶节点,类标记为“是”;另一个对应“否”(无工作)的子节点,包含6个样本,属于同一类,这也是一个叶节点,类标记为“否”。
换句话有15个贷款人,经过是否有房这一筛选条件,有房子的6个人能够贷款。剩余9个人需要进一步筛选,以是否有工作为筛选条件,有工作的3个人可以贷款,无工作的6个人不能够贷款。
该决策树只用了两个特征(有两个内部结点),以有自己的房子作为首要判决条件,然后以有工作作为判决条件是否可以贷款。
ID3算法只有树的生成,所以该算法生成的树容易产生过拟合,分得太细,考虑条件太多。如下图: 使用决策树预测隐形眼镜类型, 虽然很好的匹配了实验数据, 但是匹配项过多,我们将这种问题称为过度匹配(过拟合)。为了减少过拟合,我们可以裁剪一些不必要的叶子节点。如果叶子节点增加少量的信息,则可以删除该节点,将他并入其他叶子节点中。
3.2、C4.5
- 1.用信息增益选择属性时偏向于选择分枝比较多的属性值,即取值 多的属性。
- 2.不能处理连续属性。
信息增益比定义:特征A对训练数据集D的信息增益比定义为其信息增益与训练数据D关于特征A的值的熵
H
A
(
D
)
H_A(D)
HA(D)之比
其中 , n是特征A取值个数。如A代表年龄
C4.5算法是数据挖掘十大算法之一,它是对ID3算法的改进,相对于ID3算法主要有以下几个改进
(1)用信息增益比来选择属性
(2)在决策树的构造过程中对树进行剪枝
(3)对非离散数据也能处理
(4)能够对不完整数据进行处理