欠損値の意味合いは色々ある
このタイトルを見ると、「機械学習 欠損値」で検索すると出てきそうな、欠損値の補完の仕方をイメージすると思いますが、情報がありふれているため、ここでは言及しません。ここで言及したいのは、機械学習の予測モデルに入れるデータの欠損値をどう処理するかというテクニカルなことではなく、データが欠損している意味合いが異なる場合に機械学習モデル自身を見直す、モデルを使ったビジネス上の運用も慎重に考える必要があるということです。
欠損と未知は違う
いわゆる欠損値の種類といったときに、MCAR, MAR, MNARがありますが、これはデータを取得しようと試みた結果様々な理由でデータが欠損しているときの欠損の仕方の違いです。これには「データを取得しようとした」という前提があり、データを選択するバイアスになっています。一方そもそもデータの取得の試み自体まだ行っていない場合はデータを取得しようとした結果の「欠損」ではなく、「未知」なのです。
「欠損」と「未知」がなぜ重要か
ここまで見ると、当たり前じゃないかと思うでしょう。ただ、データ分析したり、データに関連した意思決定をしたりする際、データベースやシステムから出力されたデータを使いますが、意識して「欠損」と「未知」を区別しない限り、データの持ち方上欠損値になってしまっていることがおおいにあります。
例えば、ECサイトの会員ごとに再購買するか否かを予測する2値分類のタスクを行う予測モデルを作って、レコメンドに活用したいとします。そして、直近あるアンケートを順次会員に対して実施しており、週ごとに会員群を決めてアンケートを配信し、回答を得ます。アンケートの回答内容は各会員の嗜好や行動属性に関する情報があり、レコメンドのモデルを作成する人はその情報を活用してモデルの精度改善に生かそうとします。この時に、データベース上のアンケート結果が欠損ないし未知の違いを意識して設計されず、それを知らずにアンケート結果を用いて予測モデルを作成すると、おおいに実運用時で精度が悪化する可能性が高いです。
なぜなら、アンケートを取った会員群でアンケート結果が欠損している場合、そこには会員の何かしらの意図があり、回答しない結果欠損となっている一方、アンケートをまだ配信していない会員群のデータは、意図がなく単純に未知なので、これを欠損と同じように扱うと予測を誤るからです。
ECサイトに愛着があって利用する会員ならアンケートを丁寧に回答して、欠損値は少ないので、欠損値があると再購買しない方向に機械学習モデルは学習するでしょう。一方このモデルを、単純にアンケートに未回答ゆえに未知な会員に適用すると、本来アンケートが配信されていれば丁寧に回答するリピーターも欠損値の影響で予測モデルによって再購買しないと判定されてしまうのです。
どう対処すべきか
以上を踏まえて、欠損と未知の違いを意識しつつ、要件に応じて対応を変える必要があります。
-
欠損と未知が混在した情報でもビジネスに活用したい
このような場合は、下記のような対応が考えられるでしょう。- システム設計時に、データが未知である事と、欠損している事を明示的に分けて定義する
- システム側で対応が困難な時には、データの前処理で欠損と未知の違いを欠損値補完の方法を変える、ないし欠損している予測対象群と未知である予測対象群で分けて予測モデルを作成し運用に使う
-
上記以外の場合
無理して欠損と未知が混在した情報を使用する必然性がなければ、以下のようにすればよいでしょう。- そもそも情報として使わない
- 欠損と未知の違いがなくなるまで待つ(前述の例でいえば、全会員のアンケート取得が終わるまで待つ)
まとめ
ここまで、実際にモデルも作って、「欠損」と「未知」が混在した状況があった時に、全て一様に欠損値として扱った予測モデルを適用するリスクと取りうる対応案を提示しました。言われれば当たり前ですが、概念としての違いがデータベースの設計時には思い及ばなかったり、データとしてだけ渡された場合に、おおいに誤るリスクをはらんでいるため、記事にしました。また、機械学習モデルのみならず、データに欠損が関連し、それによるビジネス判断が必要な場合でも参考になる考え方ではないかと思います。
ご意見、フィードバック等あればぜひお願いいたします。