From f7e8303479abfd9e3d35da84a472f2361df2ce70 Mon Sep 17 00:00:00 2001 From: jiangzhonglian Date: Wed, 16 Aug 2017 18:52:03 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=86=E6=88=90=E6=96=B9=E6=B3=95=EF=BC=9A?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E9=9A=8F=E6=9C=BA=E6=A3=AE=E6=9E=97=E5=92=8C?= =?UTF-8?q?AdaBoost?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- docs/1.机器学习基础.md | 56 +++++---- docs/7.1.利用AdaBoost元算法提高分类.md | 137 --------------------- docs/7.2.随机森林的使用.md | 38 ------ docs/7.集成方法-随机森林和AdaBoost.md | 163 +++++++++++++++++++++++++ 5 files changed, 198 insertions(+), 199 deletions(-) delete mode 100644 docs/7.1.利用AdaBoost元算法提高分类.md delete mode 100644 docs/7.2.随机森林的使用.md create mode 100644 docs/7.集成方法-随机森林和AdaBoost.md diff --git a/README.md b/README.md index 8d7c690b..d965efdd 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,7 @@ * 4.) [基于概率论的分类方法:朴素贝叶斯](./docs/4.朴素贝叶斯.md) * 5.) [Logistic回归](./docs/5.Logistic回归.md) * 6.) [支持向量机](./docs/6.支持向量机.md) -* 7.1) [利用AdaBoost元算法提高分类](./docs/7.1.利用AdaBoost元算法提高分类.md) -* 7.2) [随机森林的使用(非课本内容)](./docs/7.2.随机森林的使用.md) +* 7.) [集成方法-随机森林和AdaBoost](./docs/7.集成方法-随机森林和AdaBoost.md) ## 第二部分 利用回归预测数值型数据 diff --git a/docs/1.机器学习基础.md b/docs/1.机器学习基础.md index 17cd9273..c3950409 100644 --- a/docs/1.机器学习基础.md +++ b/docs/1.机器学习基础.md @@ -2,15 +2,25 @@ ![机器学习基础_首页](/images/1.MLFoundation/机器学习基础-首页.jpg) + +## 机器学习 概述 + +`机器学习`就是把无序的数据转换成有用的信息。 +1. 获取海量的数据 +2. 从海量数据中获取有用的信息 + + +## 机器学习 场景 + ``` 例如:动物猫 模式识别:人通过经验,得到:这个就是猫。 机器学习:人通过大量的书籍来学习,得到:这个就是猫 深度学习:人通过大量的书籍,然后先对书籍内容:文字/图片/视频,进行特征提取,特征强化,降维,得到:这个就是猫。 -模式识别(Pattern recognition): 模式识别是最古老的(作为一个术语而言,可以说是很过时的)。 +模式识别(pattern recognition): 模式识别是最古老的(作为一个术语而言,可以说是很过时的)。 我们把环境与客体统称为“模式”,识别是对模式的一种认知,是如何让一个计算机程序去做一些看起来很“智能”的事情。 - 通过融于智慧和直觉后,通过构建程序,识别一些事物,而不是人,例如识别数字。 + 通过融于智慧和直觉后,通过构建程序,识别一些事物,而不是人,例如: 识别数字。 机器学习(machine learning): 机器学习是最基础的(当下初创公司和研究实验室的热点领域之一)。 在90年代初,人们开始意识到一种可以更有效地构建模式识别算法的方法,那就是用数据(可以通过廉价劳动力采集获得)去替换专家(具有很多图像方面知识的人)。 “机器学习”强调的是,在给计算机程序(或者机器)输入一些数据后,它必须做一些事情,那就是学习这些数据,而这个学习的步骤是明确的。 @@ -33,13 +43,8 @@ http://baike.baidu.com/link?url=76P-uA4EBrC3G-I__P1tqeO7eoDS709Kp4wYuHxc7GNkz_xn * 邮局邮寄,手写软件自动识别寄送贺卡的地址。 * 申请贷款 或 进入赌场,通过你最近的金融活动信息进行综合评定,决定你是否合格。 -## 机器学习的简单概述 -`机器学习`就是把无序的数据转换成有用的信息;机器学习将有助于我们穿越数据雾霾,从中抽取出有用的信息。 -* 1.获取海量的数据 -* 2.从海量数据中获取有用的信息 - -## 机器学习的主要任务 +## 机器学习 主要任务 > 机器学习的主要任务就是分类和回归 @@ -49,8 +54,8 @@ http://baike.baidu.com/link?url=76P-uA4EBrC3G-I__P1tqeO7eoDS709Kp4wYuHxc7GNkz_xn * 目标变量是机器学习预测算法的测试结果。 * 在分类算法中目标变量的类型通常是标称型(如:真与假),而在回归算法中通常是连续型(如:1~100)。 -* 机器学习的训练过程 -* ![机器学习训练过程图](/images/1.MLFoundation/机器学习基础训练过程.png) +* 机器学习的训练过程
+![机器学习训练过程图](/images/1.MLFoundation/机器学习基础训练过程.png) > 监督学习 @@ -61,9 +66,9 @@ http://baike.baidu.com/link?url=76P-uA4EBrC3G-I__P1tqeO7eoDS709Kp4wYuHxc7GNkz_xn * 特征(feature-是否有缺失情况) + 目标变量(分类-离散值/回归-连续值<0~100、 -999~999>) * 特征或者属性通常是训练样本集的列,它们是独立测量得到的结果,多个特征联系在一起共同组成一个训练样本。 * `知识表示`:(例如-机器已经学会如何识别鸟类的过程) - * 1.可以采用规则集的形式【例如:数学成绩大于90分为优秀】 - * 2.可以采用概率分布的形式【例如:通过统计分布发现,90%的同学数学成绩,在70分以下,那么大于70分定为优秀】 - * 3.可以使用训练样本集中的一个实例【例如:通过样本集合,我们训练出一个模型实例,得出 年轻,数学成绩中高等,谈吐优雅,我们认为是优秀】 + 1. 可以采用规则集的形式【例如:数学成绩大于90分为优秀】 + 2. 可以采用概率分布的形式【例如:通过统计分布发现,90%的同学数学成绩,在70分以下,那么大于70分定为优秀】 + 3. 可以使用训练样本集中的一个实例【例如:通过样本集合,我们训练出一个模型实例,得出 年轻,数学成绩中高等,谈吐优雅,我们认为是优秀】 > 非监督学习 @@ -76,17 +81,22 @@ http://baike.baidu.com/link?url=76P-uA4EBrC3G-I__P1tqeO7eoDS709Kp4wYuHxc7GNkz_xn ![算法汇总](/images/1.MLFoundation/ml_algorithm.jpg) -## 学习机器学习 -* 选择算法需要考虑的两个问题 - * 使用机器学习算法的目的 - * 想要完成何种任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习算法。 - * 需要分析或收集的数据是什么 -* 举例 -* ![选择算法图](/images/1.MLFoundation/机器学习基础-选择算法.jpg) +## 机器学习 学习 + +> 选择算法需要考虑的两个问题 + +1. 使用机器学习算法的目的 + * 想要完成何种任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习算法。 +2. 需要分析或收集的数据是什么 + +> 举例 + +![选择算法图](/images/1.MLFoundation/机器学习基础-选择算法.jpg) + +> 机器学习 开发步骤 ``` -开发机器学习应用程序的步骤 * 收集数据: 收集样本数据 * 准备数据: 注意数据的格式 * 分析数据: 为了确保数据集中没有垃圾数据; @@ -97,7 +107,8 @@ http://baike.baidu.com/link?url=76P-uA4EBrC3G-I__P1tqeO7eoDS709Kp4wYuHxc7GNkz_xn * 使用算法: 将机器学习算法转为应用程序 ``` -## Python语言的优势 + +## Python语言 优势 1. 可执行伪代码 2. Python比较流行:使用广泛、代码范例多、丰富模块库,开发周期短 @@ -107,6 +118,7 @@ http://baike.baidu.com/link?url=76P-uA4EBrC3G-I__P1tqeO7eoDS709Kp4wYuHxc7GNkz_xn * 科学函数库:`SciPy`、`NumPy`(底层语言:C和Fortran) * 绘图工具库:`Matplotlib` + * * * * **作者:[片刻](http://www.apache.wiki/display/~jiangzhonglian) [1988](http://www.apache.wiki/display/~lihuisong)** diff --git a/docs/7.1.利用AdaBoost元算法提高分类.md b/docs/7.1.利用AdaBoost元算法提高分类.md deleted file mode 100644 index a5495c4a..00000000 --- a/docs/7.1.利用AdaBoost元算法提高分类.md +++ /dev/null @@ -1,137 +0,0 @@ -# 第7.1章 利用AdaBoost元算法提高分类 - -![利用AdaBoost元算法提高分类](/images/7.AdaBoost/adaboost_headPage.jpg "利用AdaBoost元算法提高分类") - -## 组合相似的分类器来提高分类性能 - -> 元算法(meta-algorithm) 或 集成方法(ensemble method) - -* 概念:是对其他算法进行组合的一种形式。 -* 通俗来说: 当做重要决定时,大家可能都会考虑吸取多个专家而不只是一个人的意见。 - 机器学习处理问题时又何尝不是如此? 这就是元算法(meta-algorithm)背后的思想。 -* 集成方法: 1. 投票选举(bagging) 2. 再学习(boosting) - -> bagging:基于数据随机重抽样的分类器构造方法 - -* 自举汇聚法(bootstrap aggregating),也称为bagging方法,是在从原始数据集选择S次后得到S个新数据集的一种技术。 - 1. 新数据集和原数据集的大小相等。 - 2. 每个数据集都是通过在原始数据集中随机选择一个样本来进行替换(替换:意味着可以多次选择同一个样本,也就有重复值)而得到的。 - 3. 该算法作用的数据集就会得到S个分类器,与此同时,选择分类器投票结果中最多的类别作为最后的分类结果。 - 4. 例如:随机森林(random forest) -* 选帅哥:美女选择择偶对象的时候,会问几个闺蜜的建议,最后选择一个综合得分最高的一个作为男朋友 - -> boosting:是基于所有分类器的加权求和的方法 - -* boosting是一种与bagging很类似的技术。 -* 不过boosting分类的结果是基于所有分类器的加权求和结果的。不论是boosting还是bagging当中,所使用的多个分类器的类型都是一致的。 -* 目前boosting方法最流行的版本是: AdaBoost。 -* 追美女:第1个帅哥失败->(传授经验:姓名、家庭情况) 第2个帅哥失败->(传授经验:兴趣爱好、性格特点) 第3个帅哥成功 - -> bagging 和 boosting 区别是什么? - -1. bagging:不同的分类器是通过串形训练而获得的,每个新分类器斗根据已训练出的分类器的性能来进行训练。 -2. boosting:是通过集中关注被已有分类器错分的那些数据来获得新的分类器。 -3. 由于 boosting 分类的结果是基于所有分类器的加权求和结果的,因此 boosting 与 bagging 不太一样。 -4. bagging 中的分类器权重是相等的,而 boosting 中的分类器权重并不相等,每个权重代表的是其对应分类器在上一轮迭代中的成功度。 - -## 应用 AdaBoost 算法 - -> AdaBoost(adaptive boosting: 自适应boosting) - -``` -能否使用弱分类器和多个实例来构建一个强分类器? 这是一个非常有趣的理论问题。 - -* 优点:泛化(由具体的、个别的扩大为一般的,就是说:模型训练完后的新样本)错误率低,易编码,可以应用在大部分分类器上,无参数调节。 -* 缺点:对离群点敏感。 -* 适用数据类型:数值型和标称型数据。 -``` - -> AdaBoost 的一般流程 - -``` -收集数据:可以使用任意方法 -准备数据:依赖于所使用的弱分类器类型,本章使用的是单层决策树,这种分类器可以处理任何数据类型。 - 当然也可以使用任意分类器作为弱分类器,第2章到第6章中的任一分类器都可以充当弱分类器。 - 作为弱分类器,简单分类器的效果更好。 -分析数据:可以使用任意方法。 -训练数据:AdaBoost 的大部分时间都用在训练上,分类器将多次在同一数据集上训练弱分类器。 -测试数据:计算分类的错误率。 -使用算法:通SVM一样,AdaBoost 预测两个类别中的一个。如果想把它应用到多个类别的场景,那么就要像多类 SVM 中的做法一样对 AdaBoost 进行修改。 -``` - -* 训练算法: 基于错误提升分类器的性能 -* 基于单层决策树构建弱分类器 - * 单层决策树(decision stump, 也称决策树桩)是一种简单的决策树。 -* 过拟合(overfitting, 也称为过学习) - * 发现测试错误率在达到一个最小值之后有开始上升,这种现象称为过拟合。 -* ![过拟合](/images/7.AdaBoost/过拟合.png) - -> AdaBoost的算法示意图 - -![AdaBoost算法示意图](/images/7.AdaBoost/adaboost_illustration.png "AdaBoost算法示意图") - -> 训练算法:基于错误提升分类器的性能 - -``` -发现: -alpha 目的主要是计算每一个分类器实例的权重(组合就是分类结果) - 分类的权重值:最大的值= alpha 的加和,最小值=-最大值 -D 的目的是为了计算错误概率: weightedError = D.T*errArr,求最佳分类器 - 特征的权重值:如果一个值误判的几率越小,那么 D 的特征权重越少 -``` - -![AdaBoost算法权重计算公式](/images/7.AdaBoost/adaboost_alpha.png "AdaBoost算法权重计算公式") - -## 完整 AdaBoost 算法的实现 - -整个实现的伪代码如下: - -``` -对每次迭代: - 利用buildStump()函数找到最佳的单层决策树 - 将最佳单层决策树加入到单层决策树数组 - 计算alpha - 计算新的权重向量D - 更新累计类别估计值 - 如果错误率等于0.0,则退出循环 -``` - -![AdaBoost代码流程图](/images/7.AdaBoost/adaboost_code-flow-chart.jpg "AdaBoost代码流程图") - -## 处理非均衡分类问题 - -> 概念 - -在分类器训练时,正例数目和反例数目不相等(相差很大) - -> 非均衡现象: - -* 判断马是否能继续生存(不可误杀) -* 过滤垃圾邮件(不可漏判) -* 不能放过传染病的人 -* 不能随便认为别人犯罪 - -> ROC评估方法 - -* ROC曲线: 最佳的分类器应该尽可能地处于左上角 -* ![ROC曲线](/images/7.AdaBoost/ROC曲线.png) - * 对不同的ROC曲线进行比较的一个指标是曲线下的面积(Area Unser the Curve, AUC). - * AUC给出的是分类器的平均性能值,当然它并不能完全代替对整条曲线的观察。 - * 一个完美分类器的AUC为1,而随机猜测的AUC则为0.5。 - -> 代价函数 - -* 基于代价函数的分类器决策控制:`TP*(-5)+FN*1+FP*50+TN*0` -* ![代价函数](/images/7.AdaBoost/代价函数.png) - -> 抽样 - -* 欠抽样(undersampling)或者过抽样(oversampling) - * 欠抽样: 意味着删除样例 - * 过抽样: 意味着复制样例(重复使用) - -* * * - -* **作者:[片刻](http://www.apache.wiki/display/~jiangzhonglian)** -* [GitHub地址](https://github.com/apachecn/MachineLearning): -* **版权声明:欢迎转载学习 => 请标注信息来源于 [ApacheCN](http://www.apachecn.org/)** diff --git a/docs/7.2.随机森林的使用.md b/docs/7.2.随机森林的使用.md deleted file mode 100644 index 371fa3b3..00000000 --- a/docs/7.2.随机森林的使用.md +++ /dev/null @@ -1,38 +0,0 @@ -# 第7.2章 随机森林的使用(个人补充,非课本内容) - -## 基本介绍 - -* 随机森林指的是利用多棵树对样本进行训练并预测的一种分类器。 -* 决策树相当于一个大师,通过自己在数据集中学到的知识对于新的数据进行分类。但是俗话说得好,一个诸葛亮,玩不过三个臭皮匠。随机森林就是希望构建多个臭皮匠,希望最终的分类效果能够超过单个大师的一种算法。 - -## 构造流程 - -* 那随机森林具体如何构建呢?有两个方面:数据的随机性选取,以及待选特征的随机选取。 - -> 数据的随机选取: - -``` -首先,从原始的数据集中采取有放回的抽样,构造子数据集,子数据集的数据量是和原始数据集相同的。不同子数据集的元素可以重复,同一个子数据集中的元素也可以重复。 -第二,利用子数据集来构建子决策树,将这个数据放到每个子决策树中,每个子决策树输出一个结果。 -最后,如果有了新的数据需要通过随机森林得到分类结果,就可以通过对子决策树的判断结果的投票,得到随机森林的输出结果了。 -如下图,假设随机森林中有3棵子决策树,2棵子树的分类结果是A类,1棵子树的分类结果是B类,那么随机森林的分类结果就是A类。 -``` -![数据重抽样](/images/7.RandomForest/数据重抽样.jpg) - -> 待选特征的随机选取 - -``` -与数据集的随机选取类似,随机森林中的子树的每一个分裂过程并未用到所有的待选特征,而是从所有的待选特征中随机选取一定的特征,之后再在随机选取的特征中选取最优的特征。这样能够使得随机森林中的决策树都能够彼此不同,提升系统的多样性,从而提升分类性能。 -下图中,蓝色的方块代表所有可以被选择的特征,也就是目前的待选特征。黄色的方块是分裂特征。左边是一棵决策树的特征选取过程,通过在待选特征中选取最优的分裂特征(别忘了前文提到的ID3算法,C4.5算法,CART算法等等),完成分裂。右边是一个随机森林中的子树的特征选取过程。 -``` -![特征重抽样](/images/7.RandomForest/特征重抽样.jpg) - -> 随机森林-流程图 - -![随机森林-流程图](/images/7.RandomForest/RandomForest_Flow.jpg) - -* * * - -* **作者:[片刻](http://www.apache.wiki/display/~jiangzhonglian)** -* [GitHub地址](https://github.com/apachecn/MachineLearning): -* **版权声明:欢迎转载学习 => 请标注信息来源于 [ApacheCN](http://www.apachecn.org/)** diff --git a/docs/7.集成方法-随机森林和AdaBoost.md b/docs/7.集成方法-随机森林和AdaBoost.md new file mode 100644 index 00000000..c7b497a5 --- /dev/null +++ b/docs/7.集成方法-随机森林和AdaBoost.md @@ -0,0 +1,163 @@ +# 第7章 集成方法 ensemble method + +![利用AdaBoost元算法提高分类](/images/7.AdaBoost/adaboost_headPage.jpg "利用AdaBoost元算法提高分类") + +## 集成方法: ensemble method(元算法: meta algorithm) 概述 + +* 概念:是对其他算法进行组合的一种形式。 +* 通俗来说: 当做重要决定时,大家可能都会考虑吸取多个专家而不只是一个人的意见。 + 机器学习处理问题时又何尝不是如此? 这就是元算法(meta-algorithm)背后的思想。 + +* 集成方法: + 1. 投票选举(bagging: 自举汇聚法 bootstrap aggregating): 是基于数据随机重抽样的分类器构造方法 + 2. 再学习(boosting): 是基于所有分类器的加权求和的方法 + +> bagging 和 boosting 区别是什么? + +1. bagging 是一种与 boosting 很类似的技术, 所使用的多个分类器的类型(数据量和特征量)都是一致的。 +2. bagging 是由不同的分类器(1.数据随机的 2.特征随机的)训练,综合得出的出现最多分类结果;boosting 是通过调整已有分类器错分的那些数据来获得新的分类器,得出目前最优的结果。 +3. bagging 中的分类器权重是相等的;而 boosting 中的分类器加权求和,所以权重并不相等,每个权重代表的是其对应分类器在上一轮迭代中的成功度。 + + +## 集成方法 场景 + +目前 bagging 方法最流行的版本是: 随机森林(random forest) +选帅哥:美女选择择偶对象的时候,会问几个闺蜜的建议,最后选择一个综合得分最高的一个作为男朋友 + +目前 boosting 方法最流行的版本是: AdaBoost +追美女:第1个帅哥失败->(传授经验:姓名、家庭情况) 第2个帅哥失败->(传授经验:兴趣爱好、性格特点) 第3个帅哥成功 + + +## 随机森林 + +### 随机森林 概述 + +* 随机森林指的是利用多棵树对样本进行训练并预测的一种分类器。 +* 决策树相当于一个大师,通过自己在数据集中学到的知识用于新数据的分类。但是俗话说得好,一个诸葛亮,玩不过三个臭皮匠。随机森林就是希望构建多个臭皮匠,希望最终的分类效果能够超过单个大师的一种算法。 + +### 随机森林 原理 + +那随机森林具体如何构建呢?
+有两个方面:
+1. 数据的随机性化
+2. 待选特征的随机化
+ +使得随机森林中的决策树都能够彼此不同,提升系统的多样性,从而提升分类性能。 + +> 数据的随机化:使得随机森林中的决策树更普遍化一点,适合更多的场景。 + +1. 采取有放回的抽样方式 构造子数据集,保证不同子集之间的数量级一样(不同子集/同一子集 之间的元素可以重复) +2. 利用子数据集来构建子决策树,将这个数据放到每个子决策树中,每个子决策树输出一个结果。 +3. 然后统计子决策树的投票结果,得到最终的分类 就是 随机森林的输出结果。 +4. 如下图,假设随机森林中有3棵子决策树,2棵子树的分类结果是A类,1棵子树的分类结果是B类,那么随机森林的分类结果就是A类。 + +![数据重抽样](/images/7.RandomForest/数据重抽样.jpg) + +> 待选特征的随机化 + +1. 子树从所有的待选特征中随机选取一定的特征。 +2. 在选取的特征中选取最优的特征。 + +下图中,蓝色的方块代表所有可以被选择的特征,也就是目前的待选特征;黄色的方块是分裂特征。
+左边是一棵决策树的特征选取过程,通过在待选特征中选取最优的分裂特征(别忘了前文提到的ID3算法,C4.5算法,CART算法等等),完成分裂。
+右边是一个随机森林中的子树的特征选取过程。
+ +![特征重抽样](/images/7.RandomForest/特征重抽样.jpg) + +### 项目实战: 随机森林 + +![随机森林](/images/7.RandomForest/RandomForest_Flow.jpg) + + +## AdaBoost + +### AdaBoost (adaptive boosting: 自适应 boosting) 概述 + +`能否使用弱分类器和多个实例来构建一个强分类器? 这是一个非常有趣的理论问题。` + +### AdaBoost 原理 + +> AdaBoost 工作原理 + +![AdaBoost 工作原理](/images/7.AdaBoost/adaboost_illustration.png "AdaBoost 工作原理") + +> AdaBoost 一般流程 + +``` +收集数据:可以使用任意方法 +准备数据:依赖于所使用的弱分类器类型,本章使用的是单层决策树,这种分类器可以处理任何数据类型。 + 当然也可以使用任意分类器作为弱分类器,第2章到第6章中的任一分类器都可以充当弱分类器。 + 作为弱分类器,简单分类器的效果更好。 +分析数据:可以使用任意方法。 +训练数据:AdaBoost 的大部分时间都用在训练上,分类器将多次在同一数据集上训练弱分类器。 +测试数据:计算分类的错误率。 +使用算法:通SVM一样,AdaBoost 预测两个类别中的一个。如果想把它应用到多个类别的场景,那么就要像多类 SVM 中的做法一样对 AdaBoost 进行修改。 +``` + +> AdaBoost 算法特点 + +``` +* 优点:泛化(由具体的、个别的扩大为一般的)错误率低,易编码,可以应用在大部分分类器上,无参数调节。 +* 缺点:对离群点敏感。 +* 适用数据类型:数值型和标称型数据。 +``` + +### 项目实战: 马疝病的预测 + +![AdaBoost代码流程图](/images/7.AdaBoost/adaboost_code-flow-chart.jpg "AdaBoost代码流程图") + +* 基于单层决策树构建弱分类器 + * 单层决策树(decision stump, 也称决策树桩)是一种简单的决策树。 +* 过拟合(overfitting, 也称为过学习) + * 发现测试错误率在达到一个最小值之后有开始上升,这种现象称为过拟合。 + +![过拟合](/images/7.AdaBoost/过拟合.png) + +> 训练算法:基于错误提升分类器的性能 + +``` +发现: +alpha 目的主要是计算每一个分类器实例的权重(组合就是分类结果) + 分类的权重值:最大的值= alpha 的加和,最小值=-最大值 +D 的目的是为了计算错误概率: weightedError = D.T*errArr,求最佳分类器 + 特征的权重值:如果一个值误判的几率越小,那么 D 的特征权重越少 +``` + +![AdaBoost算法权重计算公式](/images/7.AdaBoost/adaboost_alpha.png "AdaBoost算法权重计算公式") + +### 优化评估: 处理非均衡分类问题 + +`在分类器训练时,正例数目和反例数目不相等(相差很大)` + +> 非均衡现象: + +* 判断马是否能继续生存(不可误杀) +* 过滤垃圾邮件(不可漏判) +* 不能放过传染病的人 +* 不能随便认为别人犯罪 + +> ROC 评估方法 + +* ROC 曲线: 最佳的分类器应该尽可能地处于左上角 +* ![ROC曲线](/images/7.AdaBoost/ROC曲线.png) + * 对不同的 ROC 曲线进行比较的一个指标是曲线下的面积(Area Unser the Curve, AUC). + * AUC 给出的是分类器的平均性能值,当然它并不能完全代替对整条曲线的观察。 + * 一个完美分类器的 AUC 为1,而随机猜测的 AUC 则为0.5。 + +> 代价函数 + +* 基于代价函数的分类器决策控制:`TP*(-5)+FN*1+FP*50+TN*0` + +![代价函数](/images/7.AdaBoost/代价函数.png) + +> 抽样 + +* 欠抽样(undersampling)或者过抽样(oversampling) + * 欠抽样: 意味着删除样例 + * 过抽样: 意味着复制样例(重复使用) + +* * * + +* **作者:[片刻](http://www.apache.wiki/display/~jiangzhonglian)** +* [GitHub地址](https://github.com/apachecn/MachineLearning): +* **版权声明:欢迎转载学习 => 请标注信息来源于 [ApacheCN](http://www.apachecn.org/)**