
244
■
17
章 決定木
# True
と予測する
assert classify(tree, Candidate("Junior", "Java", True, False))
# False
と予測する
assert not classify(tree, Candidate("Junior", "Java", True, True))
属性が欠けていたり、存在しない属性値ではどうでしょう。
# True
と予測する
assert classify(tree, Candidate("Intern", "Java", True, True))
ここでの目的は、決定木をどのように作るかを示すことなので、手持ちのデータ
をすべて使って決定木を生成しました。たいていの場合、良いモデルを作るのが
目的であるなら、データをできるだけ多く収集し、学習
/
検証
/
テストの部分集合
に分割します。
17.6
ランダムフォレスト
決定木が学習用データに適合する状況を見る限り、過学習となる傾向が強いのにも
うなずけます。これを避ける方法の
1
つが、ランダムフォレストと呼ばれる手法です。
この手法では、複数の決定木を構築し、それらの出力を結合します。分類木である場
合、多数決を行い、回帰木である場合、平均を取ります。
先に紹介した生成手順は決定的でした。ここからどのようにして複数の決定木を無
作為に作るのでしょうか。
その
1
つがデータのブートストラップです(「15.6 余談:ブートストラップ」を思い
出してください)。学習用データのすべてを使っ ...