
機械学習プロジェクトの成否は、アルゴリズムの選定よりも手前にあるデータ準備の設計で決まります。同じ学習手法を用いても、投入するデータの整え方が違えば精度は大きく変動するのです。本記事では、収集から分割、クレンジング、特徴量づくりまでの手順を、現場でのつまずきとあわせて整理していきます。
各工程には、判断基準と目安となる工数、そして現場で頻発するつまずきの回避策を添えました。すべてを一度に整える必要はありません。自社の状況に近い箇所から順に読み進め、チェックリストとしてご活用ください。
目次
機械学習のためのデータ準備とは
データ準備という言葉は、担当者によって指す範囲が異なります。狭くは欠損値の補完だけを意味する場合もあれば、広くはデータの入手交渉から学習用ファイルの出力までを含む場合もあるのです。ここでは範囲の定義をそろえたうえで、前処理や特徴量づくりとの関係、そして工数配分の実態を確認していきましょう。
データ準備が担う範囲:収集から学習データの分割までの全体像
機械学習におけるデータ準備は、大きく6つの工程で構成されます。目的とタスクの定義、データ収集、データ理解、データ分割、クレンジング、特徴量づくりという流れです。実務では、この6工程を一度通せば終わりというわけではありません。データ理解の段階で想定外の欠損が見つかれば収集へ戻りますし、分割方針を見直せばクレンジングもやり直しになります。おおよそ2〜3周の反復を前提に、スケジュールへバッファを見込んでおくと安全でしょう。
範囲を定義するときに有効なのが、成果物ベースで区切る方法です。完了条件を「学習用・検証用・テスト用の3ファイルが出力された状態」と定めておきます。各ファイルの行数と特徴量の定義書が揃っていることも条件へ含めると、担当者間の認識のずれを防げるのです。曖昧な完了条件のまま進めると、モデル開発担当が受け取った直後に「この列は何を表しているのか」という問い合わせが発生し、1週間単位の手戻りにつながります。定義書はスプレッドシート1枚で構いませんので、列名、意味、型、想定される欠損理由を並べておいてください。
前処理・特徴量エンジニアリングとの位置づけの違い
前処理は、データを機械が扱える形式に整える作業を指します。欠損値の補完、型変換、表記ゆれの統一などが該当します。対して特徴量エンジニアリングは、予測に効く情報を新たに作り出す作業です。購買日時から「曜日」や「月初からの経過日数」を派生させる処理は後者にあたります。両者は連続していますが、目的が異なる点を押さえておきましょう。前処理は壊れたデータを直す工程、特徴量づくりは予測力を高める工程という区別で考えるとぶれません。
実務で混乱が起きやすいのは、この2つを同じ工程として一括で外注してしまう場面です。前処理はデータの持ち主である業務部門の知識が不可欠ですが、特徴量づくりはモデル精度への理解が求められます。役割を分けずに進めた結果、業務部門が「異常値」と判断して削除した記録が、実は設備故障の予兆として最も価値のあるデータだった、という事例は少なくありません。削除ではなくフラグ列を追加する運用に切り替えるだけで、こうした情報損失は防げるのです。判断に迷う値は消さずに残す、という原則を最初に共有してください。
プロジェクト工数の大半をデータ準備が占める背景
データ分析の現場では、作業時間の7〜8割がデータ準備に費やされると言われます。この配分は誇張ではありません。実際の内訳を分解すると、データの所在確認と入手交渉に2〜4週間、品質確認に1〜2週間、加工と特徴量づくりに2〜3週間というのが中規模案件での目安です。モデルの学習と評価そのものは数日で終わることも多く、時間軸で見た主役はあくまで準備工程だと分かります。工程別の工数を見積書へ分けて記載すると、社内の合意も取りやすくなるでしょう。
工数が膨らむ最大の要因は、データが分析用に作られていない点にあります。基幹システムのテーブルは、業務処理の効率を優先して設計されています。そのため1件の取引が複数テーブルに分散していたり、更新履歴の上書きで過去の状態を復元できなかったりするのです。着手前に、必要な項目が「いつの時点の値として残っているか」を確認しておくと、後半での手戻りを避けられるでしょう。確認は、対象テーブルの更新方式が追記型か上書き型かを情報システム部門へ1問だけ聞くところから始めてください。
データ準備を丁寧に行うことで解決できる課題
データ準備への投資は、抽象的な品質向上ではなく、具体的な業務課題の解消として説明できます。ここでは、現場で相談の多い4つの症状を取り上げ、準備工程の改善がどのように効くのかを整理します。自社の状況に当てはまるものがあれば、対応する工程から着手すると効果を実感しやすいでしょう。
モデルの精度が頭打ちになる状態から抜け出せる
精度が伸び悩んだとき、多くのチームはアルゴリズムの変更やハイパーパラメータ探索に時間を投じます。しかし決定木系のモデルであれば、パラメータ調整による改善幅は数ポイント程度にとどまることが一般的です。欠損の多い列を除外し、業務的に意味のある集計特徴量を1つ追加しただけで、AUCが0.05以上改善する例は珍しくありません。投資対効果で見れば、手を入れるべき場所はデータ側にあると判断できます。改善策を検討する会議では、データ側の施策を先に議題へ載せてください。
頭打ちの原因を切り分けるには、学習データと検証データの精度差を見る方法が有効です。両方とも低い場合は情報不足であり、特徴量の追加やデータ量の確保が先になります。学習データだけが高い場合は過学習であり、データ量か正則化の問題です。切り分けの結果を1枚のメモに残しておくと、次の打ち手を選ぶ会議は10分で終わります。この切り分けを飛ばすと、効果の薄い施策に1か月を費やすことになりかねません。以下の観点で確認してみてください。
- 学習データと検証データの評価指標の差が0.1以上あるか
- 欠損率が3割を超える列が含まれていないか
- 目的変数との相関が極端に高い列(0.95以上)が紛れていないか
- 学習データの件数が特徴量数の10倍以上あるか
学習結果の再現性が確保され、担当者間で引き継げるようになる
再現性とは、同じデータと同じ手順から同じ結果が得られる状態を指します。この状態が崩れる典型は、担当者がノートブック上で対話的に加工を重ね、実行順序が記録に残っていないケースです。半年後に同じ数字を出そうとしても再現できず、監査や社内報告の場で説明に窮する事態が起こります。特に金融や医療のように説明責任が問われる領域では、精度そのものよりなぜその値になったかを示せることのほうが重視される場面も多いのです。
引き継ぎを成立させる最低条件は、3点セットの保存です。加工前の生データ、加工処理を記述したスクリプト、出力された学習用ファイルのハッシュ値をそろえて保管します。生データを直接書き換える運用だけは避けてください。上書き保存が1回でも行われると、以降どれだけ手順書を整備しても元の状態には戻せません。保管先は共有ストレージで構いませんが、フォルダ名に日付と処理内容を含める規約だけは決めておきましょう。命名規約は1行のルールで十分に機能するものです。
運用開始後の精度低下を早期に検知できる
本番運用に入ったモデルは、時間の経過とともに精度が落ちていきます。原因は、入力データの分布が学習時と変わるデータドリフトです。価格改定や店舗の新規出店、法改正といった業務側の変化が引き金になります。準備段階で各特徴量の分布(平均、標準偏差、欠損率、カテゴリの構成比)を記録しておけば、運用後に同じ指標を毎月算出して比較するだけで異常に気づけます。監視の準備は、分布を出力するスクリプトを1本用意しておくだけのことです。
検知の閾値は、厳密な統計検定を持ち出さなくても運用できます。実務では、欠損率が学習時の2倍を超えたら警告、カテゴリ列に学習時へ存在しなかった値が全体の1%以上出現したら警告、といった単純なルールで十分に機能します。凝った仕組みを作るより、月次で確認する担当者と、警告が出たときに誰へ連絡するかを決めるほうが先です。監視項目は5つ以内に絞ると、形骸化せずに続けられるでしょう。運用が回り始めてから項目を増やす順序が現実的です。
PoCから本番運用へ移行する際の手戻りを抑えられる
PoCで良好な精度が出たのに本番で再現しない、という相談は数多く寄せられます。原因の大半は、PoCで使った手作業のデータと、本番で流れてくるデータの条件が違う点にあります。抽出期間が限定されていたり、営業担当が手で整えた綺麗なファイルを使っていたりするのです。移行時には、本番の連携経路から取得したデータでもう一度学習し直す前提で計画を立てましょう。本番相当のデータで学習すると、精度が5ポイント前後下がることも織り込んでおきます。
手戻りを抑える具体策は、PoCの段階から本番同等の取得経路を1本だけ通しておくことです。全項目を揃える必要はなく、代表的な3〜5項目だけでもかまいません。この1本を通す作業に2〜3週間かかると分かれば、その時点でスケジュールを現実的に引き直せるのです。逆に、PoCが終わってから連携方式を検討し始めると、本番移行に3か月以上を要するケースも出てきます。遅れの大半は、権限申請と接続テストの調整に費やされるのです。
機械学習のためのデータ準備の進め方【6ステップ】
ここからは、実際の手順を6つのステップに分けて解説します。順序には意味があり、特に分割を加工より先に置く点は精度へ直結する要素です。各ステップで決めるべき事項と、目安となる工数を添えていますので、自社の計画表と照らし合わせながらお読みください。
STEP1 目的とタスクの定義:予測対象と評価指標を先に決める
最初に決めるのは、何を予測するのかという目的変数の定義です。「解約しそうな顧客を知りたい」という要望は、そのままでは学習できません。「契約から90日以内に解約した顧客を1、それ以外を0とする」というように、期間と条件を数値で固定する必要があるのです。この定義が曖昧なまま進めると、後工程のラベル付けが担当者ごとにぶれ、学習データそのものが信頼できなくなります。定義を1文で書けない段階では、収集へ進まないと決めておきましょう。
評価指標も、この段階で業務側と合意しておきます。不均衡データで正解率を指標にすると、全件を解約しないと予測するだけで95%の正解率が出てしまい、実務的には無価値なモデルが高評価になります。取りこぼしを避けたいなら再現率、無駄な施策コストを避けたいなら適合率というように、業務上の損失構造から選んでください。指標の選定を後回しにすると、モデルが完成してから「この結果では使えない」と差し戻される事態を招きます。
STEP2 データ収集:必要なデータ量と粒度を見積もる
必要なデータ量は、特徴量の数と目的変数の出現率から逆算します。二値分類であれば、少数派クラスが最低でも数百件、できれば1,000件以上あることが実用ラインです。解約率が2%の事業で1,000件の解約データを集めるには、母数として5万件の契約履歴が要ります。この計算を先に行うと、3年分の履歴が必要といった要件を根拠を持って説明できるようになります。件数が足りない場合は、対象期間を延ばすか範囲を広げる調整が必要です。
粒度の決定も収集段階の論点です。売上を予測する場合、日次で持つのか週次で持つのかによって、必要な行数も扱える特徴量も変わってきます。細かい粒度で集めておけば後から集約できますが、粗い粒度で集めたデータを細かく分解することはできません。迷ったときは、業務上の意思決定サイクルより1段細かい粒度で取得しておくと安全です。日次で持つか週次で持つかは、施策の実行単位に合わせて決めてください。粒度を後から変更すると、特徴量の作り直しに1週間前後かかります。
データ収集の重要性と技術的方法&よくある課題と対応策を解説
STEP3 データ理解:分布・欠損・重複の状態を把握する
収集したデータは、加工に入る前に必ず全列の状態を確認します。確認するのは、件数、欠損率、ユニーク数、最小値と最大値、そして分布の形です。Pythonであればpandasのdescribeとisnullで大半は把握できますが、数値だけを眺めても異常には気づきにくいものです。ヒストグラムと箱ひげ図を列ごとに描き、目視で確認する時間を半日ほど確保してください。この半日を惜しむと、後半で数日単位の手戻りが発生します。
この段階でよく見つかるのが、単位の混在と初期値の紛れ込みです。重量列にキログラムとグラムが混在していたり、未入力を意味する0や9999が実数値として格納されていたりします。特に-1、999、1900/01/01は欠損の代替値として使われやすいため、最小値と最大値を見た瞬間に疑ってください。外れ値と欠損代替値を区別せずに統計処理へ進むと、平均値が大きく歪み、後続のスケーリングまで影響が及びます。疑わしい値は削除せず、一覧表へ書き出してから扱いを決めていきます。
箱ひげ図とは?外れ値の見方やExcelでの作成方法まで徹底解説
STEP4 データ分割:学習用・検証用・テスト用に切り分ける
加工に着手する前に、データを学習用・検証用・テスト用の3つに分割します。比率は6対2対2、あるいは8対1対1が一般的です。テスト用データは最終評価まで封印し、途中で参照しないという運用を徹底してください。分割時には、目的変数の構成比が3分割それぞれで揃うように層化抽出を用いると、評価のばらつきを抑えられます。層化を省くと、少数派クラスがテストデータへ偏り、評価が数ポイントぶれることもあるのです。分割に用いた乱数の種は、必ず記録に残してください。
データ量が数千件と少ない場合は、検証用を固定せずに交差検証へ切り替える判断が有効です。5分割の交差検証であれば、限られたデータを無駄なく使いながら評価の安定性も確保できます。一方、10万件を超える規模であれば単純な3分割で十分であり、交差検証は計算時間が5倍に膨らむだけの結果になりがちです。件数が1万件を下回るかどうかを、切り替えの目安にしてみてください。件数が少ないほど、評価のばらつきを抑える工夫が効いてきます。
STEP5 クレンジング:欠損値・外れ値・表記ゆれへの対応
クレンジングでは、欠損値の扱いを最初に決めます。行ごと削除するのか、代表値で補完するのか、欠損であること自体を特徴量にするのかという3択です。欠損率が5%未満なら削除、5〜30%なら補完と欠損フラグの併用、30%を超えるなら列ごと除外という基準が実務では扱いやすいでしょう。ただし、欠損の発生に業務上の意味がある場合は、率に関係なくフラグ列を残す判断が優先されます。扱いに迷う列は、削除ではなく保留として一覧に残しておきましょう。
対応方法 | 適した状況 | 主な副作用 | 目安の工数 |
|---|---|---|---|
行ごと削除 | 欠損率5%未満でランダムに発生している | 件数が減り少数派クラスが失われる | 0.5日 |
代表値で補完 | 数値列で欠損率が30%未満 | 分散が過小になり相関が歪む | 1日 |
欠損フラグ追加 | 欠損の発生自体に業務的な意味がある | 特徴量が増え解釈が複雑になる | 1日 |
予測による補完 | 補完精度がモデル精度へ直結する重要列 | 学習データのみで補完モデルを作る必要がある | 3〜5日 |
列ごと除外 | 欠損率30%超で代替となる列がある | 有用な情報を失う可能性がある | 0.5日 |
表記ゆれの統一は、機械的な正規化と辞書による変換の2段構えで進めます。前者は全角と半角、大文字と小文字、前後の空白除去といった規則的な処理であり、Pythonの標準ライブラリやOpenRefineで一括処理が可能です。後者は「株式会社」と「(株)」、「東京都千代田区」と「千代田区」のように、業務知識がないと同一と判断できないものを対象とします。辞書は業務部門と共同で作成し、100件程度から始めて運用しながら追加していってください。
データクレンジングとは?意味と代表手法を解説!
STEP6 特徴量エンジニアリング:エンコーディングとスケーリング
カテゴリ変数は、そのままでは多くのアルゴリズムに投入できません。水準数が10以下ならワンホットエンコーディング、数十から数百に及ぶなら頻度エンコーディングやターゲットエンコーディングを選ぶのが定石です。都道府県のように47水準ある列を安易にワンホット化すると、列数が膨らんで学習が不安定になります。地方区分へ集約してから展開するなど、業務的な意味を持つ粒度へまとめる工夫が効きます。水準数と件数の比率は、1水準あたり50件以上を目安にしてみてください。
数値のスケーリングは、使うアルゴリズムによって要否が変わります。線形回帰やニューラルネットワーク、距離を用いるk近傍法では標準化が必須です。決定木や勾配ブースティングは分岐の閾値で判断するため、スケーリングをしても精度はほとんど変わりません。まずは木系のモデルで当たりをつけ、必要になった時点でスケーリングを検討する順序が、無駄な工数を減らします。要否の判断は、使うモデルを決めた時点でついているものです。
加工の順序と分割方針が機械学習の精度を左右する
同じ加工処理でも、実行する順序が違うだけで評価結果は変わります。ここで扱うのは、順序を誤ったときに精度が過大評価され、本番で期待外れに終わる典型的な5つの論点です。いずれも設計段階で決めておけば追加コストはほぼ発生しませんので、着手前に一度目を通しておいてください。
データ分割を前処理より先に行う理由
全データをまとめて加工してから分割すると、テストデータの情報が学習に混ざります。欠損値を全体平均で補完した時点で、その平均にはテストデータの値が含まれているためです。結果として検証時の精度は実際より高く出ますが、本番では同じ性能が得られません。検証時のAUCが0.90だったモデルが本番では0.78まで落ちるといった開きも生じます。順序は分割してから加工で固定し、例外を作らない運用にしてください。例外を認めた瞬間に、順序の管理は形骸化するものです。
例外的に、全データへ先に適用してよい処理もあります。1行の中だけで完結する変換、たとえば文字列の空白除去、日付型への変換、単位の統一などは、他の行の統計量を参照しないため分割の前後を問いません。判断基準はシンプルで、他の行の値を見る必要があるかの一点です。平均、標準偏差、最頻値、カテゴリの出現頻度を使う処理はすべて分割後に回すと覚えておきましょう。この線引きを1枚の表にまとめ、チーム内で共有しておくと迷いがなくなります。
スケーリングの統計量は学習データのみから算出する
標準化に用いる平均と標準偏差は、学習データだけを使って計算します。検証用とテスト用には、学習データから得た統計量をそのまま当てはめる形になります。scikit-learnであれば、学習データにfit_transform、検証用とテスト用にはtransformのみを実行するという使い分けです。この区別を誤ると、テストデータの分布情報が前処理を通じて漏れ出し、評価が甘くなります。実装時は、変換器を保存する処理まで含めて1つの関数にまとめてください。
本番運用を見据えるなら、算出した統計量をファイルとして保存しておく必要があります。推論時には学習時と同じ平均と標準偏差を適用しなければならず、その値が失われるとモデルは正しく動きません。保存形式はpickleでもJSONでも構いませんが、モデルファイルと同じフォルダに、同じバージョン番号で置いてください。この運用を怠ると、モデルは残っているのに前処理が再現できず、作り直しになる事態が起こります。統計量の保存は、数行のコードで済む作業です。
名寄せ・重複排除は表記の標準化を終えてから実施する
名寄せを先に実施すると、表記が異なる同一顧客が別人として残ります。「株式会社データビズ」と「(株)データビズ」を別レコードのまま突き合わせても一致しないためです。正しい順序は、文字種の統一と法人格表記の正規化を済ませ、住所や電話番号の書式をそろえたうえで突き合わせる流れになります。この順序を守るだけで、名寄せの一致率が2割前後改善することもあります。標準化の処理は、名寄せ用の一時テーブルを作って適用すると管理しやすいでしょう。
重複排除では、どのレコードを残すかの規則を先に決めておきます。更新日時が最新のものを残す、欠損項目が最も少ないものを残す、といった規則が代表的です。規則を決めずに機械的な削除を行うと、最も情報量の多いレコードが消えてしまう事故が起こります。判定に用いるキーは、顧客IDのような一意キーだけに頼らず、氏名と生年月日と電話番号の組み合わせなど複数を用意しておきましょう。複合キーを使うと、一致率は単独キーより2割ほど高くなります。
名寄せとは?正確な顧客データ管理の方法と活用ポイントを徹底解説
時系列データは時間軸を崩さずに分割する
売上予測や需要予測のように時間の順序が意味を持つデータでは、ランダム分割を使ってはいけません。未来のデータで学習して過去を予測する形になり、実務ではあり得ない条件で評価してしまうためです。正しくは、ある基準日より前を学習用、後を検証用とする時系列分割を採用します。基準日は、本番運用で想定する予測時点と同じ間隔になるよう設定してください。月次で予測する運用なら、検証期間も1か月単位で区切る形が自然です。基準日をまたぐ集計処理が残っていないかも、あわせて確認しておきましょう。
特徴量づくりでも同じ配慮が必要になります。移動平均や過去n日の合計といった集計特徴量を作る際、対象日そのものを含めてしまうと未来の情報が混入します。前日までのデータで打ち切る、いわゆるシフト処理を必ず挟んでください。月末に確定する会計データを日次予測に使う場合は、確定タイミングの遅れを考慮して1か月ずらす対応が要ります。この遅延を無視したモデルは、検証環境では高い精度を示しながら、運用初日に入力が揃わず稼働できないという結末を迎えます。
不均衡データはサンプリング手法と評価指標をセットで検討する
不正検知や設備故障のように、少数派クラスが全体の1%未満というデータは珍しくありません。この状態で学習すると、モデルは多数派だけを予測して高い正解率を出すため、実用性の判断を誤ることになるのです。対処にはアンダーサンプリング、オーバーサンプリング、クラス重みの調整という3つの選択肢があります。件数と学習時間の制約から選ぶのが現実的です。多数派が10万件を超えるならアンダーサンプリング、少数派が数千件にとどまるならクラス重みの調整から試してみてください。
手法 | 向いている条件 | 主な副作用 | あわせて見る評価指標 |
|---|---|---|---|
アンダーサンプリング | 多数派が10万件以上あり削っても情報が残る | 多数派の情報が失われる | PR-AUC |
オーバーサンプリング | 少数派が数百件程度しかない | 過学習と不自然な境界の生成 | F1スコア |
クラス重みの調整 | データを増減させたくない | 閾値の調整が別途必要になる | 再現率と適合率 |
閾値の最適化 | 確率を出力できるモデルを使っている | 業務コストの見積もりが前提になる | 期待損失 |
サンプリングを適用する範囲にも注意が必要です。オーバーサンプリングは学習データにのみ実施し、検証用とテスト用には元の比率を維持してください。検証データまで水増しすると、本番と異なる比率で評価することになり、閾値の設定を誤ります。実務では、サンプリングを行わずクラス重みだけを調整し、予測確率の閾値を業務コストから決める方法が最も扱いやすいでしょう。閾値は0.5に固定せず、0.1刻みで期待損失を計算して決めます。
データ準備でよくある失敗パターンと回避策
ここで取り上げる5つの失敗は、いずれも検証環境では気づきにくく、本番運用に入ってから表面化する性質を持ちます。共通するのは、評価が実力より甘く出てしまう構造です。それぞれについて、発生の仕組みと、着手前に打てる回避策を具体的に見ていきましょう。
データリーケージ:未来の情報や目的変数が特徴量に混入する
データリーケージは、予測時点では知り得ない情報が特徴量へ紛れ込む現象を指します。解約予測に解約手続き日の列を残していた、購買予測に購入金額から作った集計値を含めていた、といった例が典型です。学習時の精度が異様に高い場合は、まずリーケージを疑ってください。AUCが0.98を超えるようなモデルは、業務課題として難しい問題であるほど不自然だと考えたほうが安全です。疑いが生じた時点で、特徴量の一覧へ立ち戻って確認しましょう。
検出には、特徴量の重要度を確認する方法が有効です。1つの特徴量だけが突出して重要度を占めている場合、その列は目的変数と直接的な関係を持つ可能性が高いといえます。加えて、各列について予測を行う時点でこの値は確定しているかを1列ずつ確認する作業を、レビューとして工程に組み込んでおきます。列数が100を超える場合でも、確認は半日から1日で終わる作業です。確認結果は列定義書へ追記し、次回以降の資産として残しておいてください。
学習時と推論時で加工処理が食い違い、本番で精度が出ない
学習用のコードと推論用のコードを別々に書くと、細かな差異が必ず生まれます。カテゴリ値の未知値をどう扱うか、日付のタイムゾーンをどう解釈するか、丸め処理を何桁で行うかといった箇所です。差異は数パーセントの精度低下として現れるため、バグとして気づきにくい点が厄介になります。回避策は、加工処理を1つの関数群にまとめ、学習時も推論時も同じ関数を呼ぶ構成にすることです。関数はモジュールとして切り出し、学習側と推論側の双方から読み込みます。
実装後の確認として、同じ入力データを学習用経路と推論用経路の両方に通し、出力が完全に一致するかを検証してください。テスト用のレコードは10件程度で十分であり、全列の値を比較して差分がゼロであることを確認します。この検証を自動テストとして仕込んでおけば、以降の改修で処理がずれた際にすぐ検知できます。導入にかかる工数は1〜2日程度で、本番障害1件分の対応コストを下回るはずです。自動テストは、学習コードを更新するたびに実行してください。
前処理コードが属人化し、同じ結果を再現できなくなる
担当者のローカル環境だけで加工が完結している状態は、退職や異動で一気に破綻します。ノートブックのセルを上から順に実行しても同じ結果にならない、途中で手作業のExcel編集が挟まっている、といった状態が典型例です。引き継ぎ時に動くけれど中身が分からないファイルだけが残り、結局ゼロから作り直すことになります。作業時間にして2〜4週間の損失です。属人化の兆候は、手順を口頭で説明できる人が1名しかいない状態に表れます。
対策の第一歩は、手作業をゼロにすることではなく、手作業を記録に残すことです。完全な自動化は工数がかかるため、まずは加工手順を番号付きの手順書としてテキストで残してください。そのうえで、頻度の高い処理から順にスクリプト化していく進め方が現実的でしょう。手順書は10行程度でも効果があり、作成に要する時間は1時間もかかりません。手順書には、実行順序と入力ファイル名、出力先の3点を必ず含めてください。この3点があれば、別の担当者でも作業を再現できます。
テストデータを繰り返し参照し、評価が実力より甘くなる
テストデータの結果を見ながら特徴量を調整する作業を繰り返すと、テストデータに対して最適化が進みます。表面上の精度は上がりますが、それは未知データへの性能ではなく、そのテストデータへの適合でしかないのです。この現象は繰り返し回数が20回を超えたあたりから顕著になり、実力との乖離が広がっていきます。テストデータは最終評価の1回だけ使う運用を守り、試行錯誤には検証用データを充てる分担を明確にしてください。
運用面では、テストデータを別フォルダに置き、アクセス記録を残す方法が実効性を持ちます。人数の少ないチームであれば、ファイル名に最終評価用と明記するだけでも抑止力として機能するものです。検証用データも複数回使えば同じ問題が起こるため、5分割の交差検証で平均を取る方法を併用すると安定します。評価は1回きりの真剣勝負だと位置づけておきましょう。評価用データの取り扱いルールは、着手時に文書へ残しておきます。ルールが口頭のままだと、繁忙期に必ず崩れるのです。
ラベル付けの基準が曖昧なまま学習データを量産してしまう
画像の不良判定や問い合わせ内容の分類など、人が正解を付与する作業では基準のばらつきが精度の上限を決めます。作業者3名に同じ100件を判定してもらうと、基準が曖昧な場合の一致率は6割程度まで下がることも多いのです。この状態で1万件を作っても、モデルは矛盾したデータから学ぶことになり、精度は頭打ちになります。量産に入る前に、少量で基準の妥当性を検証する工程を必ず挟んでください。検証にかかる時間は、100件で半日程度です。
基準づくりの手順は明快です。判定に迷った実例を20件ほど集め、それぞれについて判定結果と理由を書き添えた事例集を作成します。この事例集を作業者へ配布し、再度100件の判定を実施して一致率を測定してください。一致率が8割を超えたら量産へ進み、届かない場合は基準の見直しに戻る、という判定ラインを設けておくと運用が安定します。事例集は運用しながら追記し、四半期に1回は見直してください。判断の分かれた事例が5件たまった時点で更新すると、基準が形骸化しません。
データ準備を継続的に回すための実務ポイント
一度整えたデータ準備の仕組みは、放置すれば1年ほどで陳腐化します。業務プロセスの変更、システム更改、担当者の交代といった要因が積み重なるためです。ここでは、仕組みを回し続けるために押さえておきたい5つの実務ポイントを取り上げます。
アノテーション基準の明文化と品質チェックの仕組み
アノテーションの品質は、基準書と抜き取り検査の2つで担保します。基準書には、判定カテゴリの定義、境界事例の扱い、判断できない場合の処理方法を記載してください。分量はA4で3〜5枚に収め、事例の画像や文面を多く載せる構成にすると、作業者の理解が早まります。文章だけの基準書は読まれない前提で設計するのが現実的です。初版は2〜3日で作り切ってしまう進め方をおすすめします。完成度より、早く配って現場の指摘を集めるほうが効果的でしょう。
抜き取り検査は、全体の5〜10%を第三者が再判定する方式が扱いやすいでしょう。一致率が9割を下回った作業者には個別にフィードバックを行い、基準書の該当箇所を示して認識を合わせます。検査の頻度は、作業開始直後は毎日、安定してからは週1回で十分です。この仕組みを入れておくと、後から大量のラベルを修正する事態を避けられます。修正が発生した場合の工数は、当初の作業量の3割前後に達することもあるのです。検査の記録は、作業者別に一覧化して残しておいてください。
データとコードのバージョン管理で再現性を担保する
コードはGitで管理する運用が定着していても、データの版管理は手つかずというケースが多く見られます。学習に使ったデータが後から更新され、同じコードを実行しても結果が変わるという事態が起こります。対策として、学習に投入したデータのスナップショットを日付付きで保存し、モデルファイルと対応関係を記録してください。DVCやMLflowといった専用ツールを使う方法もあります。導入判断は、運用中のモデルが5本を超えたあたりが目安になるでしょう。
ツール導入が難しい場合でも、運用ルールだけで大半は解決できます。学習実行時に、データファイル名、実行日時、コードのコミットIDを1行にまとめてログへ追記する仕組みを用意してください。表計算ファイル1枚でも構いません。この記録があれば、半年後にどの条件で作ったモデルかを数分で特定でき、監査対応の負荷も大きく下がります。記録の追記は、学習スクリプトの末尾へ3行足すだけで実現できるものです。運用が定着してから、専用ツールへの移行を検討してください。
再学習を見据えて前処理をパイプライン化する
モデルは定期的な再学習が前提になります。月次や四半期ごとに最新データで学習し直す運用を想定すると、前処理を手作業で回す方式では負荷が積み上がる一方です。加工処理をパイプライン化し、入力から学習用ファイルの出力までを1コマンドで実行できる状態にします。この形にしておくと、再学習1回あたりの工数は数時間から数十分へ短縮できます。初期構築には2〜3週間を要しますが、再学習が年4回を超えるなら1年以内に投資を回収できるでしょう。
構築の順序は、頻度の高い処理から段階的に進めるのが安全です。最初に、データ読み込みと基本的な型変換だけを自動化し、次に欠損処理と表記統一を組み込みます。特徴量づくりは業務要件の変更を受けやすいため、最後に回すと手戻りが減ります。scikit-learnのPipelineやAirflowなど、既存の環境で使えるものから選んでください。段階的に進めれば、途中で要件が変わっても影響範囲を限定できます。一度に全体を作り込む進め方は、手戻りの規模が大きくなりがちです。
データ品質の指標を定めて定点観測する
品質を維持するには、感覚ではなく数値で状態を把握する必要があります。観測する指標は、完全性、一意性、妥当性、整合性、適時性の5観点から選ぶと漏れが出にくいでしょう。すべてを網羅する必要はなく、まずは各観点から1つずつ、合計5指標に絞って月次で記録してください。指標が増えすぎると集計自体が負担になり、続かなくなります。指標の定義は、算出式まで含めて文書化しておきましょう。定義が曖昧だと、担当者が代わった時点で数値の連続性が失われます。
- 完全性:主要項目の欠損率が基準値(例:3%)を下回っているか
- 一意性:顧客IDの重複件数がゼロか
- 妥当性:数値列が想定範囲内に収まっている行の割合
- 整合性:注文日が納品日より後になっている行がないか
- 適時性:データ連携の遅延が許容時間内に収まった日数の割合
記録した指標は、時系列グラフとして1枚のダッシュボードにまとめておきます。基準値を割り込んだ月には、原因調査の担当者と期限を決めて対応する運用を定めてください。指標の悪化はシステム改修や業務プロセス変更と連動していることが多いため、情報システム部門の変更履歴と並べて確認すると原因特定が早まります。観測を1年続けると、季節変動と異常の区別もつくようになります。ダッシュボードの更新は、月初の3営業日以内に済ませる運用が続けやすいでしょう。
データ品質とは?品質評価項目や品質を向上させるための実務的対策を解説
個人情報の取り扱いとデータ利用許諾の確認
学習データに個人情報が含まれる場合、利用目的の範囲内かどうかを法務部門と確認する工程が必要です。個人情報保護法では、取得時に示した利用目的を超える利用に本人同意が求められます。過去にサービス提供のためとだけ記載して取得したデータを、そのまま外部提供や新規事業の予測に使うことはできません。プライバシーポリシーの記載内容を、着手前に必ず読み合わせてください。確認には、法務担当者との30分の打ち合わせが1回あれば足ります。
実務では、氏名や住所などの直接識別子を削除したうえで学習する運用が基本になります。ただし、生年月日と郵便番号と性別の3項目がそろうと個人が特定され得るため、削除だけでは不十分な場合もあるのです。年齢は5歳刻み、郵便番号は上3桁までといった粗い粒度への変換を併用してください。外部委託先へデータを渡す際は、契約書に利用範囲と保管期間、返却または削除の方法を明記しておきましょう。粒度を粗くしても、モデル精度への影響は限定的です。
業種別に見る機械学習のデータ準備の取り組み例
業種によって、つまずく箇所には明確な傾向があります。製造業ではセンサーデータの時刻同期、小売業では顧客の同一性判定、金融業では時系列の扱いが主な論点です。ここでは3つの業種について、実際に手を動かす際の具体的な工程を紹介します。
製造業:センサーデータの欠損とサンプリング間隔をそろえた例
設備ごとにセンサーの記録間隔が異なる状況は頻繁に発生します。1秒間隔の振動センサーと、1分間隔の温度センサーを同じモデルに投入するには、時間軸をそろえる処理が要ります。方法としては、細かい側を粗い側に合わせて集約するのが基本であり、1分間の平均値、最大値、標準偏差といった統計量を作る形が一般的です。集約により情報は減りますが、欠損の少ない安定した特徴量が得られます。集約の単位は、予測したい事象の発生間隔に合わせて決めてください。
通信断による欠損は、時間の長さで対処を分けると判断が早くなります。数秒程度の欠損は前後の値による線形補間、数分に及ぶ欠損は該当時間帯を学習対象から除外、という基準が扱いやすいでしょう。設備の停止中と通信断の区別がつかない点にも注意が必要です。稼働フラグを別テーブルから結合し、稼働中の欠損だけを補間対象とする処理を挟んでください。稼働フラグがない場合は、電流値がゼロかどうかで代替できます。補間の可否を判断する基準は、設備担当者と決めておくと安全です。
製造業のデータ分析はなぜ必要?解決できる課題やメリットなどを解説
小売業:購買履歴の名寄せで顧客単位の特徴量を整備した例
会員カード、ECアカウント、アプリの3経路で顧客情報が別々に管理されている状況は珍しくありません。同一人物が3レコードに分かれたままでは、購買頻度も購入金額も実態の3分の1として計算されてしまうのです。名寄せによって顧客単位に統合すると、購買間隔や併売傾向といった特徴量が初めて意味を持つようになります。統合の前後で顧客数が2割前後減るのが一般的な結果です。統合の精度は、突合に使う項目を増やすほど高まります。
統合後は、RFMの3指標を軸に特徴量を設計すると着手しやすいでしょう。最終購買日からの経過日数、期間内の購買回数、累計購入金額の3つを基礎として、カテゴリ別の購入比率や曜日別の来店傾向を追加していきます。集計期間は、直近30日、90日、365日の3種類を用意すると、短期と長期の傾向を同時に捉えられます。期間の異なる特徴量を並べる設計は、季節商材を扱う業態ほど効果が出るはずです。集計期間の設定は、商品の購買サイクルを基準に決めてください。
小売業のデータ分析で何がわかる?目的・やり方・費用をわかりやすく解説
金融業:時系列を考慮した分割でリークを排除した例
与信審査や不正検知のモデルでは、審査時点で判明していない情報の混入が最大の論点になります。返済遅延の予測に、契約後へ発生した入金履歴を含めてしまう誤りが代表例です。回避には、各特徴量について審査時点で確定していたかを1列ずつ確認し、確定タイミングを一覧表に記録する作業が有効でしょう。列数が200を超える案件でも、確認作業は3〜5営業日で完了します。一覧表は、監査対応の資料としてもそのまま使えるものです。
分割は、時点を基準に3期間へ区切る方法が実務的です。たとえば2022年を学習用、2023年前半を検証用、2023年後半をテスト用とし、期間の重なりをなくします。この方法では、経済環境の変化による精度低下も同時に評価できるため、運用開始後の再学習頻度を見積もる材料にもなるのです。市場環境が大きく動いた期間をテストへ含めておくと、モデルの頑健性を確認できます。テスト期間は、直近の6か月以上を確保しておきましょう。
金融業界でデータ分析が重要な3つの理由とは?非構造化データの活用や、成功事例を解説
まとめ:データ準備の順序と品質管理が機械学習の成果を決める
機械学習の成果は、アルゴリズムの選択よりもデータ準備の設計で決まります。目的と評価指標を先に定め、分割を加工より前に置き、統計量は学習データだけから算出することが基本です。この3点を守るだけで、検証時と本番の精度差は大きく縮まります。順序を1つ入れ替えるだけで、両者の乖離は目に見えて縮まるものです。
明日から着手できることとして、次の3つをおすすめします。
- 予測対象の定義と評価指標を1枚の文書にまとめ、業務部門と合意する
- 全列の欠損率・ユニーク数・最小値と最大値を出力し、異常値の候補を洗い出す
- 分割方針(比率、層化の有無、時系列の考慮)を決めてから加工に着手する
取り組みの効果は、着手から2〜3か月で精度と運用負荷の両面に表れてきます。すべてを最初から完璧に整える必要はありません。まずは1つのモデルを対象に、順序と記録の徹底から始めてみてください。
「これから機械学習に関する取り組みを実施したいけれど、何から手をつけたらいいかわからない」「データ専門家の知見を取り入れたい」という方は、データ領域の実績豊富な弊社、データビズラボにお気軽にご相談ください。
貴社の課題や状況に合わせて、機械学習のためのデータ準備の取り組みをご提案させていただきます。








