Python机器学习:7.1 集成学习

集成学习背后的思想是将不同的分类器进行组合得到一个元分类器,这个元分类器相对于单个分类器拥有更好的泛化性能。比如,假设我们从10位专家那里分别得到了对于某个事件的预测结果,集成学习能够对这10个预测结果进行组合,得到一个更准确的预测结果。

后面我们会学到,有不同的方法来创建集成模型,这一节我们先解决一个基本的问题:为什么要用集成学习?她为什么就比单个模型效果要好呢?

本书是为初学者打造的,所以集成学习这里我们也只关注最基本的集成方法:投票法(majority voting)。投票法意味着我们在得到最后的预测类别时,看看哪个类别是大多数单分类器都预测的,这里的大多数一般是大于50%。更严格来说,投票法只适用于二分类,当然他很容易就扩展到多分类情况: 多数表决(plurality voting).

下图展示了一个投票法的例子,一共10个基本分类器:

我们先用训练集训练m个不同的分类器, 这里的分类器可以是决策树、SVM或者LR等。我们当然也可以用同一种分类器,只不过在训练每一个模型时用不同的参数或者不同的训练集(比如自主采样法)。随机森林就是一个采用这种策略的例子,它由不同的决策树模型构成。这图展示了用投票策略的集成方法步骤:

投票策略非常简单,我们收集每个单分类器的预测类别,将票数最多的作为预测结果:

以二分类为例,类别class1=-1, class2=+1, 投票预测的过程如下, 把每个单分类器的预测结果相加,如果值大于0,预测结果为正类,否则为负类:

读到这里,我想大家都有一个疑问:凭啥集成学习就比单分类器效果好?道理很简单(一点点组合数学知识),假设对于一个二分类问题,有n个单分类器,每个单分类器有相等的错误率,并且单分类器之间相互独立,错误率也不相关。 有了这些假设,我们可以计算集成模型的错误概率:

如果n=11,错误率为0.25,要想集成结果预测错误,至少要有6个单分类器预测结果不正确,错误概率是:

集成结果错误率才0.034哦,比0.25小太多。继承结果比单分类器好,也是有前提的,就是你这个单分类器的能力不能太差,至少要比随机猜测的结果好一点,至少。

从下图可以看出,只要单分类器的表现不太差,集成学习的结果总是要好于单分类器的。

Python机器学习中文版目录(http://www.aibbt.com/a/20787.html)

转载请注明出处,Python机器学习(http://www.aibbt.com/a/pythonmachinelearning/)

原文地址:https://www.cnblogs.com/aibbt/p/8548477.html

时间: 2024-08-29 10:13:41

Python机器学习:7.1 集成学习的相关文章

吴裕雄 python 机器学习——人工神经网络感知机学习算法的应用

import numpy as np from matplotlib import pyplot as plt from sklearn import neighbors, datasets from matplotlib.colors import ListedColormap from sklearn.neural_network import MLPClassifier ## 加载数据集 np.random.seed(0) # 使用 scikit-learn 自带的 iris 数据集 ir

选择性集成学习

在机器学习领域,集成学习由于可以提高学习系统的泛化能力,因此被广泛关注使用.对于集成学习可以分为两个阶段: 1)对训练数据集构造出多个基分类器. 这些基分类器的构造通常采用数据子集或者特征子集的方法进行构造,加上随机子集的方法,保证构造出的多个基分类器相互之间具有差异性 2)对这些基分类器的预测结果采用某种方式进行组合预测.             组合方式可以是平均投票,加权投票等等. 那么选择性集成学习,其实就是在集成学习的基础上增加了一个阶段,即分类器的选择阶段.也可以认为是通过剔除那些对

吴裕雄 python 机器学习——集成学习随机森林RandomForestClassifier分类模型

import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklearn.model_selection import train_test_split def load_data_classification(): ''' 加载用于分类问题的数据集 ''' # 使用 scikit-learn 自带的 digits 数据集 digits=datasets.load_d

吴裕雄 python 机器学习——集成学习梯度提升决策树GradientBoostingRegressor回归模型

import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklearn.model_selection import train_test_split def load_data_regression(): ''' 加载用于回归问题的数据集 ''' #使用 scikit-learn 自带的一个糖尿病病人的数据集 diabetes = datasets.load_di

吴裕雄 python 机器学习——集成学习随机森林RandomForestRegressor回归模型

import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklearn.model_selection import train_test_split def load_data_regression(): ''' 加载用于回归问题的数据集 ''' #使用 scikit-learn 自带的一个糖尿病病人的数据集 diabetes = datasets.load_di

吴裕雄 python 机器学习——集成学习AdaBoost算法分类模型

import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklearn.model_selection import train_test_split def load_data_classification(): ''' 加载用于分类问题的数据集 ''' # 使用 scikit-learn 自带的 digits 数据集 digits=datasets.load_d

吴裕雄 python 机器学习——集成学习AdaBoost算法回归模型

import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklearn.model_selection import train_test_split def load_data_classification(): ''' 加载用于分类问题的数据集 ''' # 使用 scikit-learn 自带的 digits 数据集 digits=datasets.load_d

学习《Python机器学习—预测分析核心算法》高清中文版PDF+高清英文版PDF+源代码

在学习和研究机器学习的时候,面临令人眼花缭乱的算法,机器学习新手往往会不知所措.从算法和Python 语言实现的角度,认识机器学习.专注于两类核心的"算法族",即惩罚线性回归和集成方法,并通过代码实例来展示所讨论的算法的使用原则.详细讨论预测模型的两类核心算法.预测模型的构建.惩罚线性回归和集成方法的具体应用和实现. 参考: <Python机器学习-预测分析核心算法>高清中文版PDF+高清英文版PDF+源代码 高清中文版,338页,带目录和书签,文字能够复制粘贴. 高清英文

机器学习算法--集成学习

1. 个体和集成 集成学习通过构建并结合多个"个体学习器"来完成学习任务.个体学习器通常由一个现有的学习算法从训练数据产生,若集成中只包含同种类型的个体学习器,称为同质集成:若包含不同类型的个体学习器,为异质集成.同质集成中的个体学习器也成为"基学习器". 如何产生并结合"好而不同"的个体学习器,恰是集成学习研究的核心. 根据个体学习器的生成方式,目前的集成学习方法大致分为两大类: (1)个体学习器间存在强依赖关系,必须串行生成的序列化方法,代表