分类
基本概念
分类:一种数据分析形式,它提取刻画重要数据类的模型。这种模型叫分类器,进而预测分类的(离散的、无序的)类标号。
相关概念解释
- 训练集:由数据库元组和与它们相关联的类标号组成。
- 元组X用n维属性向量x=(x1,x2,x3……xn)表示,分别描述元组在n维数据库中的n个属性值的集合。
- 每个元组都可预先定义为一个类,由一个称为类标号属性的数据库属性确定。
- 类标号属性:是离散的和无序的。它是分类的(标称的。标称属性的值仅仅只是不同的名字,以区分不同对象)。因为每个值充当一个类别或类。
- 数据元组也称为:样本、记录、实例、对象、数据点。
- 属性值也称:变量、特征、字段、维。
- 属性的数量称为维度。
- 由训练集所得到的学习模型:可用分类规则、决策树、数学公式的形式表示。
第一步 建立模型(可看作学习一个函数y=f(x),它可预测给定元组X的类标号y。)
第二步 检验模型并用于新的分类(由检验集评估分类器的准确率,再应用于新的数据进行分类)
如上图分类的预测任务,首先通过已有的数据集(训练集)进行训练学习,得到一个目标函数(学习模型或分类规则),再通过检验集的数据对该模型的准确度评估,若通过评估,则该规则应用于新的数据元组分类。
- 分类器在给定检验集上的准确率是指分类器正确分类的检验元组所占的百分比。通过每个检验元组的类标号与学习模型对该元组的类预测进行比较。
- 监督学习 (用于分类)
即分类器的学习,是在已知每个训练元组的类别的“监督下”进行的。 - 无监督学习(用于聚类)
每个训练元组的类标号未知,并且学习的类的个数和集合也可能是事先未知的。
- 什么是决策树?
- 类似于流程图的树结构
- 每个内部节点表示在一个属性上的测试
- 每个分枝代表一个测试输出
- 每个树叶节点存放一个类编号
决策树:Buys_computer
- 决策树是如何分类的?
给定一个类标号未知的元组X,在决策树上测试元组的属性值,跟踪一条由根到叶节点的路径,叶节点存放该元组的类预测。 - 决策树的生成由两个阶段组成
决策树构建
1.) 使用属性选择度量来选择属性,使元组能最好的划分为不同的类。
2.) 递归的通过选定属性,来划分样本(必须是离散值)。
树剪枝
1.) 决策树建立时,许多分枝反映的是训练数据中的噪声和离群点点,树剪枝试图识别并剪去这种分枝,以提高对未知数据分类的准确性。 - 决策树的基本算法
算法主要步骤:
- 以训练样本的单个节点N开始;
- 如果样本都在同一类,则该节点成为树叶,并用该类标记。
- 否则,算法调用Attribute_selection_method(属性选择度量),选择能够最好的将样本分类的属性,确定“分裂准则”,指出“分裂点”或“分裂子集”;
- 对测试属性每个已知的值,创建一个分支,并以此划分元组;
- 算法使用同样的过程,递归的形成每个划分上的元组决策树。一旦一个属性出现在一个节点上,就在该节点的子节点上删除;
递归划分步骤停止的条件
- 情形(1):划分D(在N节点提供)的所有元组属于同一类
- 情形(2):当前属性集为空,或所有样本在所有属性上取值相同,无法划分。
- 情形(3):没有剩余的样本。
- 给定分支没有元组,则以D中多数类创建一个树叶
注:整个决策树建立的关键是:属性选择的度量,也是算法的核心
1. 属性选择度量(分裂准则)
问题: 如何选择元组的属性进行优先建树,使得将所有训练元组能最好的划分??(也即使决策树简单)。
eg. 女生约会是否见男生。eg. 明天是否打球案例。
理想的划分是,使每个划分都是“纯”的,即落在给定划分内的元组都属于同一类。
2. 常用的属性选择度量
- 信息增益
- 增益率
- Gini指数
3. 使用符号如下:
设数据分区D为标记类元组的训练集,类标号属性具有m个不同值,定义了m个不同类Ci(i=1,2,3…,m),设Ci, D 是D中Ci类元组的集合,|D|和|Ci, D|分别是D和Ci, D中元组的个数。
信息增益
ID3算法使用信息增益作为属性选择度量。它是基于香农的信息论,对信息进行度量的方法。(可参考信息论的文章xxx)。
设节点N存放分区D的元组,选择具有最高信息增益的属性作为节点N的分裂属性。该属性使最终的结果分区中对元组分类所需要的信息量最小。这种方法使得对一个元组进行分类的测试数目最小,并确保找到一颗简单的树。
对D中元组分类所需要的期望信息由下式计算:
其中,Pi是D中任意元组属于类Ci的非零概率,用|Ci, D|/|D|估计。用到信息论里面的自信息量公式,表示事件x发生前,事件发生的不确定性,或事件发生后,所得到信息量。
Info(D)是对D中所有元组分类所需要的期望信息(平均信息量)。也称为D的熵。熵是随机变量平均不确定度的度量,同时它也代表了消除随机变量不确定度所需获得的信息量。
若我们对属性A进行划分元组D,其中A具有v个不同值{a1,a2,a3…,av},若A是离散值,则对应有v个输出,可以用属性A将D划分为v个分区或子集{D1,D2,D3,…Dv},Dj包含D中的元组,它们的属性值都为aj。为了得到准确分类,还需要多少信息量?由下式计算:
是第j个分区的权重。
是基于按A划分对D的元组分类所需要的期望信息。
信息增益:原来的信息需求与新的信息需求(对A划分后)之间的差。
Gain(A)=Info(D)-InfoA(D),即对A划分后所获得的信息量。所以选择最高信息增益Gain(A)的属性A作为节点N的分裂属性。等价于在“能做最佳分类”的属性A上划分,使得完成剩余元组的划分所需要的信息量最小。
例题: