Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Feature Engineering

特徴量エンジニアリングは、ドメイン知識を用いて生データをモデルが学習しやすい入力に変換します。主要な手法、データリークの落とし穴、用途、コードについて解説します。

特徴量エンジニアリングとは、ドメインとデータに関する知識を使って、機械学習モデルが学習する入力変数、つまり特徴量を作成、変換、選択するプロセスです。生のタイムスタンプを時刻や曜日に変換し、カード取引の一覧を顧客の直近30日間の支出にまとめ、移動距離と所要時間から速度を算出します。適切に選んだ特徴量によって、シンプルなモデルでも見逃してしまうパターンを捉えられます。モデルが与えられた列しか利用できない表形式データや時系列データでは、特に重要です。深層学習モデルは画像、音声、テキストから独自の特徴量を学習します。そのため、これらの分野では、特徴量エンジニアリングの重点がデータの準備やモデル出力からの特徴量作成へと移りました。

一般的な手法#

  • スケーリングと正規化: 特徴量を平均0、分散1に標準化すると、単位の大きな特徴量が距離ベースのモデルや勾配ベースの学習を支配するのを防げます。また、対数変換によって所得や価格などの偏った値の範囲を圧縮できます。
  • カテゴリエンコーディング: ワンホットエンコーディングでは、色などのカテゴリをバイナリ列に変換します。ターゲットエンコーディングでは、カテゴリごとにターゲットの平均値を割り当てます。エンコーディングによって各行のラベルが漏洩しないよう、平均値は別々のフォールドで計算します。
  • 比率と相互作用: 負債対所得比、平方フィートあたりの価格、ボディマス指数は、2つの生の値を結果に実際に影響する量にまとめます。
  • 日付と時刻の特徴量: 時刻、曜日、月、祝日フラグによって周期性を捉えられます。また、時刻を正弦と余弦でエンコードすると、23:00と00:00を近い値として表せます。
  • ラグとローリングウィンドウ: 過去の値、移動平均、直近のウィンドウ内の件数により、センサー、アカウント、製品の直近の履歴をモデルに与えられます。
  • ビニング: 年齢層などの範囲に連続値を分類すると、段階的な影響を捉え、極端な値の影響を抑えられます。
  • PCAによる次元削減: 主成分分析では、相関のある多数の特徴量を、相関のない少数の特徴量に圧縮します。
  • 特徴量選択: フィルター法ではターゲットとの相関や相互情報量に基づいて特徴量を順位付けし、ラッパー法ではモデルを使って特徴量のサブセットをテストします。L1正則化などの埋め込み法では、学習中に特徴量を削除します。

比率特徴量は、これが有効な理由を示します。深さに制限のある決定木は一度に1つの特徴量しか分割できないため、距離と所要時間だけから「平均速度が時速90 kmを超える」というルールをうまく近似できませんが、速度を計算すれば正確に判定できます。

import numpy as np
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier

# 1,000 trips: raw distance (km) and duration (h); label = average speed above 90 km/h
rng = np.random.default_rng(0)
distance = rng.uniform(10, 300, 1000)
hours = rng.uniform(0.5, 4.0, 1000)
y = (distance / hours > 90).astype(int)

raw = np.column_stack([distance, hours])
engineered = (distance / hours).reshape(-1, 1)  # domain knowledge: speed = distance / time

tree = DecisionTreeClassifier(max_depth=2, random_state=0)
for name, X in [("Raw distance and duration", raw), ("Engineered speed", engineered)]:
    print(f"{name}: accuracy {cross_val_score(tree, X, y, cv=5).mean():.3f}")

同じ深さ2の木でも、交差検証精度は距離と所要時間の生データでの0.861から、作成した速度特徴量では1.000に上昇します。距離と所要時間の空間における対角線状の境界が、速度に対する単一のしきい値になるためです。

データリークのない特徴量の検証#

特徴量の値が予測時点で分かっている場合に限り、その特徴量は有効です。「解約後の1か月間のサポートへの問い合わせ件数」を使う解約予測モデルや、データセット全体で計算したターゲットエンコーディングは、テストでは高いスコアを出しても本番環境では機能しません。これはデータリークの一種です。そのため、スケーラーの平均値やカテゴリのエンコーディングなど、学習済みパラメーターを持つ変換はすべて学習用のフォールドだけで適合させます。scikit-learnのパイプラインはこれを自動的に行います。また、新しい特徴量は交差検証スコアが向上する場合に限って残します。本番システムでも、学習時とまったく同じ方法で各特徴量を計算する必要があります。特徴量ストアは、両方に同じ特徴量定義を提供することでこれを実現します。

コンピュータビジョンにおける特徴量エンジニアリング#

従来のコンピュータビジョンでは、エッジマップ、SIFTキーポイント記述子、方向勾配ヒストグラムなどの手作業で設計した特徴量に頼り、サポートベクターマシンなどの分類器がそれらをラベル付けしていました。2012年にAlexNetがImageNetチャレンジで優勝して以来、畳み込みニューラルネットワークはピクセルから独自の特徴マップを学習するようになり、エンジニアリングの労力はデータ拡張による学習データの改善や、ビジョンモデルの出力へと移りました。UltralyticsのSpeedEstimatorは、YOLO26の物体追跡出力から速度特徴量を作成します。トラックの位置が5つ得られると、最初と最後の位置間のピクセル変位をmeter_per_pixelスケールでメートルに変換し、経過時間で割ってkm/hを報告します。

用途#

  • 信用リスク:貸し手は、口座の生記録から負債対所得比率、信用利用率、最後に支払いを延滞してからの月数を導出します。これらの特徴量は、生の残高よりも債務不履行を適切に予測します。
  • 予知保全:振動や温度のストリームから算出した移動平均、変化率、周波数帯域エネルギーにより、生の測定値が警報しきい値を超える前に進行中の摩耗を検出できます。
  • 不正検知:過去1時間のカード取引件数や、購入場所とカード所有者の通常の所在地との距離などの頻度特徴量によって、不正利用と通常の支出を区別できます。
  • 需要予測:小売モデルでは、店舗と商品ごとに、過去の売上、移動平均、価格変動、販促フラグ、休日指標を組み合わせます。
  • 特徴抽出:PCAやニューラルネットワークのバックボーンなど、固定アルゴリズムまたは学習済みモデルを使って特徴量を自動計算します。この2つの用語はしばしば同じ意味で使われますが、特徴量エンジニアリングは、ドメイン知識に基づくより広いプロセスを指します。
  • データ前処理:エラーの修正、欠損値の補完、型の変換によってデータをクリーニングして整形する工程で、特徴量を設計する前に行います。
  • 埋め込み:モデルが学習中に学習し、単語、画像、ユーザーを表現する高密度ベクトルです。多くの言語システムやビジョンシステムでは、単語数などの手作業で作成した特徴量に代わって使われます。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう