通过学习得到一个目标函数(分类模型) f,把每个属性集x映射到一个预先定义的类标号y
回归是一种预测建模任务,其中目标属性y是连续的
分类技术:根据输入数据集建立分类模型的系统方法。例如:决策树分类法、基于规则的分类法、神经网络、支持向量机、朴素贝叶斯分类法。以上属于学习算法,即拟合输入数据中类标号和属性集之间的联系,预测未知样本的类标号。
混淆矩阵提供衡量分类模型性能的信息
下图中的f01为实际属于类0但是被错误分为类1。因此在该图中正确分类的样本总数为(f11+f00),错误预测的样本总数是(f01+f10)。
性能度量:
准确率:
错误率:
结点类型
贪心策略:在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法
使用划分前和划分后记录的类分布定义一个度量,来确定划分记录的最佳方法
使用p(i|t)或p(i)表示在结点t中属于类i的记录的占比
用(p0, p1)记录结点的类分布,其中p0 = 1 - p1
根据划分后子女结点的不纯性作为度量来选择最佳划分,例如(1, 0)具有零不纯性,(0.5, 0.5)具有最高不纯性
不纯性度量的例子:
补充:
信息熵(Entropy):接收的每条消息中包含的信息的平均量
基尼系数(Gini index):根据劳伦茨曲线所定义的判断年收入分配公平程度的指标。基尼指数是基尼系数乘100倍作百分比表示。在民众收入中,基尼系数越小,年收入分配越平均;基尼系数越大,年收入分配越不平均。
分类误差(Classification Error)
三种度量间的比较
为了确定测试条件的效果,比较父结点于子结点间的不纯程度的差,差越大,测试条件效果越好。
增益Δ是划分效果的标准
I(.) = 给定结点的不纯性度量
N = 父结点熵记录总数
k = 属性值的个数
N(vj) = 与子结点vj相关联的记录个数
I(parent) = 不变的值
由该公式可知,最大化增益等价于最小化子结点的不纯度度量的加权平均值
若用熵做该公式的不纯度度量,熵的差就是信息增益(information gain) Δinfo
TreeGrowth算法
(1)函数createdNode()为决策树建立新结点。决策树的一个结点,要么是一个测试条件记作node.test_could,要么是一个类标号记作node.label。
(2)函数find_best_split()确定应当选择哪个属性作为划分训练记录的测试条件。测试条件的选择取决于使用哪种不纯性度量来评估划分,一些广泛使用的度量包括熵、Gini指标、χ^2统计量。
(3)函数classify()确定叶结点的类标号。对于每个叶结点t,令p(i|t)表示该结点熵属于类i的训练记录所占的比例,在大多数情况下,都将叶结点指派到具有多数记录的类
leaf.label = argmax p(i|t)
argmax 返回最大化p(i|t)的参数i。
(4)函数stopping_cond()通过检查是否所有记录都属于同一个类,或者都具有相同的属性值,决定是否终止决策树的增长。终止的另一种方法是,检查记录数是否小于某个最小阈值。
决策树归纳算法框架
TreeGrowth(E, F)
if stopping_cond(E, F) == true: #stopping_cond()通过检查是否所有记录都属于同一个类,或者都具有相同的属性值
leaf = createNode() #createdNode()为决策树建立新结点
leaf.label = Classify(E) #该结点的类标号为classify(E)
return leaf #classify()确定叶结点的类标号
else:
root = createNode() #该结点的测试条件为find_best_split(E, F)
root.test_cond = find_best_split(E, F) #find_best_split()确定应当选择哪个属性作为划分训练记录的测试条件
V = {v | v 是root.test_cond的一个可能的输出}
for v in V:
Ev = {e | root.test_cond(e)=v && e in E}
child = TreeGrowth(Ev, F)
将child作为root的派生结点添加到树中
将边(root->child)标记为v
end for
end if
return root
树剪枝:减小决策树的规模提高决策树的泛化能力,决策树过大易受过分拟合现象的影响
区分用户正常访问与web爬虫访问
为了对Web会话进行分类,需要构造每次会话特性的特征。
显著的有深度和宽度。
深度确定页面的最大距离,一般以主页的深度为0.
宽度度量Web图(分支)的宽度,例如主页拥有同往另外两个网页的链接,则宽度为2。
该模型表明可以从以下4个方面区分出web机器人和正常用户。
(1)web机器人的访问倾向于宽而浅,而正常用户访问比较集中(窄而深)。
(2)与正常的用户不同,web机器人很少访问与web文档相关的图片页。
(3)web机器人的会话的长度趋于较长,包含了大量请求页面。
(4)web机器人更可能对相同的文档发出重复的请求,因为正常用户访问的网页常常会被浏览器保存。
(1)决策树归纳是一种构建分类模型的非参数方法。不要求任何先验假设,不假定类和其他属性服从一定的概率分布。
(2)找到最佳的决策树是NP完全问题。许多决策树算法都采取启发式的方法指导对假设空间的搜索。例如,Hunt算法就采用了一种贪心的、自顶向下的递归划分策略建立决策树。
(3)已开发的构建决策树技术不需要昂贵的计算代价,在训练集非常大时也可以快速建立模型。此外,决策树一旦建立,样本分类非常快,最坏情况下的时间复杂度是O(w),其中w是树的最大深度。
(4)决策树相对容易解释,特别是小型的决策树,在很多简单的数据集上,决策树的准确率也可以与其他分类算法相媲美。
(5)决策树是学习离散值函数的典型代表。然而,它不能很好地推广到某些特定的布尔问题。一个著名的例子是奇偶函数,当奇数(偶数)个布尔属性为真时其值为0(1)。对这样的函数准确建模需要一颗具有2d个结点的满决策树,其中d是布尔属性的个数。
(6)决策树算法对于噪声的干扰具有相当好的鲁棒性(适应性),采用避免过分拟合的方法之后尤其如此。
(7)冗余属性不会对决策树的准确率造成不利的影响。一个属性如果在数据中它与另一个属性是强相关的,那么它是冗余的。
在两个冗余的属性中,如果已经选择其中一个作为用于划分的属性,则另一个将被忽略。
然而,如果数据集中含有很多不相关的属性(即对分类任务没有用的属性),则某些不相关属性可能在树的构造过程中偶然被选中,导致决策树过大庞大。通过在预处理阶段删除不相关属性,特征选择技术能够版主提高决策树的准确率。
(8)由于大多数的决策树算法都采用自顶向下的递归划分方法,因此沿着树向下,记录会越来越少。在叶结点,记录可能太少,对于叶结点代表的类,不能做出具有统计意义的判决,这就是所谓的数据碎片data fragmentation问题。解决该问题的一种可行的方法是,当样本小于某个特定阈值时停止分裂。
(9)子树可能在决策树中重复多次,如下图所示,这使得决策树过于复杂,并且可能更难解释。当决策树的每个内部结点都依赖单个属性测试条件时,就会出现这种情形。由于大多数的决策树算法都采用分治划分策略,因此在属性空间的不同部分可以使用相同的测试条件,从而导致子树重复问题。
(10)迄今为止,本章介绍的测试条件每次都只涉及一个属性。这样,可以将决策树的生长过程看成划分属性空间为不相交的区域的过程,直到每个区域都只包含同一类的记录见下图。两个不同类的相邻区域之间的边界称作决策边界(decision boundary)。由于测试条件只涉及单个属性,因此决策边界是直线,即平行于“坐标轴”,这就限制了决策树对连续属性之间复杂关系建模的表达能力。下图显示了一个数据集,使用一次只涉及一个属性的测试条件的决策树算法很难有效地对它进行分类。
**斜决策树(oblique decision tree)**可以克服这样的距西安,它允许测试条件涉及多个属性。拥有更强的表达能力,但是找出合适的测试条件相当复杂。
构造归纳(constructive induction) 将数据划分成齐次非矩形区域。创建复合属性,代表已有属性的算数或逻辑组合,并提供更好的分类能力。缺点是由于新创建的属性时已有属性的组合,构造归纳易产生冗余的属性,
(11)研究表明不纯性度量方法的选择对决策树算法的性能的影响很小,这是因为许多度量方法相互之间都是一致的,如图4-13所示,实际上,树剪枝对最终决策树的影响比不纯性度量选择的影响更大。
误差分类
训练误差(再代入误差、表现误差): 训练记录熵误分类样本比例
**泛化误差:**在未知记录上的期望误差
模型拟合不足 当决策树很小时,训练和检测误差都很大。此时模型尚未学习到数据的真实结构
模型过分拟合训练误差不断降低,检验误差增大。当训练数据增加时, 树的规模过大,结点过多,易拟合一些噪声,降低检验误差。
1、噪声导致的过分拟合
2、缺乏代表性样本导致的过分拟合
**保持(Holdout)方法:**将被标记的原始数据划分成两个不相交的集合,分别称为训练集合检验集,在训练数据集上归纳分类模型,在检验集上评估模型的性能。
局限性用于训练的被标记样本较少,因为要保留一部分记录用于检验。模型可能高度依赖于训练集和检验集的构成。
**随机二次抽样:**多次重复保持方法来改进对分类器性能的估计
**交叉验证(cross-validation):**假设把数据分为相同大小的两个子集,首先,我们选择一个子集作为训练集,而另一个做检验集,然后交换两个集合的角色,原先做训练集的现在做检验集,反之亦然,这种方法较二折交叉验证。总误差通过对两次运行的误差求和得到。
**自助法(boostrap):**训练记录采用有放回抽样,即已经选座训练的记录将放回原来的记录集中,使得它等概率地被重新抽取
使用二项式实验建模来推到置信区间,建立支配准确率度量的概率分布
二项式实验 的特性(1)实验由N个独立的实验组成,其中每个实验由两种可能的结果,成功与失败 (2)每个试验成功的概率p时常数。例如统计N次抛硬币的可能就是二项式实验。
k折交叉验证分类方法的性能。
把数据集D平均分为k个部分,使用每种分类法再k-1份数据上构建模型,再剩余的划分上检验。重复k次,每次使用不同的划分验证。