Google Cloud の BigQuery ML 環境をベースにした「特徴選択と特徴量エンジニアリング」の戦略を体系的に整理します。この知識は、機械学習モデルの精度向上・計算効率の最適化・スケーラビリティの担保に不可欠です。
🧩 1. 特徴量エンジニアリングの目的
目的 |
説明 |
モデル性能の向上 |
意味のある新しい特徴量の作成により、モデルの精度を高める。 |
データのスケーラビリティ |
一貫した処理・自動化されたパイプラインにより、大規模データへの対応を強化。 |
学習効率の向上 |
無駄な特徴を削減し、学習コストを下げる。 |
🔧 2. BigQuery ML における主要なエンジニアリング手法
2.1 欠損値への対応
- 方法: SQLベースで
IFNULL()
などの関数を活用
- 注意点: 欠損値処理は予測精度に直結するため、事前処理で徹底的に対策
2.2 カテゴリカルデータの変換
手法 |
概要 |
適用場面 |
One-Hot Encoding |
各カテゴリを0/1の列に展開 |
少数カテゴリ |
Label Encoding |
ラベルを数値に変換 |
順序付きカテゴリ |
Feature Hashing |
高カーディナリティカテゴリを効率的に表現 |
大量のユニーク値がある場合(例:郵便番号) |
🧠 3. 特徴選択(Feature Selection)
3.1 正則化による選択
- Lasso回帰(L1正則化)
- 重要でない特徴の係数をゼロにする
MODEL_TYPE='linear_reg'
, L1_REG
を指定
3.2 Feature Importance Metrics
- 方法:
ML.FEATURE_IMPORTANCE
関数で重要度を算出
- 目的: 予測精度に寄与する特徴量の可視化と選別
🧪 4. 特徴量のスケーリングと変換
処理 |
BigQuery ML内での対応 |
備考 |
Standard Scaling |
❌非対応 |
Dataflow等で前処理が必要 |
正規化(Normalization) |
❌非対応 |
外部パイプラインで実施 |
🧬 5. 新たな特徴量の生成
-
SQLによる派生特徴量の生成
- 例: 売上 = 単価 × 数量
- 実装:
CREATE MODEL
で TRANSFORM
を活用(SQLで表現可能)
-
Feature Crosses
- 複数カテゴリカル特徴の掛け合わせ
- 特定の組み合わせパターンの意味合いを捉える
🤖 6. 自動化とパイプライン化
方法 |
内容 |
利点 |
Dataflow + Apache Beam |
前処理パイプライン構築 |
一貫性と再現性の担保 |
Vertex AI Pipelines |
特徴量処理・モデル学習の自動化 |
スケーラブルなMLワークフロー構築 |
⚠️ 7. 注意すべき非対応機能
機能名 |
状況 |
代替手段 |
PCA(主成分分析) |
❌未対応 |
手動で相関の高い特徴を削除する等 |
Recursive Feature Elimination (RFE) |
❌未対応 |
LassoやFeature Importanceで代替 |
ハイパーパラメータチューニング |
❌未対応 |
外部ツール(Vertex AI等)を使用 |
※ 現在のBQMLはPCAにネイティブ対応しています
- 過去(〜2022年頃まで):BQMLにはPCA(主成分分析)は未対応でした。
- 現在(2023年〜):BQMLは CREATE MODEL で MODEL_TYPE=’pca’ を指定することで、ネイティブにPCAモデルを構築可能になっています。
✅ 試験対策のためのまとめ
試験フォーカス |
警告アラート |
欠損値処理・特徴量変換・SQLによる生成 |
PCAやRFEは BigQuery ML に直接は存在しない |
正則化(Lasso)やFeature Importance |
正規化・スケーリングはBigQuery ML内では未サポート |
Feature Hashingや自動化パイプライン構築 |
k-means は欠損値処理・次元削減には不向き |
📌 おすすめの学習順序(習得ステップ)
- SQLによる特徴量生成
- 欠損値処理とカテゴリ変換
- Lasso回帰・Feature Importanceの理解
- Feature Crosses・Feature Hashingの応用
- Dataflow/Vertex AIによる自動化