本文主要介绍随机森林算法,涵盖以下几个方面: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个弱学习器。 - 如果是分类任务,通过投票法选出最终类别;如果是回归任务,通过平均法得出最终预测值。
随机森林算法以其高度并行化的特点,在大数据处理中表现出色。它不仅可以高效地训练模型,还能提供特征重要性评估,并具有较强的泛化能力。但同时也存在一些缺点,如难以解释和可能产生相似决策树的问题。总体而言,随机森林算法在处理高维数据和处理缺失数据方面表现优异。