OOB 検証

OOB インスタンスについて説明している以下の文で空欄に入る適切な単語を選択肢 1 ~ 3 からそれぞれ選んでください.

( Q1 ____ ) では一部のインスタンスが同じ予測器で繰り返しサンプリグされるため、サンプリングされないインスタンスが出てくる.
これらが OOB インスタンスであり、 OOB インスタンスを利用することで、わざわざ ( Q2 ____ ) を作る必要がなくなる.

[Q1の選択肢]
1. ペースティング法
2. ホールドアウト法
3. ブートストラップ法

[Q2の選択肢]
1. 訓練セット
2. テストセット
3. 検証セット

OOB 検証

OOB インスタンスについて説明している以下の文で空欄に入る適切な単語を選択肢 1 ~ 3 からそれぞれ選んでください.

( Q1 ____ ) では一部のインスタンスが同じ予測器で繰り返しサンプリグされるため、サンプリングされないインスタンスが出てくる.
これらが OOB インスタンスであり、 OOB インスタンスを利用することで、わざわざ ( Q2 ____ ) を作る必要がなくなる.

[Q1の選択肢]
1. ホールドアウト法
2. ブートストラップ法
3. ペースティング法

[Q2の選択肢]
1. 検証セット
2. 訓練セット
3. テストセット

OOB検証の実装

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、バギングありのアンサンブル学習モデルに OOB 検証を適用してください.

from sklearn.model_selection import train_test_split
from sklearn.datasets import make_moons

X, y = make_moons(n_samples=500, noise=0.30, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

# Q1:BaggingClassifier() クラスを用いて決定木でアンサンブル学習し、OOB 検証してください.
† :学習器の数は 500、random_state = 0、 CPU コアは全て使用してください.
##########

bag_c.fit(X_train, y_train)

[Q1の選択肢]
1. bag_c = BaggingClassifier(
DecisionTreeClassifier(random_state=0), 500,
max_samples=100, bootstrap=False, n_jobs=-1, random_state=0, oob_score=True)

2. bag_c = BaggingClassifier(
DecisionTreeClassifier(random_state=0), n_estimators=500,
max_samples=100, bootstrap=True, n_jobs=-1, random_state=0, oob_score=False)

3. bag_c = BaggingClassifier(
DecisionTreeClassifier(random_state=0), n_estimators=500,
max_samples=100, bootstrap=True, n_jobs=-1, random_state=0, oob_score=True)

#Q2:bag_c の OOB 検証結果を出力してください.
##########

[Q2の選択肢]
1. print(bag_c.score_)
2. print(bag_c.oob_score_)
3. print(bag_c)

OOB検証の実装

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、バギングありのアンサンブル学習モデルに OOB 検証を適用してください.

from sklearn.model_selection import train_test_split
from sklearn.datasets import make_moons

X, y = make_moons(n_samples=500, noise=0.30, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

# Q1:BaggingClassifier() クラスを用いて決定木でアンサンブル学習し、OOB 検証してください.
† :学習器の数は 500、random_state = 0、 CPU コアは全て使用してください.
##########

bag_c.fit(X_train, y_train)

[Q1の選択肢]
1. bag_c = BaggingClassifier(
DecisionTreeClassifier(random_state=0), n_estimators=500,
max_samples=100, bootstrap=True, n_jobs=-1, random_state=0, oob_score=True)

2. bag_c = BaggingClassifier(
DecisionTreeClassifier(random_state=0), 500,
max_samples=100, bootstrap=False, n_jobs=-1, random_state=0, oob_score=True)

3. bag_c = BaggingClassifier(
DecisionTreeClassifier(random_state=0), n_estimators=500,
max_samples=100, bootstrap=True, n_jobs=-1, random_state=0, oob_score=False)

#Q2:bag_c の OOB 検証結果を出力してください.
##########

[Q2の選択肢]
1. print(bag_c.oob_score_)
2. print(bag_c.score_)
3. print(bag_c.coef_

ランダムフォレスト

ランダムフォレストを説明している以下の文の空欄に入る適正な単語を選択肢 1 ~ 6 からそれぞれ選んでください.

ランダムフォレストでは、アンサブルメソッドとして( Q1 ____ ) を使用する.また、ベースの学習器には(Q2 ____ )を使用する.
ノードを分割する際に最良の特徴量を探索するのではなく、特徴量の無作為なサブセットから最良の特徴量をサンプリングする.
よって、木の多様性が増すため( Q3 ____ ) が上り、( Q4 _____ ) を抑制できるため、よりよいアンサンブルモデルが作られる.

[Q1,Q2の選択肢]
1. ペースティング
2. 決定木
3. スタッキング
4. ブートストラップ
5. ロジスティック回帰
6. SVM

[Q3,Q4の選択肢]
1. 分散
2. バイアス
3. 学習率
4. 汎化性能
5. 過学習
6. 過小適合

ランダムフォレストの実装

下記の設問に対する答えとして相応しものを選択肢から選び、次のコードの空欄(##########)を埋めてください.

from sklearn.model_selection import train_test_split
from sklearn.datasets import make_moons

X, y = make_moons(n_samples=500, noise=0.30, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

import numpy as np
# Q1:ランダムフォレスト用のクラスをインポートしてください.
from sklearn.ensemble import ##########

[Q1 選択肢]
1. DecisionTreeClassifaier
2. BaggingClassifier
3. EnsembleClassifier
4. RandomForestClassifier

# Q1:RndomForestClassifier() クラスを用いて訓練セットをアンサンブル学習してください.
rnd_c = ##########

rnd_c.fit(X_train, y_train)

y_pred_rf = rnd_c.predict(X_test)
print(np.sum(y_pred == y_pred_rf) / len(y_pred)

[Q1の選択肢]
1. RandomForestClassifier(n_estimators=500, max_nodes=16,
                   n_jobs=-1, random_state=0)
2. RandomForestClassifier(n_estimators=500, max_leaf_nodes=16,
                   n_jobs=-1, random_state=0)
3. RandomForestClassifier(n_estimators=500, leaf=16,
                   n_jobs=-1, random_state=0)

ランダムフォレストの実装

下記の設問に対する答えとして相応しものを選択肢から選び、次のコードの空欄(##########)を埋めてください.

from sklearn.model_selection import train_test_split
from sklearn.datasets import make_moons

X, y = make_moons(n_samples=500, noise=0.30, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

import numpy as np
# Q1:RandomForestClassifier クラスをインポートしてください.
from ########## import RandomForestClassifier

[Q1 選択肢]
1. sklearn.tree
2. sklearn.metrics
3. sklearn.ensemble
4. sklearn.decomposition

# Q1:RndomForestClassifier() クラスを用いて訓練セットをアンサンブル学習してください.
rnd_c = ##########

rnd_c.fit(X_train, y_train)

y_pred_rf = rnd_c.predict(X_test)
print(np.sum(y_pred == y_pred_rf) / len(y_pred)

[Q1の選択肢]
1. RandomForestClassifier(n_estimators=500, max_leaf_nodes=16,
                   n_jobs=-1, random_state=0)
2. RandomForestClassifier(n_estimators=500, max_nodes=16,
                   n_jobs=-1, random_state=0)
3. RandomForestClassifier(n_estimators=500, leaf=16,
                   n_jobs=-1, random_state=0)

Extra-Trees

Extra-Trees の説明として正しいものを選択肢 1 ~ 3 から選んでください.

1. Extra-Trees はランダムフォレストに比べて訓練に時間がかかる.
2. ExtraTrees では、個々の特徴量の閾値も無作為に探索するため、ランダムフォレストと比べ無作為性が上がる.よって、分散が下がりバイアスが上がる.
3. 基本的には、ランダムフォレストよりも Extra-Trees の方が高性能である.

Extra-Trees

Extra-Trees の説明として正しいものを選択肢 1 ~ 3 から選んでください.

1. scikit-learn にはExtra-Trees をサポートしているクラスは存在しない.
2. 決定木は分散が高すぎるため、ノード分割さいに用いる特徴量の閾値を無作為に決定することで、木の自由度を上げる.
3. ランダムフォレストと Extra-Trees を比べて時に、どちらの方が高性能なのか判定するのは難しい.

ランダムフォレスト

ランダムフォレストを説明している以下の文の空欄に入る適正な単語を選択肢 1 ~ 6 からそれぞれ選んでください.

ランダムフォレストでは、アンサブルメソッドとして( Q1 ____ ) を使用する.また、ベースの学習器には(Q2 ____ )を使用する.
ノードを分割する際に最良の特徴量を探索するのではなく、特徴量の無作為なサブセットから最良の特徴量をサンプリングする.
よって、木の多様性が増すため( Q3 ____ ) が上り、( Q4 _____ ) を抑制できるため、より良いアンサンブルモデルが作られる.

[Q1,Q2の選択肢]
1. SVM
2. 決定木
3. ブートストラップ
4. ペースティング
5. スタッキング
6. ロジスティック回帰

[Q3,Q4の選択肢]
1. 分散
2. 汎化性能
3. バイアス
4. 過小適合
5. 過学習
6. 学習率