本文的笔记来源于<
监督学习:分类(Classification)或归纳学习(Inductive Learning)
属性值(Attribute-Values): A = {A1, A2, ..., An}来描述
类标(Class Label):C = {c1,c2,..., cn}
一个用于学习的数据集就是一张关系表,表里的每条记录描述了一条“以往经验”
一条数据记录即一个case
给出一个DataSet,机器学习的目标 即产生一个联系属性值集合A和类标集合C的分类/预测函数(Classification/Predication Function),该函数可用于预测新的属性集合(数据实例)的类标。
该函数也被称为分类模型(Classification Model)、预测模型(Predictive Model)或简称淡分类器(Classifier).
监督学习(Supervised Learning):所有数据已经给出了类标
无监督学习(Unsupervised Learning):所有的类属性都是未知的
训练数据集(Training Data):算法用于进行学习的数据集叫做训练数据集
测试数据集(Test Data):当学习算法(Learning Algorithm)用训练数据学习得到一个模型后,使用测试数据集来评测该模型的精准度。
分类精准度 = 正确分类的测试用例个数/测试用的总数
训练过程(Training Step) -> 训练阶段(Training Phase)
测试过程(Testing Step)-> 测试阶段(Testing Phase)
得到的分类模型表示是一棵树的形式,称之为决策树(Decision Tree)
决策节点(Decision Nodes中间节点)
叶子节点(Leaf Nodes)
纯的子集(Pure Subset):数据实例类标全部一致
分治(Divide-and-Conquer)策略:递归的对训练数据进行分隔,从而构造决策树。
最开始的时候,所有的数据样例都在根部,随着决策树的增长,样例被不断的递归的分隔。
递归的终止条件(Stopping Criteria):当所有的当前节点中的数据都属于同一类时,迭代终止。
在学习算法中,每一个后续的递归都选择最佳分类属性(Best Attribute)作为分隔当前数据实例集的属性。
最佳分类属性的选择是通过一个混杂度函数(Impurity Function)来实现的:这个函数反映了用该属性进行
数据分隔后的数据集的混杂度。
信息增益(Information Gain):
信息增益率(Information Gain Ratio):
为将决策树构建算法应用于连续属性,在一个树节点中可以将属性Ai的值划分成几人上区间,每个区间可被视为一个离散值。
C4.5中采用了二元分割(Binary Split),可使用一个合适的分割阈值(Threshold)
剪枝和过度拟合(Tree Pruning and Overfitting)
过度拟合:一个决策树算法递归地划分数据,直到不纯净度为0或没有其他属性。这个过程可能得到深度很大的树,其中很多叶子节点只覆盖很少数目的训练实例。若用这样的一棵树去预测训练集,其精度将非常高;但当它用来对测试数据进行分类时,其精度可能会非常低。这样的学习结果是意义不大的,也即决策树不能很好地泛化到所有数据上。这种现象即为过度拟合(Overfitting)。
为减少过度拟合,可对树进行剪枝,即删除一些子树或分支,用多个类的叶节点代替这些分支。一个是提早结束(Stopping Early)树构建过程(称为预剪枝,Pre-pruning);另是在树构建完毕之后再剪枝(称为后剪枝,Post-pruning)。一般认为后剪枝比较有效,预剪枝会有危险,因不知道在算法停止前,当树进一步扩展后会发生什么。
验证集合(Validation Set):使用另一个在训练和测试过程中都未被使用的独立数据集来进行,这个独立数据集通常称为验证集合。在生成了一个决策树后,首先使用它来对验证集合上的数据进行分类。
规则剪枝(Rule Pruning):一棵决策树可以被转换成一组规则的结合,
泛化(Generalization):因剪枝命名得规则变得 更加一般(具有较少条件限制),即泛化。
特殊(Specific):具有较多条件限制的规则被称为比具有较少条件限制的规则要特殊。
经剪枝后所得到的规则集合可能不再是互不相交且完全覆盖(Mutually Exclusive and Exhaustive)。
在处理那些不满足任何一个规则条件的测试数据时,可将它分类为一个默认类别(Default Class),通常是数据点最多的类。
处理缺失属性值(Handling Missing Attribute Values):eg:属性缺失时,离散属性可采用使用属性中出现最为频繁的属性值;连续值属性,可使用属性的平均值来填充缺失值。
处理偏斜类别分布(Handling Skewed Class Distribution):eg:对数据进行排序,采用排名靠前的情况。
分类精度(Accuracy):即用在测试集中被正确分类的数据数量除以测试集中的数据数量得到。
错误率(Error Rate):即1-accuracy
Holdout集合:测试集也被称为holdout集。一般情况下采用50-50或三分之二用于训练,三分之一用于测试。
将D划分成训练集和测试集:
从D 中随机采样一组数据作为学习所用,其余部分用于测试;若数据采集是不断累积的,可使用采集时间较早的数据来进行训练/学习,用时间靠后的数据进行训练。
多次随机采样:当可用数据集比较小时,测试数据集可能会太小而不具有代表性,解决这一问题的方法是进行n次随机采样过程,每次都产生一个不同的训练集合和一个不同的测试集合,同时产生n个测试精度。在数据上最终的估计精度值这n个测试精度的平均值。
交叉验证(cross-Validation):当数据集合较小时,n重交叉验证(n-fold Cross-Validation)是经常被采用的方法。该方法中,可用数据集被分成n个不相交的等大数据子集。然后每个子集被当作测试集,其余的n-1个子集合起来当作是训练集用来学习得到分类器。
缺一交叉验证(Leave-One-Out Cross-Validation):在每次交叉验证中只有一个测试数据,其余的数据被用于训练。即若初始数据共有m个数据点,则这种方法就是一个m重交叉验证。该方法可用于数据很小的情况下,而对于大数据集来说这这种验证验证过程中建立m个分类器往往是很低效的。
正例类别(Postive Class):那些用户感兴趣的类别
负例类别(Negative Class):除正例类别外的
分类为正例 | 分类为负例 | |
实际为正例 | TP | FN |
实际为负例 | FP | TN |
查准率(p):正确分类的正例数量 / 被分类的正例数量 p = TP / (TP+ FP)
查全率(r):被正确分类的正例 / 测试数据集中实际正例数量 r = TP / (TP+FN)
F-score:查准率和查全率的调和平均值。 F = 2*p*r / (1/p + 1/r)
平衡点:查准率和查全率的平衡点,即两者相等的地方。r = p
有序化的规则(Ordered Rules)
有序化的类(Ordered Classes)
(2)规则学习:Learn-One-Rule函数
类关联规则(CAR):
CBA(Classification Based on Association)
规则剪枝:
多个不同的最低支持度:
稀有类:一个单独的最小支持度是不够的,因DataSet的分布可能是非常不均匀的,可能一个类占据了数据的大多数,而另一个类在数据集中只有很小的比例,可赋予不同的最低支持minsup,使用一个全局的最低支持度t_minsup,可得到各个类的最低支持度。
条件独立:
数值属性: 离散的,连续数据需经离散化处理
估计产生的零概率:
丢失的数据:丢失的数据可被忽略,无论是在训练时估计概率还是分类时计鼻概率。
生成模型主要基于两个假设:
数据(文档)由一个混合模型生成;混合模型的每一个成分和类别一一对应。
朴素贝叶斯学习效率很高,因只需对训练数据进行一次扫描即可估计出所有需要的概率,可作为增量算法使用。
实际上训练数据是有噪声的,即某些原因存在误差
采用拉格良朗日乘子
之前讨论的支持向量机需要正负便被 线性分隔,即决策边界必须是一个超平面。为解决非纯属分割的数据,需将原始的输入数据变换成另一个空间(通常是一个更高维的空间),这样在的空间中可以用线性决策边界分割正例和负例,这个新的空间被称为特征空间,原始的数据空间被称为输入空间。
决策树、规则集合(sets of rules)、后验概率及超平面 均属迫切学习(Eager Learning)方法
k近邻(kNN)是一种惰性学习(Lazing Learning)方法
给定一个有n个样例的训练集合D和一个基本的学习算法,bagging(Bootstrap Aggregating)是这样实现的:
训练:
生成k个bootstrap样本集合S1,S2,..., Sk,每个样本集合都由有放回地从D中随机抽取得到(drawing at random with replacement)。这样一个样本集合被称为原始训练样本D的一个自展复制(Bootstrap Replicate)。每个样本集合Si平均含有63.2%的原始样本D,其中一些样本可能复制出现。
对每一个样本集合Si都构造一个分类器,将得到的k个分类器,所有分类器由同样的基本学习算法得到。
测试:
对每个测试样例进行分类,由k个分类投票(权重相同)决定、占多数的类别将会被赋予那个测试样例。
Boosting指的是一组集成方法,通过操作训练样本和生成许多分类器来提高分类准确率。
AdaBoost算法:给每个训练样本赋予不同的权重。