Databricks Certified Machine Learning Associate 無料問題 7 / 10 ・ 分野3: Model Development
Spark MLlib(spark.ml)で、問い合わせを5つのカテゴリのどれかに分類するモデルを作る。ラベルは StringIndexer で 0〜4 の数にしてある。決定木のアンサンブルを、1つの推定器で使いたい。どれを選ぶか。
- GBTRegressor で 0〜4 の数を予測し、四捨五入してカテゴリに戻す
- GBTClassifier を、0〜4 の5値のラベルのまま学習させる
- RandomForestClassifier を、0〜4 の5値のラベルのまま学習させる
- FMClassifier を、0〜4 の5値のラベルのまま学習させる
正解と解説を見る
正解: C
正解の理由
spark.ml のランダムフォレストは、2値分類・多クラス分類・回帰をサポートし、連続値とカテゴリの両方の特徴量を扱える。複数の決定木を組み合わせて過学習の危険を下げる。一方、同じ木のアンサンブルでも勾配ブースティング木(GBT)は2値分類と回帰だけが対象で、公式は GBTClassifier は現在2値のラベルだけをサポートすると明記している。5クラスを1つの推定器で学習させるなら、RandomForestClassifier を選ぶ。
違う選択肢
「GBTClassifier を、0〜4 の5値のラベルのまま学習させる」… 公式は GBTClassifier はいまのところ2値のラベルだけをサポートすると書いている。spark.ml の GBT が対応するのは2値分類と回帰で、5クラスのラベルをそのまま渡しても多クラス分類のモデルにはならない。
「FMClassifier を、0〜4 の5値のラベルのまま学習させる」… spark.ml の Factorization Machines は、2値分類と回帰をサポートすると書かれている。分類はシグモイド関数を通した2値で、5つのカテゴリを1つのモデルで分けることはできない。疎な特徴量の交互作用を推定する手法でもある。
「GBTRegressor で 0〜4 の数を予測し、四捨五入してカテゴリに戻す」… StringIndexer が振る 0〜4 は出現の多い順の索引で、カテゴリの間に大小や距離の意味は無い。回帰で数として当てはめると、2 と 3 の中間のような意味の無い値を学習することになり、分類のモデルとしては筋が通らない。
似た推定器との違い
単体の決定木(DecisionTreeClassifier)も2値と多クラスの分類に対応し、特徴量のスケーリングが要らない。spark.ml の木の推定器は DataFrame のメタデータで連続値とカテゴリの特徴量を見分けるので、StringIndexer や VectorIndexer で索引を付けておくと、カテゴリとして扱われる。
Databricks Certified Machine Learning Associateの演習アプリ(無料10問・全問は解錠で)へ