ランダムフォレスト
機械学習のポピュラーな手法の1つ。特徴量の重要度もわかるので、(周囲や自分への)説明安心感?もある。
2つのランダム化処理 を入れている。(サンプリングと、特徴量選択(弱い学習器なのが良い?))
データをリサンプリングする。サンプルサイズだけreplaceありで取得する。
サンプルセットの回数は、、、sklearn で min_sample_splitかな?
データが独立なら平均値の分散は、1/nになるが、相関があればその分、平均値の分散は増える。これを下の特徴量をランダムなセレクトで、ランダム化処理みたいな形にしてる。学習器のトレーニング結果のランダム性が確保できる?
決定木に使う特徴量もランダムのいくつか取る。max_features かな? 特徴量の1/3くらいが良い?
これにより、バギング(bootstrape aggregation)におけるサンプル間の相関による平均の分散を抑える。
それで、サンプルセットの数だけ学習結果が出て、それを総合的(majority vote or 割合を保ったまま?)に決める。
分けたグループの分散や、全体として情報量が高くなるように。(この辺は、決定木な話になる?)
大きな決定木ができる(nodeの分岐の数、最終的な?階層の数もパラメータである)
OOB out of bags
あと、当てられない人は 1/eだけいる の話になるけど、重複を許したサンプリングの場合、サンプルサイズの数がおおければおおいほど, そのリサンプリングに入らないデータ要素は、1/eの割合存在する。 その 1/e, 36%くらいのデータを使って、クロスバリデーションをする。(ノードごと?)。
それを out of bags といい、このテスト用なデータでのエラー率をチェックできる。
自然に?クロスバリデーションができる?