1 内容介紹
1.1.1 基本單元—決策樹
決策樹是廣泛用于分類和回歸任務的模型,因其結構呈樹形,故稱決策樹. 學習決策樹,本質上講就是學習一系列if/else問題,目标是通過盡可能少的if/else問題來得到正确答案,我們從這些一層層的if/else問題中進行學習并以最快的速度找到答案.
1.1.2 內建學習
內建學習是合并多個機器學習模型來建構更強大模型的方法. 目前,內建學習主要有兩大流派(bagging派系和boosting派系),其中boosting派系的代表算法主要有AdaBoost算法、梯度提升機(GBDT)和極限提升機(XGBoost),而本文中選擇的随機森林是屬于 bagging 派系的典型代表,其算法描述在表1中給出,從本質上講就是許多決策樹的集合,其中每棵樹都和其他樹略有不同.
對于分類問題,随機森林中的每棵樹都是一個分類器,也就是說,每棵樹做出一個分類結果,随機森林內建了所有樹的分類投票結果且結果的投票是等權的,即對所有的投票取平均值,并将投票次數最多的結果作為輸出.
2 仿真代碼
%% 清空環境變量
warning off % 關閉報警資訊
close all % 關閉開啟的圖窗
clear % 清空變量
clc % 清空指令行
%% 導入資料
res = xlsread('資料集.xlsx');
%% 劃分訓練集和測試集
temp = randperm(103);
P_train = res(temp(1: 80), 1: 7)';
T_train = res(temp(1: 80), 8)';
M = size(P_train, 2);
P_test = res(temp(81: end), 1: 7)';
T_test = res(temp(81: end), 8)';
N = size(P_test, 2);
%% 資料歸一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input);
[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);
%% 轉置以适應模型