u++の備忘録

データセットの綴りミスは必ず直すべきか?

前回書いた記事では、綴りミスなどの修正に用いる辞書を手動で構築する方法を紹介しました。

upura.hatenablog.com

本記事では、Petfinderコンペを題材に「データセットの綴りミスは必ず直すべきか?」という問いについて考えたいと思います。

自分なりの回答

  • 綴りミスなどもデータの特徴の一つ
  • 課題設定によっては、敢えて修正しない選択肢もあり得る
  • 「修正度合い」という特徴量作成や同一ユーザの特定などに活用する方法もありそう

概説

綴りミスの修正は、データセット全体の完成度を高め、より良い機械学習モデルの構築に繋がる可能性があります。ただし、綴りミスなどもデータが持つ大切な特徴の一つであることに留意する必要があると思います。

前回の記事でも扱ったPetfinderコンペを例に考えます。

このコンペでは、次のようなデータが提供され「マレーシアのペットショップでの犬・猫が引き取られる早さ」を予測しました。

  • ペットの画像形式データ
  • 説明文やペットの名前などのテキスト形式データ
  • 身長・体重・属性などのテーブル形式データ
  • 必要に応じて外部データ

ここで、犬・猫を引き取る人の気持ちになってみましょう。説明文は実際にペットに付与されていた情報です。この説明文中の綴りミスは、引き取り手のペットに対する印象を悪くしていた可能性が考えられるのではないでしょうか。(同じような価格・種類のペットが2匹いた場合、説明文がきちんとしている方のペットが選ばれやすそうです)

このような仮説のもとで考えると、闇雲に綴りミスを修正してしまうのは、性能の向上ではなく悪化に繋がってしまう可能性があります。(Petfinderコンペでは修正の有無ではスコアはほとんど変わりませんでした)

どのような対応を取るべきかはデータと課題設定に依る話です。例えば、綴りミスを修正した上で、新規に「修正した文字数」などの特徴量を加えるなどのやり方もあるでしょう。他にも、同じような綴りミスをしているデータを見つけて、データセット上は公開されていない同一のグループを特定しにいくようなアプローチも考えられるかもしれません。仮に特定したグループがtrain, testにまたがっていれば、leakageのような要素で性能向上に繋がる可能性があります。

綴りミスに限らない話ですが、何事も思考停止で取り組むのではなく、データをしっかりと眺めて求められる課題設定に即した処理を実施していく必要があると思います。

おわりに

本記事では、Petfinderコンペを題材に「データセットの綴りミスは必ず直すべきか?」という問いについての自分の考えをまとめました。自分自身、Petfinderコンペ開催中には十分に考慮できていなかった内容もあり、振り返る形で記事化しておきました。

CPMPさんGibaさんらGrand Masterの称号を持っている方々は、データを良く見て課題に応じて対応するという言うだけなら当たり前な部分を着実にこなしている印象があります。自分自身もこの辺りの経験を積んで、Kaggleでも実務でも優れたデータ分析者になれるよう精進していきたいです。