《随机森林》(二)算法初探

随机森林(Random Forest)能够用于分类和回归任务。通过两个应用案例来学习如何使用随机森林来解决分类和回归问题,以及算法的基本原理。

1. 算法使用

from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import fetch_california_housing
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split


def test01():

    # 加载鸢尾花数据集
    data = load_iris()
    # 切分训练和验证集
    X_train, X_test, y_train, y_test = (
        train_test_split(data.data, data.target, test_size=0.2, random_state=42))
    # 随机森林构建
    estimator = RandomForestClassifier(n_jobs=-1)
    # 随机森林训练
    estimator.fit(X_train, y_train)
    # 随机森林评估
    score = estimator.score(X_test, y_test)
    print('acc: %.3f' % score)


def test02():

    # 加载房价数据集
    data = fetch_california_housing(data_home='data')
    # 切分训练和验证集
    X_train, X_test, y_train, y_test = (
        train_test_split(data.data, data.target, test_size=0.2, random_state=42))
    # 随机森林构建
    estimator = RandomForestRegressor(n_jobs=-1)
    # 随机森林训练
    estimator.fit(X_train, y_train)
    # 随机森林评估
    score = estimator.score(X_test, y_test)
    print('r2:  %.3f' % score)


if __name__ == '__main__':
    test01()
    test02()

2. 基本原理

随机森林通过构建多个决策树并将其结果进行整合来进行预测。训练和预测过程如下图所示:

  1. 训练时,首先从训练集数据中产生多个数据子集。然后使用训练子集训练处多个决策树(分类决策树或者回归决策树)
  2. 预测时,输入待预测的样本,由每个决策树(弱学习器、基学习器)给出预测结果。对于分类问题使用多数投票、回归问题使用简单平均来得出最终预测结果。

随机森林的预测过程很容易理解,重要的是:

  1. 每个基学习器训练时的所需要的数据集如何获得?
  2. 为什么多个基学习器构成的强学习器会比单个决策树的性能更好?
未经允许不得转载:一亩三分地 » 《随机森林》(二)算法初探
评论 (0)

7 + 5 =