逆水行舟,不进则退

纸上得来终觉浅,绝知此事要躬行
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

分类分析算法在汽车市场调查中的应用

Posted on 2013-09-08 13:46  Jonee  阅读(704)  评论(0编辑  收藏  举报

1、算法描述

1.1 分类算法概述

分类算法是数据挖掘中的一个重要课题,可用于预测和决策。分类算法也是数据挖掘算法中很重要的一种,决策树(decision tree)算法是主要分类算法之一。

分类问题可描述为:输入数据,或称训练集(Training set),是一条条的数据库记录组成的。每一条记录包含若干属性,组成一个特征向量,训练集的每条记录还有一个特定的标签类与之对应,该类标签是系统的输入,通常是以往的一些经验数据。一个具体样本的形式可为样本向量:(v1,v2,……,vn;c)。这里的vn表示字段值,c表示类别。

分类的目的是分析输入数据,通过在训练集中的数据表现出来的特性,为每个类找到一种准确的描述或者模型。由此生成的类用来对未来的测试数据进行分类。尽管这些未来的测试数据的类标签是未知的,我们仍可以由此预测这些新数据所属的类。注意,是预测而不是肯定。我们也可以由此对数据中的每一个类有更好的理解,或者说我们获得了这个类的知识。

分类器评价或比较尺度主要有三种:

预测准确度:预测准确度是用的最多的一种比较尺度,特别是对于预测型分类任务,目前公认的方法的分层交叉验证法。

计算复杂度:计算复杂度依赖于具体的实现细节和硬件环境,在数据挖掘中,由于操作对象是巨量的数据库因此空间和时间的复杂度问题将是非常重要的一个环节。

模型描述的简洁度:对于描述型的分类任务,模型描述越简洁越受欢迎;例如采用规则表示的分类器构造法就比较简单,而神经网络方法产生的结果就难以理解。

1.2 决策树学习算法

决策树学习算法是以实例为基础的归纳学习算法,通常用来形成分类器和预测模型,可以对未知数据进行分类或预测、数据预处理、数据挖掘等。它通常包括两部分:树的生成和树的剪枝。

(1)决策树描述

一颗决策树的内部结点是属性或属性的集合,叶节点是所要学习划分的类,内部结点的属性称为测试属性。当经过一批训练实例集的训练产生一颗决策树,决策树可以根据属性的取值对一个未知实例集进行分类。使用决策树对实例进行分类的时候,有树根开始对该对象的属性逐渐测试其值,并且顺着分支向下走,直至到达某个叶结点,此叶结点代表的类即为该对象所处的类。

决策树是一个可以自动对数据进行分类的树型结构,是树形结构的知识表示,可以直接转换为决策规则,它能被看作一棵树的预测模型,树的根节点是整个数据集合空间,每个分节点是一个分裂问题,它是对一个单一变量的测试,给测试将数据集合空间分割成两个或更多块,每个叶结点是带有分类的数据分割。决策树也可以解释成一种特殊形式的规则集,其特征是规则的层次组织关系。决策树算法主要是用来学习以离散型变量作为属性类型的学习方法。连续型变量必须被离散化才能被学习。表1给出了决策树与自然树的对应关系以及在分类问题中的代表含义。

表1

(2)决策树的类型

决策树的内节点的测试属性可能是单变量的,即每个内节点只包含一个属性。也可能是多变量的,即存在包含多个属性的内节点。

根据测试属性的不同属性值的个数,可能使得每个内节点有两个或多个分支。如果每个内节点只有两个分支则称之为二叉决策树。

每个属性可能是值类型,也可能是枚举类型。

分类结果既可能是两类又可能是多类,如果二叉决策树的结果只能有两类则称之为布尔决策树。布尔决策树可以很容易以析取范式的方法表示,并且在决策树学习的最自然的情况就是学习析取概念。

(3)递归方式

决策树学习采用自顶向下的递归方式,在决策树的内部结点进行属性值的比较并根据不同的属性值判断从该结点向下的分支,在决策树的叶结点得到结论。所以从根到叶结点的一条路径就对应着一条合取规则,整个决策树就对应着一组析取表达式规则。决策树生成算法分成两个步骤:一是树的生成,开始时所有数据都在根节点,然后递归的进行数据分片。二是树的修剪,就是去掉一些可能是噪音或异常的数据决策树停止分割的条件有:一个结点上的数据都是属于同一个类别;没有属性可以在用于对数据进行分割。

(4)决策树的构造算法

决策树的构造算法可通过训练集T完成,其中T={<x,cj>},而x=(a1,a2,…,an)为一个训练实例,它有n个属性,分别列于属性表(A1,A2,…,An),其中ai表示属性Ai的取值。cj∈C={c1,c2,...,cm}为X的分类结果。算法分以下几步:

从属性表中选择属性Ai作为分类属性;

若属性Ai的取值有Ki个,则将T划分为Ki个子集T1,…,TK,其中

Tij={<x,C>|<x,c>}∈T,且X的属性取值A为第Ki个值;

从属性表中删除属性Ai

对于每一个Tij(1≤j≤K1),令T=Tij

如果属性表非空,返回(1),否则输出。

目前比较成熟的决策树方法有ID3、C5.0(本文所选)、CART、SLIQ等。 

(5)决策树的简化方法

在决策树学习过程中,如果决策树过于复杂,则存储所要花费的代价也就越大;而如果结点个数过多,则每个节点所包含的实例个数就越小,支持每个叶结点假设的实例个数也越小,学习后的错误率就随之增加;同时对用户来说难于理解,使得很大程度上分类器的构造没有意义,实践表明简单的假设更能反映事物之间的关系,所以在决策树学习中应该对决策树进行简化。

简化决策树的方法有控制树的规模、修改测试空间、修改测试属性、数据库约束、改变数据结构等。

控制树的规模可以采用预剪枝、后剪枝算法及增量树方法来实现,预剪枝算法不要求决策树的每一个叶结点都属于同一个类,而是在这之前就停止决策树的扩张,具体何时停止是其研究的主要内容,例如可以规定决策树的高度,达到一定高度即停止扩张;或计算扩张对系统性能的增益,如小于某个规定的值则停止扩张。后剪枝算法则首先利用增长集生成一颗未经剪枝的决策树T并进行可能的修剪,把T作为输入,再利用修剪集进行选择,输出选择最好的规则。 

(6)决策树算法的讨论

基于决策树的学习算法具有建立速度快、精度高、可以生成可理解的规则、计算量相对来说不是很大、可以处理连续值和离散值属性、可以清晰的显示哪些属性比较重要等优点,另外在学习过程中不需要使用者了解很多背景知识,只要训练例子能够用属性——结论式的方式表达出来,就能使用该算法来学习。

决策树算法的缺点:对连续性的字段比较难预测;对有时间顺序的数据,需要很多预处理工作;当类别太多时,错误可能就会增加的比较快;算法分类时只是根据一个字段来分类。

决策树技术是一种“贪心”搜索,使用了贪心算法,它把每个属性值依次试探加入左子树,如果能够找到更大的信息增益那么就把这个属性值加入左子树,否则把它退回右子树。这样试探下去,直到左子树不能再变大为止,就能求到最大的属性值。贪心算法总是做出在当前看来最好的选择,并不从整体最优考虑,它所做出的选择只是在某种意义上的局部最优选择。

2、数据描述

数据集名称:car.sas7bdat,包含1728条记录。

数据集包含6个非类标号属性,且6个属性取值如下:

①buying(购买价格):vhigh, high, med, low.

②maint(保养费用):vhigh, high, med, low.

③doors(车门数):2, 3, 4, 5more.

④persons(乘员人数):2, 4, more.

⑤lug_boot(行李箱容积):small, med, big.

⑥safety(安全性):low, med, high.

数据集还包含1个类标号属性:

Class(可接受程度):unacc, acc, good, vgood.

对数据集的基本统计描述:

①没有缺失值

②类别分布(每类的实例数),见表2。

表2

 

3、Modeler建模流程图

4、结果分析

(1)以树的形式来显示的决策树

结果解读:从决策树中可以看出,安全性低、乘员人数仅为2人的的汽车可接受程度低,安全性中等或者高、乘员人数>=4的汽车可接受程度高。大部分调查者更喜欢价格中等或低廉,保养费用低的汽车。后车厢越大则越受欢迎。

(2)每个变量的相对重要性:

(3)模型评价: 

 

从上图可以看出,有93.52%的测试样本的预测值和实际值相符,6.48%的测试样本的预测值与实际值不符。

在预测错误的样本中,实际值为“acc”但被预测为“good”的有6个,被预测为“unacc”的样本有18个,被预测为“vgood”的样本有1个;实际值为“good”但被预测为“vgood”的样本有1个;等等。

对预测类别“acc”、“good”、“unacc”以及“vgood”的绩效评价统计量分别为1.413、2.943、0.313和3.132。

置信度值报告中显示:

对于在流中的记录,显示置信值的最小值和最大值分别为0.391和1.0;对于被正确分类了的数据,其平均正确率为0.886;对于没有被正确分类了的数据,其平均不正确率为0.615。