こんにちは!

ミイダス株式会社のHRサイエンス研究所で、機械学習チームのリーダーをしている OBA です。

この記事では、機械学習による推薦システムの性能評価において交差検証(クロスバリデーション)を行うときに、気をつけなければいけないことについてご紹介します。教師つき学習でよく知られている方法を単純に応用するだけでは、手痛い失敗をする場合があるんです。

転職/求人を支援するサービスであるミイダスの利用者(ユーザー)は、自分にあった求人ポジション(アイテム)を見つけ、検討して、これぞというものに応募します。そこで、ミイダスはサービスのなかに機械学習による推薦システムを組み込んで、各ユーザーに対して多数のアイテムに適切な優先順をつけて提示するようにしています。

一般に機械学習を用いて作られたシステムの性能検証において、交差検証 (cross-validation) というテクニックがあり、多くの読者はすでによくご存知でしょう。

しかし、以下のグループワイズ交差検証 (group-wise cross-validation) についてはご存知ないかたが多いのではないかと思います。筆者は、優秀な大学院生やデータサイエンティストがこの同じ落とし穴にハマる例をたくさん見てきました。

わかりやすい典型例があります。

音楽データの断片から、そのジャンルを推定する、というパターン認識課題を考えてみましょう。

図1:グループワイズ交差検証を必要とする問題の典型例。楽曲のジャンル(クラシック(白)/ロック(黒))を、音声断片(赤)のパターン認識によって推定する。

クラシック音楽もしくはロック音楽の楽曲を 10曲ずつ、合計20曲集め、1曲あたり50個の音声データ断片、合計1000個を集めて、教師付き機械学習によるパターン分類によって楽曲のジャンル(クラシック/ロック)を推定します。深層ニューラルネットを使えば精度の良い分類ができそうです。

実はこの問題は、通常の交差検証を行ってはダメで、グループワイズ交差検証を行わなければいけない典型例です。

まず、素朴に音声断片1000個を200個ずつ5群に分けることで5-fold 交差検証を行ってしまった場合を考えましょう。

このとき、たとえば楽曲1番に対応する100個の音声断片のうち、約160個が訓練用、約40個がテスト用に、両側にまたがって存在することになります。すると、テスト用の音声断片からジャンルを推定する際、「楽曲1番と同じ音だ、ということは楽曲1番と同じジャンルだ」という推理を働かせることが可能になってしまいます。これは、音声から純粋にジャンルに関する特徴を読み取る精度を測る観点から見ると、ズルをしていることになります。ズルなので、不当に高くバイアスされた精度が得られてしまいます。

こういう現象を、推定対象となるラベル情報の漏洩(リーク;leakage)と呼びます。

このような状況で、正しくは、以下のようなグループワイズ交差検証を行わなければいけません。

(1)楽曲20曲を4曲ずつ5群に分ける
(2)1群に対応する4曲を評価用、残りの16曲を学習用に配分する
(3)評価用群に対応する音声断片 200個を評価用データセット、残りの800個を学習用データセットとする
(4)学習用データセットでジャンル予測器を構成し、評価用データセットで精度を算出する
(5)(2)–(4) を5群ぶん繰り返し、精度を平均して報告する

うえの手順では、(1) の工程で音声断片ではなく、同じ曲に対応する音声断片グループを5群に分けていることによって、ラベル情報の漏洩を防ぐことができているわけです。

グループワイズ交差検証は sklearn パッケージ中の GroupKFold クラスを用いることで実現できます。
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GroupKFold.html

推薦システムを教師付き学習で構築するとき、入力はユーザー属性とアイテム属性の組み合わせとなります。したがって、ここで説明したグループワイズ交差検証によって、ユーザー群を取り分けて扱わないと、ラベル情報の漏洩によって性能の過大評価が簡単に生じてしまうのです。

実はこの話にはまだ続きがあります。ユーザー群だけでなくアイテム群のほうも取り分けて扱う必要がある、という話について次回記事でもう少しお話しします。


今日は 2022年6月3日です。人工知能学会の開催まであと少しですね。

人工知能学会では、ミイダス株式会社HRサイエンス研究所の紹介ブースを置いて会社や研究所の紹介を行います。詳しくはこちら

それから、いまHRサイエンス研究所インターン生の募集をしています。研究所に興味をお持ちの大学院生のかたはご検討ください。インターン生募集はこちら(2022年6月30日締切)