構造化データにおける代表的な機械学習手法
構造化データを実務で扱う際によく使われる代表的な機械学習手法を紹介。
- 線形モデル、ツリーベースのアンサンブル学習(Random Forest)
- GBDTベースのアンサンブル学習(XGBoost, LightGBM, CatBoost)
- AutoML(PyCaret)の分類モジュール
構造化データ
- データベースやExcelなどで扱われる、行と列からなる表形式のデータ
- 年齢、年収、購入有無など各列(変数、特徴量)に明確な意味がある
- 顧客データや購買履歴、Webサイトのアクセスログなど、企業で扱われるデータの多くがこれにあたる
- 対して、画像、音声、テキスト、動画などは非構造化データ
線形モデル
特徴量の線形結合を基礎とするモデル。回帰や分類など、目的に応じた手法がある。
線形回帰
- 仕組み: 目的変数を特徴量の線形結合で表し、最小二乗法などで回帰係数を推定する。
- 長所: モデルがシンプルで解釈しやすく、計算も軽い。ベースラインモデルとして有用。
- 短所: 特徴量と目的変数の関係が非線形な場合や、複雑な相互作用がある場合には、そのままでは捉えにくい。必要に応じて特徴量変換や交互作用項の追加が必要になる。
- 注意点: 多重共線性があると回帰係数の推定や解釈が不安定になることがある。正則化を用いる場合や最適化の観点では、特徴量のスケールにも注意する。
ロジスティック回帰
シンプルで軽量なモデルで、分類問題のベースラインとしても重要な手法。Logistic Regression
- 仕組み: 特徴量の線形結合をシグモイド関数に通して、イベント発生確率をモデル化する。一般化線形モデル(GLM Generalized Linear Model)の一種。
- 長所: 各特徴量の影響を回帰係数やオッズ比として解釈しやすい。計算も軽く、ベースラインモデルとして使いやすい。
- 短所: 特徴量間の複雑な依存関係や非線形な関係を捉えるのが苦手。必要に応じて交互作用項や変換を手動で追加する必要がある。
- 注意点: 特徴量のスケールや多重共線性の影響を受けることがある。
ツリーベース
特徴量の条件分岐を繰り返して予測する、決定木を基礎とするモデル群。
- 仕組み: 特徴量の値に基づいてデータを分割し、分割された領域ごとに予測をおこなう。単一の決定木のほか、複数の決定木を組み合わせるアンサンブル学習も広く使われる。
- 長所: 非線形な関係や特徴量間の相互作用を捉えやすく、特徴量のスケーリングも基本的に不要。数値特徴量とカテゴリ特徴量を扱える手法もある。
- 短所: 単一の決定木は過学習しやすく、予測が不安定になりやすい。複雑な関係を捉えるために深い木や多数の木を使うと、モデルの解釈も難しくなる。
- 注意点: 木の深さや葉の最小サンプル数などの設定が、過学習や予測性能に影響する。アンサンブル手法では、木の数や学習率なども調整する。
Random Forest
複数の決定木を組み合わせるアンサンブル学習。比較的扱いやすく、非線形な関係も捉えられる。
- 仕組み: 複数の決定木を独立に構築し、回帰では予測値の平均、分類では多数決によって最終的な予測をおこなう。代表的なバギング(Bagging)の手法。
- 長所: 木を独立して学習できるため並列化しやすく、比較的安定した予測性能を得やすい。初期設定でも一定の性能が期待できる。
- 短所: 木の本数や深さを増やすと、モデルサイズや推論時間が大きくなりやすい。GBDT系と比べて予測精度で劣る場合もある。
- 特徴: 複数の木を組み合わせて個々の木の予測のばらつきを抑えることで、過学習を抑えやすくしている。
GBDTベース
勾配ブースティング決定木(Gradient Boosting Decision Tree: GBDT)を基礎とするモデル群。
- 仕組み: 決定木を逐次的に追加し、それまでのモデルの予測誤差を補うように学習する。複数の木の予測を組み合わせることで、高い予測性能を目指す。
- 長所: 非線形な関係や特徴量間の複雑な相互作用を捉えやすく、表形式データの分類・回帰で高い性能を発揮することが多い。
- 短所: ハイパーパラメータの調整が必要で、設定によっては過学習しやすい。学習が逐次的に進むため、Random Forestのように各決定木を独立して学習する手法と比べ、木の学習を並列化しにくい。
- 注意点: 木の深さや学習率、木の数などが予測性能に影響する。学習率と木の数は相互に関係するため、組み合わせて調整する。
XGBoost
決定木を順番に追加していくGBDTの代表的な実装。高い予測性能と汎用性を持つ。eXtreme Gradient Boosting
- 仕組み: Level-wise方式による木の成長、正則化、計算の効率化など、さまざまな改良を加えている。
- 長所: 非線形な関係や特徴量同士の相互作用を捉えやすく、幅広いデータで高い予測性能を発揮しやすい。汎用性も高い。
- 短所: LightGBMと比較すると、学習に時間やメモリを多く必要とする場合がある。
- 特徴: L1/L2正則化などを組み込んでおり、過学習を抑えながら高い予測性能を狙える。
Level-wise: 木を横に広げていく育て方。同じ深さにあるノードを優先して分割し、木を階層ごとに成長させていく方式。
LightGBM
高速な学習と省メモリ化を重視したGBDTの実装。大規模な表形式データを扱いやすい。
- 仕組み: Leaf-wise方式による木の成長やGOSS、EFBなどの工夫を取り入れ、学習を効率化している。
- 長所: 学習が高速でメモリ消費も抑えやすく、大規模なデータや高次元のデータを扱いやすい。
- 短所: Leaf-wise方式によって一部の枝が深くなりやすく、データ量が少ない場合などには過学習に注意が必要。
- 特徴: 速度と予測性能のバランスに優れ、表形式データの機械学習で広く利用されている。
Leaf-wise: 木を縦に伸ばしていく育て方。分割によって損失を最も大きく減らせそうな葉を選び、そこを優先して深くしていく方式。
GOSS: Gradient-based One-Side Sampling 勾配の大きいデータを優先的に残し、勾配の小さいデータを一部サンプリングすることで、分割探索に使うデータ量を減らす。
EFB: Exclusive Feature Bundling 同時に値を持つことが少ない特徴量をひとつにまとめ、特徴量の数を減らすことで計算を効率化する。
CatBoost
カテゴリ変数を含む表形式データを扱いやすくすることに重点を置いたGBDTの実装。Categorical Boosting
- 仕組み: カテゴリ変数を効率的に扱うための独自の仕組みを取り入れている。
- 長所: カテゴリ変数をone-hot encodingだけに頼らず扱うことができ、カテゴリ数の多いデータでも利用しやすい。
- 短所: データや問題によっては、XGBoostやLightGBMのほうが適している場合がある。
- 特徴: カテゴリ特徴量の統計量を計算する際にtarget leakageを抑える仕組みなどを備えている。
AutoML
AutoML(Automated Machine Learning)は、機械学習モデルの選択やハイパーパラメータの最適化など、モデル開発の一部または多くを自動化する手法やツールの総称。モデル開発の効率化や、機械学習に関する専門知識が限られる場合のモデル構築を支援する。
PyCaret
モデルの比較・選択やハイパーパラメータの最適化などを簡潔なコードで実行できる、Pythonの機械学習ライブラリ。
PyCaretの分類モジュールには、さまざまな機械学習アルゴリズムが用意されており、代表的な手法を以下に示す(version 3.0.4の場合)。
これらは大きく、ツリー系、線形・統計系、近傍・確率系に分類できる(説明するうえでの便宜的な区分)。
1. ツリー・アンサンブル系
複雑な非線形ルールを学習するのが得意なグループ。
| ID | 名称 | 特徴 | 長所 | 短所 |
|---|---|---|---|---|
| gbc | Gradient Boosting | 決定木を順番に追加し、前のモデルの弱点を補う | 高い予測性能を得やすい | 学習を完全には並列化しにくい |
| lightgbm | LightGBM | Leaf-wise方式などで学習を高速化 | 高速で大規模データに向く | 少ないデータでは過学習に注意 |
| xgboost | XGBoost | GBDTに計算効率化や正則化などを加えた | 高い予測性能と汎用性 | パラメータ調整がやや複雑 |
| rf | Random Forest | 多数の決定木を独立に学習して予測を組み合わせる | 安定した予測を得やすい | 木の数が増えるとモデルが大きくなる |
| et | Extra Trees | 決定木の分割をさらにランダム化 | 高速で、RFとは異なる多様なモデルを作れる | ランダム化によって予測性能が下がる場合もある |
| ada | AdaBoost | 誤分類されたデータを重視して次のモデルを作る | 比較的単純なモデルでも高い性能を狙える | ノイズや外れ値の影響を受けやすい |
| dt | Decision Tree | 条件分岐を繰り返して分類する | 可視化しやすく、比較的解釈しやすい | 複雑にすると過学習しやすい |
| catboost | CatBoost | カテゴリ変数を扱いやすいGBDT | カテゴリ変数を多く含むデータに強い | 学習や推論が重くなる場合がある |
2. 線形・統計系(ベースライン・安定志向)
データが直線的(または超平面)に分かれると仮定するグループ。
| ID | 名称 | 特徴 | 長所 | 短所 |
|---|---|---|---|---|
| lr | Logistic Regression | 線形結合をもとにクラスの確率を予測 | 軽量で解釈しやすく、ベースラインに向く | 複雑な非線形関係を捉えにくい |
| ridge | Ridge Classifier | L2正則化を加えた線形分類 | 特徴量が多い場合にも比較的安定 | 非線形な関係を捉えにくい(クラスを直接予測するためAUCは0になる) |
| lda | Linear Discriminant Analysis | クラス間の分離とクラス内のばらつきを考慮して分類 | 高速で比較的シンプル | 分布について一定の仮定がある |
| qda | Quadratic Discriminant Analysis | クラスごとの分布の違いを考慮して曲線的な境界を作る | 非線形な境界にも対応できる | データ量が少ないと不安定になりやすい |
| svm | SVM(Linear Kernel) | クラス間の境界のマージンを最大化 | 高次元データに比較的強い | スケーリングの影響を受けやすい |
3. 近傍・確率・その他(特殊枠)
似たもの探しや確率で判断するグループ。
| ID | 名称 | 特徴 | 長所 | 短所 |
|---|---|---|---|---|
| knn | K Neighbors | 近くにあるデータのクラスをもとに予測 | 直感的で局所的なパターンを捉えやすい | 予測時の計算量が大きくなりやすい |
| nb | Naive Bayes | 特徴量が独立と仮定して確率を計算 | 高速で、テキスト分類などに向く | 特徴量の独立という仮定が現実と合わない場合がある |
| dummy | Dummy Classifier | 単純なルールで予測する(最頻値など) | モデルの最低ラインを確認できる | 学習による予測能力を持たない |