美文网首页
集成学习和随机森林

集成学习和随机森林

作者: 元宝的技术日常 | 来源:发表于2020-04-23 21:32 被阅读0次

1、集成学习

前几篇写了常见的几个机器学习算法,用这些算法训练出的模型各有优劣。而在实际的工程中,目标一定是贪心的,想要的更多地是万无一失。不难想到,把所有的模型集成在一起,做一个强大的、拥有更多优势的模型,以“饱和式救援”的思路来保证万无一失,这便是集成学习的原理。

当把模型集成到一个大的模型中时,最终的结果听谁的又成了一个问题,一般会有两种解决方案:硬投票-hard_voting和软投票-soft_voting。硬投票,就是少数服从多数。软投票,就是综合了各个算法预测标签的概率,基于概率平均的投票,所以软投票的前置条件是集成的每个算法都能估计概率。

硬投票-hard_voting 软投票-soft_voting

从投票的角度来看,集成的模型越多越好,但机器学习的算法训练出的模型还是远远不够的。那么既然算法的类别只有这几类,训练出各个算法的不同子模型就是增加模型个数的一种解决方案。训练出不同子模型,重点就是模型的差异性,如何创建差异性呢?

这种差异性是通过每个子模型只看样本数据的一部分实现的。对于取数据,取样方式分为放回取样Bagging和不放回取样Pasting,更常用的是Bagging方式,统计学中叫bootstrap。对于每个子模型来讲,因为看的样本数据减少了,那么准确率肯定会降低。但从整体的效果而言,子模型的准确并不需要太高的准确率,如果单个子模型的准确率是51%的话,500个子模型最终效果可以达到65.6%;如果单个子模型的准确率是60%的话,500个子模型最终效果就可以达到99.999%。

采用bobo老师创建简单测试用例

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split

# 创建测试数据
X, y = datasets.make_moons(n_samples=500, noise=0.3, random_state=42)

plt.scatter(X[y==0,0], X[y==0,1])
plt.scatter(X[y==1,0], X[y==1,1])
plt.show() # 见plt.show1
plt.show1
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42) # 创建训练和测试数据

from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import VotingClassifier

# 使用 Hard Voting Classifier
voting_clf = VotingClassifier(estimators=[
    ('log_clf', LogisticRegression()), 
    ('svm_clf', SVC()),
    ('dt_clf', DecisionTreeClassifier(random_state=666))],voting='hard') 

voting_clf.fit(X_train, y_train)
voting_clf.score(X_test, y_test)
# 0.89600000000000002


# 使用 Soft Voting Classifier
voting_clf2 = VotingClassifier(estimators=[
    ('log_clf', LogisticRegression()), 
    ('svm_clf', SVC(probability=True)),#probability=True,概率
    ('dt_clf', DecisionTreeClassifier(random_state=666))],
                             voting='soft') 

voting_clf2.fit(X_train, y_train)
voting_clf2.score(X_test, y_test)
# 0.91200000000000003

2、随机森林

随机森林,就是一种集成学习。它的子模型是一棵一棵的决策树,决策树作为一种非参数学习算法,使用它创建子模型更能产生差异性。

采用bobo老师创建简单测试用例

from sklearn.ensemble import RandomForestClassifier

rf_clf = RandomForestClassifier(n_estimators=500, oob_score=True, random_state=666, n_jobs=-1)
rf_clf.fit(X, y)
rf_clf.oob_score_
# 0.89200000000000002

rf_clf2 = RandomForestClassifier(n_estimators=500, max_leaf_nodes=16, oob_score=True, random_state=666, n_jobs=-1)
rf_clf2.fit(X, y)
rf_clf2.oob_score_
# 0.90600000000000003

相关文章

  • 何为决策树和随机森林?

    随机森林 定义:随机森林或随机决策森林是用于分类、回归和其他任务的集成学习方法。 名字由来:随机森林就是使用随机的...

  • 新2019计划:机器学习100天—随机森林【8】

    随机森林 随机森林是有监督的集成学习模型,主要用于分类和回归。随机森林建立了很多决策树,然后将其集成,以获得更准确...

  • 机器学习之-随机森林

    集成学习bagging-随机森林:

  • 集成学习和随机森林

    1、集成学习 前几篇写了常见的几个机器学习算法,用这些算法训练出的模型各有优劣。而在实际的工程中,目标一定是贪心的...

  • 集成学习和随机森林

    什么是集成学习? 对于不同的算法,同一个问题给出的结果可能不尽相同,这时我们应该如何判断最为准确?答案是使用不同算...

  • 机器学习-集成学习

    outline 集成学习 Boosting Bagging 随机森林 结合策略 Stacking 集成学习(ens...

  • 随机森林(Random Forest)

    随机森林(较详细) #1决策树学习 #2随机森林 (1)属于集成学习(Ensemble Learning)的方法。...

  • 基于树模型的集成算法---Random Forest

    一、模型介绍 随机森林是一种由决策树构成的集成算法. 随机森林属于集成学习中的 Bagging. 用随机的方式建立...

  • 机器学习算法概述:随机森林&逻辑回归

    摘要:机器学习算法入门介绍:随机森林与逻辑回归! 随机森林是用于分类和回归的监督式集成学习模型。为了使整体性能更好...

  • 集成学习-随机森林

    1.集成学习 集成学习是通过构建多个学习器完成任务,将多个个体学习器利用某种策略结合起来达到降低错误率的目的。 2...

网友评论

      本文标题:集成学习和随机森林

      本文链接:https://www.haomeiwen.com/subject/lrxsihtx.html