Random Forest


まず最初にDecision Treeについて理解する。なぜかというと、Decision TreeはRandom Forestの各ブロック(構成要素)だからだ。Decision Treeはnon-linear modelの一員である。

CART algorithm

Decision TreeではCARTアルゴリズム法に基づいて構成されていく。CARTアルゴリズムを簡単に説明すると、最初のルートノードに目的変数を最も良く分類する説明変数を採用する。この場合、最も良く分類する基準として、ジニ指標が使用される。例えば、目的変数がXとYの2価をとり、説明変数がA ,B,Cで1、2の2値をとる時、説明変数のそれぞれの値の時のGini impurity(一塊のデータの中から適当に一つピックアップしてそれの”真のラベル”が”Decision Treeのアルゴリズムによって弾き出されたラベル”と異なるかを数値化したもの。「gini impurity=0」は完璧に分類されていることを意味する。)を計算し、平均値が最も低くなるような変数をルートノードとして採用する。これを続けていき、ノードをどんどん決めていく。

Random Forest

前書き

Random ForestはDecision Treeを集めたものだ。集める理由は、Decision Tree単体でアルゴリズムを組もうとすると、train dataにoverfittingしてしまうからだ。さらに、noiseにも反応してしまう。よって、Decision Tree単体を利用するよりも、これらをCombineしensemble modelに仕上げた、Random Forestがより適しているのだ。

The random forest is a model made up many decision tree. Rather than just simply averaging the prediction of tree, this model uses 2 key concepts that give it the name random:
1. Random sampling of training data points when building trees.
2. Random subsets of features considered when splitting nodes

1. Random sampling of training data points when building trees.

When training, each tree in a random forest learns from a random sample of the data points. それぞれのDecision Treeにランダムに選択したサンプルを学習させる。Bootstrappingという手法が使用される。

2. Random subsets of features considered when splitting nodes

Only a subset of all the features are considered for splitting each node. 例えば、16のFeaturesが存在し、そのうちの4つのみをsplitting the nodeのために使用するということ。

参考:
CARTアルゴリズムについて;
https://www.gixo.jp/blog/3980/

Gini impurityについて;
https://victorzhou.com/blog/gini-impurity/

Random Forestについて;
https://towardsdatascience.com/an-implementation-and-explanation-of-the-random-forest-in-python-77bf308a9b76