機械学習、モデルより先に「データ整備」が9割だった【機械学習入門②】

前回の記事(機械学習入門①)では、AI・機械学習・ディープラーニングの違いや、「機械学習の本質は予測に過ぎない」という話を書いた。

今回はその続き。実際にデータを使って予測モデルを作る演習に取り組んでみて、最初に壁にぶつかったのはモデルの作り方ではなく、「データを整えること」だった。

ビジネス課題をAIに落とし込むとはどういうことか

演習で使ったのは、ソーシャルレンディング(個人間融資)サービスのローンデータ。課題はシンプルで、「貸し倒れしそうな借り手を予測して、投資対効果を上げる」というものだった。

ランダムに貸し付けると平均15%が貸し倒れになり損失が出る。機械学習で貸し倒れリスクの高い人を除外できれば、収益性が改善できる。

これが機械学習をビジネスに使うということの本質だと思った。

  • ビジネス上のKPIを明確にする(今回は貸し倒れ率)
  • そのKPIを「予測問題」に変換する(貸し倒れる/しない、の二値分類)
  • 予測に必要なデータを特定して集める

「すべての道は(たぶん)予測に通じる」──目的から逆算してイシューを設定する、この思考の順番が重要だと感じた。

欠損値との格闘:データはきれいじゃない

いざデータを開いてみると、あちこちに欠損値(NA)がある。現実のデータはきれいじゃない、というのは頭ではわかっていたけれど、実際に目の当たりにすると思った以上にやることが多い。

欠損値の処理方法は大きく3つ。

  • そのまま(NAのまま)扱う:決定木・ランダムフォレスト・XGBoostなどのツリー系アルゴリズムはNAをそのまま扱える
  • 他の値で埋める:平均値・中央値・最頻値などの代表値で補完する
  • 欠損の有無自体を特徴量にする:「欠損しているかどうか」自体が予測に役立つ情報になりうる

どれが正解かは一概に言えない。「欠損値処理は予測の助けになるように」──この原則に従って、変数ごとに判断する必要がある。

ここで初めて気づいたのが、データを整えることの奥深さだった。単純に穴埋めすればいいわけじゃなく、なぜ欠損しているのかを考えることがむしろ重要だったりする。

データリーケージ:その変数、使っていいの?

欠損値よりも「なるほど」と思ったのが、データリーケージという概念だった。

データリーケージとは、予測する時点では本来知り得ないはずのデータがモデルに紛れ込んでしまうこと。

わかりやすい例を挙げると、無料会員が有料会員になるかどうかを予測したいとする。手元のデータにはクレジットカード情報の有無が含まれている。これを特徴量として使うと、精度100%のモデルができあがる。でもこれは意味がない。

なぜかというと、クレジットカードを登録した人は全員有料会員になる(だからカード情報がある)という当たり前の事実を学習しているだけだから。予測したい結果と同じ情報を入力に使っている状態で、未来の予測には何の役にも立たない。

このように、「予測の時点では使えないはずのデータ」を誤って特徴量に含めてしまうのがデータリーケージ。精度が異常に高いモデルができたときは、むしろ疑った方がいい。

特徴量エンジニアリング:データから新しい変数を作る

データを整えるだけでなく、既存のデータから予測に役立つ新しい変数を作ることもデータサイエンティストの重要な仕事だ。これを特徴量エンジニアリングという。

例えばタイタニックのデータには「兄弟・配偶者の人数」と「親子の人数」という変数がある。これを組み合わせて「同乗親族数」という新しい変数を作ると、生存予測の精度が上がる可能性がある。

あるいは日付データをそのまま使うのではなく、「曜日」や「平日/週末」に変換する。これも特徴量エンジニアリングの一つだ。

ここで重要なのがドメイン知識。「この業界ではこういう変数が効きそう」という人間の経験と知識が、モデルの精度を大きく左右する。ディープラーニングは特徴量を自動で学習できるが、構造化データの世界ではまだまだ人間の知恵が問われる部分だ。

学んだこと:データサイエンスの「地味な9割」

AIやデータサイエンスというと、最先端のアルゴリズムや高い予測精度の話に目が行きがちだ。でも実際にやってみると、時間と思考力のほとんどはデータを理解して整える作業に使われる。

欠損値をどう扱うか。どの変数を使っていいか。新しい変数を作れないか。この「地味な9割」の質がモデルの精度を決める。

ITインフラ畑にいた私には、これが一番の発見だった。システムを作ることと、データを扱うことは、求められる思考がまるで違う。データサイエンスは「エンジニアリング」というより「データへの問いかけ」に近い感覚がある。

次回は、モデルを作った後の話。過学習・AUC・混同行列──「良いモデル」をどう評価するかについて書く。

→ 【機械学習入門③の記事はこちら】※公開後リンク追加予定

学びを深めるのにおすすめの本

データ前処理や特徴量エンジニアリングについてさらに深く学びたい方におすすめの本を紹介する。

①データ前処理・特徴量エンジニアリングを体系的に学ぶなら

『前処理大全』(技術評論社、本橋智光著)

データの前処理に特化した一冊。欠損値・外れ値・カテゴリ変数の扱い方など、実務で直面する課題を体系的にカバーしている。「データを整える」作業の全体像を掴むのに最適。

②Kaggleで通用するデータ分析を学ぶなら

『Kaggleで勝つデータ分析の技術』(技術評論社、門脇大輔ほか著)

特徴量エンジニアリングからモデルの評価まで、実践的な内容が詰まっている。コンペ上位入賞者のノウハウが惜しみなく書かれており、データサイエンスの「勝ち筋」が学べる。

広告