分类
什么是分类?
假设:
- 银行贷款员需要对其数据进行分析,以了解贷款申请人对银行而言“安全”还是“风险”;
- 电子商店的营销经理需要分析数据来猜测客户是否会购买新计算机;
- 医学研究人员希望预测患者应接受的三种特殊治疗中的哪一种
这里,数据分析任务就是分类
,建立模型
是用来预测类别(标签)
的
- 贷款数据的“安全”或“风险”;
- 营销数据为“是”或“否”;
- 医疗数据的“治疗A”,“治疗B”或“治疗C”
类别标签是字符串标签或无顺序的离散值
分类和数值预测
假设营销经理要预测给定客户在销售期间的花费
这里,数据分析任务就是数值预测
,建立模型是以预测连续值函数
- 结果与类标签相反;
- 和分类不同;
- 回归分析通常用于数值预测;
简单来说:
分类和预测是两种使用数据进行预测的方式,可用来确定未来的结果。
分类是用于预测数据对象的离散类别的,需要预测的属性值是离散的、无序的。
预测则是用于预测数据对象的连续取值的,需要预测的属性值是连续的、有序的。
监督 VS 无监督学习
-
Supervised learning (针对分类:classification)
训练数据(观测,测量等)均附有表明观测类别的
标签
,是已知
的;
可以根据训练集对新数据进行分类。 -
Unsupervised learning (针对聚类:clustering)
训练数据集的
类别标签
是未知
的;
给定一组测量值,观察值等,目的是确定数据中是否存在classes或clusters。
分类过程
分类是通过有指导的学习训练建立分类模型,并使用模型对未知分类的实例进行分类。分类输出属性是离散的、无序的。
预定的数据集分为两组独立的训练数据和测试数据。
分类就是通过对已有数据集(训练集)的学习,得到一个目标函数 f(模型),来把每个属性集 X 映射到目标属性 y(类)上(y 必须是离散的)。
分类过程是一个两步的过程:第一步是模型建立阶段,或者称为训练阶段,第二步是模型使用也为评估阶段。
-
模型建立 描述一组预定的类:
分类算法构造模型通过分析(学习)训练数据;
该模型表示为分类规则,决策树或数学公式。 -
模型使用 对未来或未知目标进行分类:
用来评估模型准确性,如果准确度可以接受,使用模型来对未知数据进行分类,具体为:
模型将测试元组的已知标签与分类结果进行比较;
准确率
是模型中正确分类的测试元组的百分比;
测试集独立
于训练集(否则过度拟合)。
决策树
决策树介绍
-
决策树(Decision Tree,DT)分类法是一个简单且广泛使用的分类技术。
-
决策树是一个
类流程图
树,因此是一个数状预测模型:
树中包含3种结点:根结点、内部结点和叶子结点。决策树只有一个根结点,是全体训练数据的集合;
内部节点针对于属性执行测试;
节点的分支代表预测结果;
叶节点包含类别标签;
可以轻松转换为分类规则。 -
决策树如何用于分类?跟据属性判断决策结果。
对于给定的未知元组X,针对树来测试其属性值;
从根到叶的路径
表示X的类别。
决策树示例
使用决策树进行决策的过程就是,从根结点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子结点,将叶子结点存放的类别作为决策结果。
下图是一个预测一个人是否会购买电脑的决策树。利用这棵树,可以对新记录进行分类。从根结点(年龄)开始,如果某个人的年龄为中年,就直接判断这个人会买电脑,如果是青少年,则需要进一步判断是否是学生,如果是老年,则需要进一步判断其信用等级。
假设客户甲具备以下 4 个属性:年龄 19、低收入、是学生、信用一般。通过决策树的根结点判断年龄,判断结果为客户甲是青少年,符合左边分支,再判断客户甲是否是学生,判断结果为用户甲是学生,符合右边分支,最终用户甲落在“yes”的叶子结点上。所以预测客户甲会购买电脑。
决策树算法
基本算法是greedy算法。
数的建立是以自上而下的递归分治方式:
- 树从包含所有训练数据的单个节点开始;
- 选择最佳属性,
splitting criterion(分裂条件)
来执行测试; - 从观察到的元组的属性列表中排除不合适的分裂条件;
- 用分割条件来标注节点,节点的分支即为节点的测试结果(划分观察到的元组);
- 该算法在每个分支中的现有元组上递归执行;
- 终止:
节点中的所有元组都属于同一类;
属性列表为空,然后将节点标记为具有其元组最常见类的叶子节点;
分支为空,然后将以多数投票标记的叶子附加到该节点。
下图表示为划分元组的可能性:
- ( a )
A是离散的;
A的每一个值表示为一个分支 - ( b )
A是连续的;
两个分支基于“分裂点” - ( c )
A是离散的并且为二分类;
两个分支基于A的“分裂子集”
特征选择
按照贪婪算法建立决策树时,首先需要进行特征选择,也就是使用哪个特征作为分裂条件。选择一个合适的特征作为分裂条件,可以加快分类的速度,减少决策树的深度。
特征选择的措施
一种选择分裂条件的方法来最佳划分给定训练样本;
- 特征选择的目标就是使得分类后的数据集比较纯,理想情况下,给定分区中的所有样本都属于同一类(纯净分区)
给每一个存在的特征一个分数;
有较高分或者最高分的那个特征被选择为分裂条件;
针对特征,得到分割点或者分裂子集;
如何衡量上述的分数?
- 例如information gain(信息增益),gain ration(增益比)和(Gini系数)
特征选择方法:
选取具有最高
信息增益的特征;
- 信息是个很抽象的概念。人们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。
- Entropy(信息熵)解决了对信息的量化度量问题。
设pi为D中的元组属于C类的概率为:
∣ C i , D ∣ / ∣ D ∣ |C_i,_D| / |D| ∣Ci,D∣/∣D∣
对D中的元组进行分类所需的Expected information
(entropy):
i n f o ( D ) = − ∑ i = 1 m p i l o g 2 ( p i ) info(D) = - \sum_{i=1}^{m}p_ilog_2(p_i) info(D)=−i=1∑mpilog2(pi)
通过使用A在v分区将D分类的信息:
i n f o A ( D ) = ∑ j = 1 v D j D ∗ i n f o ( D j ) info_A(D) = \sum_{j=1}^{v}\frac{D_j}{D} * info(D_j) infoA(D)=j=1∑vDDj∗info(Dj)
通过分支特征A获得信息增益:
G a i n ( A ) = i n f o ( D ) − i n f o A ( D ) Gain(A) = info(D) - info_A(D) Gain(A)=info(D)−infoA(D)
Information Gain (ID3)
当选择某个特征对数据集进行分类时,分类后的数据集的信息嫡会比分类前的小,其差值表示为信息增益。信息增益可以衡量某个特征对分类结果的影响大小。
ID3 算法使用信息增益作为属性选择度量方法,也就是说,针对每个可以用来作为树结点的特征,计算如果采用该特征作为树结点的信息增益。然后选择信息增益最大的那个特征作为下一个树结点。
- 特征
age
具有最高的信息增益,因此被选作分裂条件
计算连续值型特征的信息增益
假设特征A为连续值型特征(例如薪水,年龄)
必须确定A的最佳分裂点
:
- 按升序对值进行排序;
- 每对相邻值之间的中点被视为可能的分裂点;
- 为每个可能的分裂点计算infoD(A)(分区数为2)
- 选择有最小的infoD(A)的点为分裂点
然后,把D分为两部分:
- D1是满足A≤split-point的元组集合,而D2是满足满足A>split-point的元组集合
Gain Ratio (C4.5)
-
信息增益偏向具有大量值的特征(例如:导致大量的纯分区)
特征product_id的信息增益为max; 无用 -
Gain Ratio
: 由C4.5(ID3的后继者)使用以克服该问题(标准化增益)
S p l i t I n f o A ( D ) = − ∑ j = 1 v ∣ D j ∣ ∣ D ∣ ∗ l o g 2 ∣ D j ∣ ∣ D ∣ SplitInfo_A(D) = - \sum_{j=1}^{v}\frac{|D_j|}{|D|} * log_2\frac{|D_j|}{|D|} SplitInfoA(D)=−j=1∑v∣D∣∣Dj∣∗log2∣D∣∣Dj∣
G a i n R a t i o ( A ) = G a i n ( A ) / S p l i t I n f o A ( D ) GainRatio(A) = Gain(A) / SplitInfo_A(D) GainRatio(A)=Gain(A)/SplitInfoA(D) -
例如:
-
选择具有最大增益比率的特征作为分裂特征
Gini Index (CART)
- 测量D的不纯度
G i n i ( D ) = 1 − ∑ i = 1 m p i 2 Gini(D) = 1- \sum_{i=1}^{m}p_i^2