机器学习之scikit-learn开发入门
作者头像
  • zhi2001
  • 2019-01-17 09:25:25 0

机器学习之 scikit-learn 开发入门 - 集成学习:随机森林算法

一 概述

本文主要介绍随机森林算法,涵盖以下几个方面:1、随机森林算法简介;2、随机森林算法库的介绍;3、随机森林算法的实际应用示例;4、随机森林算法的原理;5、总结。希望通过本文的介绍,读者能够掌握随机森林算法的应用及其原理。

二 参考资料

1、监督学习-决策树;2、scikit-learn 随机森林算法;3、维基百科随机森林算法;4、书籍《周志华-机器学习》。

三 集成学习:随机森林算法基础

1、集成学习简介 集成学习是指训练多个个体学习器,通过特定的组合策略,形成一个强大的学习器,从而实现多种算法的优势互补。集成学习主要关注两个问题:如何获取多个个体学习器以及如何选择合适的组合策略,以生成一个强学习器。

2、个体学习器 个体学习器的组合方法分为两类:同质个体学习器和异质个体学习器。同质个体学习器如决策树,而异质个体学习器则包括逻辑回归和朴素贝叶斯等。当前最常用的是同质个体学习器,尤其是决策树。同质个体学习器又可分为两种类型:一种是存在强依赖关系,需要串行生成,例如Boosting算法;另一种是没有强依赖关系,可以并行生成,例如Bagging和随机森林算法。

3、组合策略 组合策略主要包括平均法、投票法和学习法。平均法主要用于回归任务,将多个弱学习器的输出进行平均。投票法则分为多数投票法、相对多数投票法和加权投票法。学习法则是一种高级方法,通过将训练数据的输出作为新模型的输入来训练一个更强的学习器,典型方法是Stacking。

四 随机森林算法简介

随机森林是Bagging算法的一种改进,具有很强的性能,尤其适用于大数据环境下的并行训练。其主要原理将在后续章节详细阐述。

五 随机森林算法库介绍

在scikit-learn库中,RandomForestClassifier用于分类任务,而RandomForestRegressor用于回归任务。随机森林算法参数分为两部分:一部分是Bagging框架的参数,另一部分是CART决策树的参数。

1、Bagging框架参数 - n_estimators:最大弱学习器数量。一般情况下,数量不宜过小或过大,通常选择适中值,默认为100。 - oob_score:是否使用袋外样本评估模型。建议设置为True,因为袋外分数能反映模型的泛化能力。 - criterion:决策树的分裂标准,分类任务默认为基尼系数,回归任务默认为均方误差。

2、CART决策树参数 - max_features:随机森林划分时考虑的最大特征数。默认为“auto”,表示考虑根号N个特征。 - max_depth:决策树的最大深度。建议在样本量大时设置此参数,取值范围10-100之间。 - min_samples_split:内部节点再划分所需的最小样本数。建议在样本量大时增大此值。 - min_samples_leaf:叶子节点最少样本数。建议在样本量大时增大此值。

六 随机森林算法实际示例

1、导入头文件 python import numpy as np import pandas as pd from sklearn import datasets from sklearn.ensemble import RandomForestClassifier

2、样本数据 python iris = datasets.load_iris() df = pd.DataFrame(iris.data, columns=iris.feature_names)

3、划分训练数据和测试数据 python df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75 df['species'] = iris.target train, test = df[df['is_train']==True], df[df['is_train']==False] features = df.columns[:4]

4、训练模型 python clf = RandomForestClassifier(max_depth=5, n_estimators=10, max_features=1) Y, _ = pd.factorize(train['species']) clf.fit(train[features], Y)

5、预测验证 python preds = clf.predict(test[features])

6、结果展示 python print(preds) print(test['species'].values)

7、计算准确率 python diff = 0.0 for num in range(0, len(preds)): if preds[num] != test['species'].values[num]: diff += 1 rate = diff / len(preds) print(1 - rate)

七 随机森林算法原理

1、随机森林算法原理 随机森林算法通过多次随机抽样生成多个子样本集,并在这些子样本集上训练多个决策树。每个决策树在生成过程中会考虑一部分特征,这样可以增加模型的多样性。未被抽样的数据称为袋外数据,可用于评估模型的泛化能力。分类任务采用多数投票法,回归任务则采用平均法。

2、随机森林算法流程 输入为样本集D,弱学习器算法,弱分类器迭代次数T。输出为最终的强分类器f(x)。 - 对于t=1,2,...,T: - 第t次随机抽样生成包含m个样本的子集Dt。 - 使用子集Dt训练第t个弱学习器。 - 如果是分类任务,通过投票法选出最终类别;如果是回归任务,通过平均法得出最终预测值。

八 总结

随机森林算法以其高度并行化的特点,在大数据处理中表现出色。它不仅可以高效地训练模型,还能提供特征重要性评估,并具有较强的泛化能力。但同时也存在一些缺点,如难以解释和可能产生相似决策树的问题。总体而言,随机森林算法在处理高维数据和处理缺失数据方面表现优异。

    本文来源:图灵汇
责任编辑: : zhi2001
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
习之入门机器scikit开发learn
    下一篇