機械学習で予測モデルを作るとき、実は「モデルの学習」よりも前に行われる「データの前処理」がモデルの精度を大きく左右します。料理にたとえると、前処理は「食材の下ごしらえ」にあたります。どんなに腕のいいシェフ(アルゴリズム)でも、泥付きの野菜をそのまま鍋に入れたらおいしい料理はできません。この記事では、Qast が裏側で自動的に行っている前処理の仕組みを、専門用語をできるだけ使わずに解説します。
なぜ前処理が必要なのか
現実のデータには「空欄がある」「文字と数字が混在している」「値の範囲がバラバラ」といった問題がつきものです。AIモデルは基本的に数値の計算しかできないため、こうしたデータをそのまま渡すと、学習がうまくいかなかったり、的外れな予測をしたりします。前処理はこうした「生データの困りごと」を解決し、AIが学習しやすい形に整える工程です。
データサイエンスの世界では「データの前処理に全体の80%の時間がかかる」と言われるほど重要な工程です。Qast はこれを72パターン自動で試すことで、手作業を不要にしています。
欠損値の補完 — 空欄をどう埋めるか
アンケートの未回答、センサーの一時的な故障、入力ミスなど、現実のデータには空欄(欠損値)がよくあります。空欄があるとAIは計算できないため、何らかの方法で埋める必要があります。料理でいえば「足りない食材を代わりのもので補う」作業です。
- 1
平均値・中央値で埋める
数値データの空欄を、そのカラムの平均値や中央値で埋めます。もっとも一般的な方法で、「だいたいこのくらいの値だろう」という推測で補完します。外れ値が多い場合は中央値のほうが安全です。
- 2
最頻値で埋める
カテゴリデータ(「東京」「大阪」など文字列の値)の空欄には、もっとも頻度の高い値を入れます。性別や都道府県のようなデータに使います。
- 3
前後の値で埋める(時系列データ)
時間順に並んだデータでは、直前や直後の値で埋める方法が有効です。気温や株価のように連続性のあるデータで使われます。
- 4
「不明」として扱う
「空欄であること自体が情報になる」場合もあります。たとえば「年収未回答」は「回答したくない理由がある」という意味を持つかもしれません。その場合は無理に埋めず、欠損を示すフラグ列を追加します。
カテゴリ変数のエンコーディング — 文字を数値に変換する
AIモデルは数値しか扱えないため、「東京」「大阪」「福岡」のような文字列データをそのまま渡すことはできません。文字を数値に変換する作業を「エンコーディング」と呼びます。料理でいえば「食材を調理しやすいサイズに切る」工程です。
- 1
ワンホットエンコーディング
「東京」「大阪」「福岡」の3つの値がある場合、「東京フラグ」「大阪フラグ」「福岡フラグ」の3つの列を作り、該当する列に1、それ以外に0を入れます。値の大小関係がないカテゴリデータに適した方法です。
- 2
ラベルエンコーディング
各カテゴリに数値を割り当てます(東京=0、大阪=1、福岡=2)。決定木ベースのアルゴリズム(XGBoostやLightGBMなど)ではこの方法でも問題なく学習できます。
- 3
ターゲットエンコーディング
カテゴリごとの「目的変数の平均値」で置き換える高度な手法です。たとえば「東京の平均売上=500万、大阪の平均売上=350万」のように変換します。情報量が多い反面、データリークのリスクがあるため注意が必要です。
スケーリング — 値の範囲を揃える
「年齢(0〜100歳)」と「年収(0〜数千万円)」のように、カラムによって値の範囲が大きく異なると、AIが「数値の大きいカラムのほうが重要だ」と誤解してしまうことがあります。スケーリングは、すべてのカラムの値の範囲を揃える処理です。料理でいえば「すべての食材の大きさを均一に切り揃える」ようなものです。
- 1
標準化(Standardization)
各カラムの値を「平均0、標準偏差1」に変換します。変換後の値は「平均からどれだけ離れているか」を表し、多くのアルゴリズムで相性が良い標準的な方法です。
- 2
正規化(Min-Max Normalization)
各カラムの値を 0〜1 の範囲に収めます。最小値が0、最大値が1になるように線形変換します。ニューラルネットワークやk近傍法で特に有効です。
- 3
ロバストスケーリング
中央値と四分位範囲を使ってスケーリングします。外れ値の影響を受けにくいため、外れ値が多いデータに適しています。
決定木ベースのアルゴリズム(XGBoost、LightGBM、ランダムフォレスト等)は値の大小関係だけで分岐するため、スケーリングは不要です。一方、線形回帰やSVM、ニューラルネットワークではスケーリングが精度に大きく影響します。Qast はアルゴリズムごとに最適なスケーリングを自動選択します。
外れ値の処理 — 極端な値にどう対処するか
「平均年収400万円のデータに年収10億円の人が1人いる」ような極端な値を外れ値と呼びます。外れ値があるとモデルがその値に引っ張られ、大多数のデータに対する予測精度が下がることがあります。ただし、外れ値がすべて「異常」とは限りません。不正検知では外れ値こそが検出したい対象です。
- 1
IQR法(四分位範囲法)
データの25%点と75%点の差(IQR)を基準に、その1.5倍以上離れた値を外れ値と判定します。箱ひげ図のヒゲの外側にある点がこれにあたります。
- 2
Zスコア法
平均から標準偏差の何倍離れているかで判定します。一般にZスコアが3を超える値を外れ値とみなします。データが正規分布に近い場合に有効です。
- 3
クリッピング(上下限の制限)
外れ値を削除するのではなく、上限・下限の値に置き換えます。「年収10億円」を「年収2000万円」に丸めるイメージです。データを失わずに外れ値の影響を抑えられます。
特徴量エンジニアリング — データから新しい手がかりを作る
既存のカラムから新しいカラムを生成し、AIに追加の手がかりを与える工程です。料理でいえば「食材を組み合わせてソースを作る」ようなもので、元の食材にはない新しい味わいが生まれます。
- 1
日時データの分解
「2026-03-01 14:30:00」という日時から「年」「月」「曜日」「時間帯」「祝日フラグ」などを抽出します。たとえば売上予測では「金曜日」や「月末」という情報が強い手がかりになります。
- 2
数値の区間化(ビニング)
連続する数値を区間に分けます。年齢を「10代」「20代」「30代」…のようにグループ化することで、線形では捉えにくいパターンを学習しやすくします。
- 3
特徴量の掛け合わせ(交互作用)
「面積 × 階数」のように複数のカラムを組み合わせて新しいカラムを作ります。個々のカラムだけでは見えない関係性を捉えるのに効果的です。
- 4
対数変換
年収や売上のように右に裾が長い分布のデータを対数に変換することで、分布を正規分布に近づけます。これにより線形モデルの精度が向上することがあります。
前処理の順番も重要
前処理は「どの手法を使うか」だけでなく「どの順番で行うか」も結果に影響します。一般的には「欠損値の補完 → カテゴリ変換 → 外れ値処理 → スケーリング → 特徴量エンジニアリング」の順で行いますが、最適な組み合わせはデータとアルゴリズムによって異なります。
Qast は72パターンの前処理パイプライン × 39種類のアルゴリズムを自動で組み合わせ、最も精度の高い組み合わせを発見します。「どの前処理をどの順番で適用するか」を手作業で試行錯誤する必要はありません。
Qast での前処理の確認方法
Qast で学習が完了すると、各モデルの詳細画面で「適用された前処理パイプライン」を確認できます。どのカラムにどの前処理が適用されたかが一覧で表示されるため、モデルがどのようにデータを処理したかを理解できます。また、EDA(探索的データ分析)機能を先に実行しておくと、データの分布や欠損値の状況を可視化でき、前処理の効果をより深く理解できます。


