《机器学习实战》笔记(第一部分 分类)

采用书籍《机器学习实战》,人民邮电出版社,2013年6月第1版。在线资料:英文资料中文资料,后者中可以找到源代码和勘误。关于机器学习实战的博客已经有很多,所以本博文仅将书中的知识点进行整理和扩展。

第一部分 分类

第1章 机器学习基础

  1. 机器学习横跨计算机科学,工程技术和统计学等多个学科,需要多学科的专业知识。过去的工作基本上都有明确的定义,类似于把物品从A处搬到B处或者在某处打个洞,但是现在这类工作都在逐步消失;现今的情况有很大二义性,类似于“最大化利润”、“最小化风险”等等。机器学习和统计学有助于我们从海量的数据中抽取出有价值的信息,进而解决问题。
  2. 关键术语:表格型数据中,每一列称为特征(或属性),每一行称为实例(或条目);特征中可能包含一个特殊的代表实例分类的列,称之为目标变量或类标签,并且不把它算作特征当中;训练数据和测试数据,一般称为训练集(train set)和测试集(test set)
  3. 机器学习的主要任务:监督学习和无监督学习。监督学习必须指导数据的类标签,包括分类,回归等;无监督学习没有类别信息,聚类,关联分析等等
  4. 如何选择合适的算法:考虑是否要预测目标变量的值,选择监督或无监督学习;再考虑数据问题,对实际数据了解得越充分,越容易建立符合实际需求的应用程序。参考图片
  5. 开发机器学习应用程序的步骤:收集数据,准备输入数据,分析输入数据,训练算法,测试算法,使用算法。
  6. 使用Python:Python基础,NumPy和SciPy等包。

第2章 k-近邻算法(k-Nearest Neighbor,kNN)

  1. 优点:精度高、对异常值不敏感、无数据输入假定;缺点:计算复杂度高、空间复杂度高;适用数据范围:数值型和标称型。
  2. 原理:惰性学习的代表,没有训练算法的过程。首先,存在一个样本集,每个数据都有类标签。然后,为了求一条给定数据的分类,我们以某种相似度计算方法在样本数据集中选择k个最相似的数据。最后,选择k个最相似数据中出现次数最多的分类作为结果。
  3. k-近邻算法的一般流程:
    (1)收集数据:可以使用任何方法。
    (2)准备数据:距离计算所需要的数值,最好是结构化的数据格式。
    (3)分析数据:可以使用任何方法。
    (4)训练算法:此步骤不适用于k近邻算法。
    (5)测试算法:计算错误率。
    (6)使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k-近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理。
  4. 如果认为各个特征是同等重要的,则需要对数据进行归一化。参考两个常用的数据标准化(归一化)及Matlab实现
  5. 小结:k-近邻是分类数据最简单最有效的算法,是基于实例的学习,必须保存全部数据集,消耗空间;实际使用时需搜索所有数据,浪费时间。另一个缺陷是它无法给出数据的基础结构信息或内在含义。

第3章 决策树(decision tree)

  1. 调查表明,决策树是最经常使用的数据挖掘算法。决策树算法能够理解数据中蕴含的知识信息,符合人类的思考方式。它的数据形式(判断模块,终止模块,分支)可以用流程图来表示,也非常好理解。
  2. 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据;缺点:可能会产生过度匹配问题;适用数据类型:只适用标称型数据,数值型数据必须离散化。
  3. 决策树原理:关键在于以何种准则来划分数据集,其原则是将无序的数据变得有序,提高混乱数据的纯度;递归构建决策树,结束条件是程序遍历完所有划分数据集的属性或者每个分支下的所有实例都具有相同的分类。
  4. 常用的决策树算法:ID3、C4.5,CART。主要区别:划分数据集的准则(ID3使用信息增益,C4.5使用信息增益率,CART使用Gini不纯度)、分支数量(ID3和C4.5为类别的数量,而CART使用二分法,每次划分只有两个分支)
  5. 数据集D中类别 yi y i 的信息: l(yi)=log2p(yi) l ( y i ) = − l o g 2 p ( y i ) ,其中 p(yi) p ( y i ) 为选择该分类的概率。信息熵定义为集合中信息的度量方式,用信息的期望值计算: H(D)=ni=1p(yi)log2p(yi) H ( D ) = − ∑ i = 1 n p ( y i ) l o g 2 p ( y i ) ,n为分类的数目。信息熵的值越小,表示纯度越大。只有1个类别时,信息熵为0,此时最小。
  6. 信息增益公式如下,
    Gain(D,a)=H(D)v=1VDvDH(Dv) G a i n ( D , a ) = H ( D ) − ∑ v = 1 V D v D H ( D v )
    其中 V V 代表特征a的可能取值,记作 a1,a1,...,aV a 1 , a 1 , . . . , a V Dv D v 代表按特征 a a 各取值划分之后的子数据集。信息增益是熵的减少量或者数据无序度的减少量。信息增益越大,表示用该属性划分使得数据集的纯度提升越大!选取最大的信息增益对应的属性即可!
  7. 小结:ID3无法处理数值型数据,除非进行离散化;决策树分类器就像带有终止块的流程图,终止块表示分类结果;拟合决策树容易产生过拟合,可以通过先剪枝或后剪枝来减轻过拟合的影响;决策树是确定的分类算法,数据示例最终会被明确划分到某个分类中,而下一章的基于概率论的分类方法:朴素贝叶斯只能给出数据实例属于给定分类的概率。

第4章 基于概率论的分类方法:朴素贝叶斯(Naive Bayes)

  1. 朴素贝叶斯:以概率论为基础,假设特征之间相互独立并且每个特征同等重要。首先,在训练集上应用朴素贝叶斯算法得到可以描述数据的统计参数。统计参数的作用:可以计算某个数据实例属于各类别的概率,选择高概率对应的类别作为结果。(用p1(x,y)表示数据点(x,y)属于类别1的概率,p2(x,y)表示数据点(x,y)属于类别2的概率,选择高概率对应的类别)
  2. 优点:在数据较少的情况下仍然有效,可以处理多类别问题;缺点:对于输入数据的准备方式较为敏感;适用数据类型:标称型数据。
  3. 条件概率和贝叶斯准则:
    p(c|x)=p(c,x)p(x)p(c|x)=p(x|c)p(c)p(x)
  4. 前文用p1()和p2()进行了简化描述,而真正需要计算和比较的是 p(c1|x,y)p(c2|x,y) p ( c 1 | x , y ) 和 p ( c 2 | x , y ) ;二者表示给定某个数据点(x,y),那么该数据点来自类别 c1,c2 c 1 , c 2 的概率分别是多少?公示如下:
    p(ci|x,y)=p(x,y|ci)p(ci)p(x,y) p ( c i | x , y ) = p ( x , y | c i ) p ( c i ) p ( x , y )
    其中分母不需要计算,因为其与类标签无关。
  5. 一般流程:
    (1)收集数据:可以使用任何方法。
    (2)准备数据:需要数值型或者布尔型数据。
    (3)分析数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好。
    (4)训练算法:计算不同的独立特征的条件概率。
    (5)测试算法:计算错误率。
    (6)使用算法:一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴素贝叶斯命类器,不一定非要是文本。
  6. 进行文档分类,过滤侮辱性留言。我们吧每个词的出现与否作为一个特征,这样特征数目与我们预定义的词汇表(词向量)中的词一样多。假设单词相互独立,即一个单词出现的可能性与其它单词没有关系;假设每个单词同等重要。尽管上述两个假设存在不合理之处,但朴素贝叶斯的实际效果却很好。
  7. 从文本中构建词向量,从词向量计算概率:
    p(ci|w)=p(w|ci)p(ci)p(w) p ( c i | w ) = p ( w | c i ) p ( c i ) p ( w )
    由单词之间独立, p(w|ci)=p(w0|ci)p(w1|ci)...p(wn|ci) p ( w | c i ) = p ( w 0 | c i ) p ( w 1 | c i ) . . . p ( w n | c i ) p(ci) p ( c i ) 很容易计算,结果中只包含分母乘积,不用除以分母,因为分母和类标签没关系。
  8. 小结:朴素贝叶斯的一个最著名的应用:垃圾邮件过滤;使用概率有时比使用应规则更为有效,贝叶斯概率及贝叶斯准则提供了一种利用已知值来估计未知概率的有效方法。

第5章 Logistic回归

  1. 逻辑回归的主要思想:根据现有数据对分类边界线建立回归公式,以此进行分类。“回归”一词源于最佳拟合,表示要找到最佳拟合参数,其中需要数学分析知识。训练分类器时的做法就是寻找最佳拟合参数。
  2. 优点:计算代价不高,易于理解和实现;缺点:容易欠拟合,分类精度可能不高;适用数据类型:数值型和标称型数据。
  3. 单位阶跃函数(Sigmoid函数),利用梯度上升(或梯度下降)算法找到最佳回归系数。梯度上升算法每次更新回归系数时都需要遍历整个数据集,该方法处理大数据集浪费时间;改进方法是一次仅用一个样本点来更新回归系数,可以更快收敛,称之为随机梯度上升算法。
  4. 如何处理数据中的缺失值?使用特征的均值、使用特殊值(如-1)、忽略有缺失值的样本、使用相似样本的均值、使用另外的机器学习算法预测缺失值。
  5. 小结:Logistics回归的目的是寻找一个非线性函数Sigmod的最佳拟合参数,求解过程可以由最优化算法来完成。在最优化算法中,最常用的就是梯度上升算法,而梯度上升算法又可以简化为随机梯度上升算法;随机梯度上升算法与梯度上升算法的效果相当,但占用更少的计算资源;随机梯度上升是一个在线算法,它可以在新数据到来时就完成参数更新,而不需要重新读取整个数据集来进行批处理运算。

第6章 支持向量机(SVM)

  1. SVM是最好的现成的分类器,这里说的“现成”指的是分类器不加修改即可直接使用。同时,这就意味着在数据上应用基本形式的SVM分类器就可以得到低错误率的结果。SVM够对训练集之外的数据点做出很好的分类决策。
  2. 优点 :泛化错误率低,计算开销不大,结果易解释;缺点 :对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题。适用数据类型:数值型和标称型数据。
  3. 支持向量(support.vector)就是离分隔超平面最近的那些点
  4. 有点难,没看懂,看懂之后再来补。

第7章 利用Adaboost元算法提高分类性能

  1. Adaboost(Adaptive boosting)是集成学习的一种,集成学习就是训练若干个个体学习器,通过一定的结合策略形成一个强学习器。集成学习主要分为boosting和bagging,boosting的代表是Adaboost和GBDT;bagging的代表是随机森林。举例:我们建立一个单层决策树分类器,它实际上就是一个单节点的决策树。通过组合多个单层决策树,使算法性能超过其他的分类器。
  2. bagging:基于数据随机重抽样的分类器构建方法。自举汇聚法(bootstrap aggreating),也称为bagging方法。boosting是一种与bagging很类似的技术。不同点:boosting的个体学习器有依赖关系,后一个学习器会根据前一个学习器的结果进行调整;bagging的重点在于随机抽样,各个学习器没有依赖关系,可以并行生成。参考:集成学习原理小结
  3. Adaboost运行过程:训练数据中的每个样本,并赋予其一个权重,这些权重构成了向量D。一开始,这些权重都初始化成相等值。首先在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器。在分类器的第二次训练当中,将会重新调整每个样本的权重,其中第一次分对的样本的权重将会降低,而第一次分错的样本的权重将会提高。错误率 ϵ ϵ 、每个分类器的权重值 α=12ln(1ϵϵ) α = 1 2 l n ( 1 − ϵ ϵ )
  4. 例子:基于单层决策树构建弱分类器。Adaboost在循环之前初始化所有样本的权重向量D,核心在于for循环,每次循环中都要更新D,使得分类错误的样本的权重增大,分类正确的样本的权重减小,前者在下一次循环中会得到更大的重视。
  5. 小结:很多人认为,Adaboost和SVM是监督学习中最强大的两种方法。集成学习通过组合多个分类器的分类结果,获得了比简单的单分类器更好的分类结果。本章以单层决策树作为弱学习器构建了Adaboost分类器。实际上,Adaboost函数可以应用于任意分类器,只要该分类器能够处理加权数据即可。

参考资料:

  1. 机器学习基础
  2. 《机器学习实战》完整读书笔记
  3. ID3、C4.5、CART三种决策树的区别
  4. 集成学习原理小结
  5. 集成学习
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值