1. 随机森林
1.1 原理
随机森林(Random Forest)通过并行的方式构建多个相互独立的决策树模型,最后综合多个决策树模型共同作用产生输出
随机森林构建过程:
- 每次构建单个决策树模型时对输入数据(样本)进行有放回的随机采样,即自助采样法(Bootstrap sampling)
- 单个决策树模型构建过程中节点分裂时随机选取特征
- 重复随机采样和随机选取特征过程,并行方式重复构建多个相互独立的决策树模型
- 多个决策树模型结合生成随机森林,共同作用产生输出
- 分类问题:采用投票法(即少数服从多数)产生输出;回归问题:平均法(即取平均值)产生输出
有关单个决策树模型建立的原理,点击查看
1.2 sklearn实现
随机森林模型分为随机森林分类和随机森林回归,仅列出随机森林分类
参考官方文档:点击查看
随机森林分类可通过sklearn库中ensemble下的RandomForestClassifier类实现
有关参数:
- n_estimators:随机森林中单个决策树的数量
- criterion:决策树构建时特征选择的准则,即对应的决策规则
- max_depth:决策树的最大深度
- min_samples_split:节点拆分时需要的最少数据量
- min_samples_leaf:叶子节点需要的最少数据量
- min_weight_fraction_leaf:叶子节点的权重总和中需要的最小加权分数
- max_features:决策树模型建立时考虑的特征数量
- max_leaf_nodes:最大叶子节点数
- min_impurity_decrease:递归生成决策树时相应准则数值减少量的最小阈值
- bootstrap:是否进行有放回随机采样
- oob_score:是否计算保外估计数值(out-of-bag estimate)
- n_jobs:并行计算的内核数量
- random_state:控制随机过程和节点分裂特征选择的随机性
- verbose:控制拟合和预测时的详细程度
- warm_start:是否使用上一次随机森林模型并添加更多决策树
- class_weight:各类别的权重
- ccp_alpha:控制最小化复杂度剪枝的阈值,默认不剪枝
- max_samples:随机采样的样本数量
有关属性:
- base_estimateor_:单个决策树模型
- estimators_:随机森林中决策树模型列表集合
- classes_:各类别标签
- n_classes_:类别数量
- n_features_:已弃用
- n_features_in_:特征的个数
- feature_names_in_:特征的名称,仅当输入特征有(字符)名称时可用
- n_outputs_:输出类别数量
- feature_importances_:基于特征计算准则的各特征重要程度
- oob_score_:包外估计数值
- oob_decision_function:由包外估计数值计算的决策函数
有关方法:
- apply:获取随机森林中决策树上每个叶子节点对应输入数据的索引
- decision_path:获取输入数据的决策路径(过程)
- fit:生成随机森林模型
- get_params:获取对应模型参数
- predict:预测类别
- predict_log_proba:预测类别概率的对数
- predict_proba:预测类别概率
- score:获取给定数据集的平均准确度
- set_params:设置对应模型参数
使用案例
>>> import numpy as np
>>> from sklearn.ensemble import RandomForestClassifier
>>> clf = RandomForestClassifier() #实例化随机森林分类模型对象
>>> X = np.array([[1, 1], [1, 0], [0, 1]]) #数据
>>> y = np.array(['yes', 'no', 'no']) #类别
>>> clf.fit(X, y) #拟合求解
>>> clf.classes_
['no', 'yes']
>>> clf.n_features_in_
2
>>> clf.predict([[1, 0]])
['no']
>>> clf.score(X, y)
1.0
有关随机森林回归,点击查看官方文档