こんにちは!

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

機械学習による推薦システムの性能評価において交差検証(クロスバリデーション)を行うときに、気をつけなければいけないことについてご紹介します。

前回の記事で、グループワイズ交差検証 (group-wise cross-validation) についてご紹介しました。今回はその続きです。

推薦システムを教師つきの機械学習を用いて構成するとき、グループワイズ交差検証を、複数方向にグループ分けしながら行う必要があります。ここで具体的にはユーザー方向・アイテム方向・時間方向の3方向を考えます。

推薦エンジンとなる予測器 y_{ij} = f( u_i, v_j ) は、ユーザー i の特徴量 u_i とアイテム j の特徴量 v_j の組み合わせを入力として受け取り、出力 y_{ij} によって a_{ij} を予測します。

学習フェイズでは、この予測誤差が小さくなるように関数 f() を調整します。しかし、学習用データセットのなかには、同一ユーザーもしくは同一アイテムによるアクション事例が複数ふくまれています。このため、テスト用アクション事例を素朴に選んでしまうと、ユーザーが一致するような事例や、アイテムが一致するような事例が訓練用データセットに含まれることが避けられません。すると、ラベル情報の漏洩によって性能評価にバイアスが載ってしまうのです。

こういうタイプの漏洩を避けるには、グループワイズ交差検証が必要ですが、ユーザーグループとアイテムグループの両方を考える必要があります。どういう工夫をすればよいでしょうか?

ミイダス社の事例を紹介しましょう。

我々は、まず過去データを集約した機械学習用パターンデータセットを用意しました。

まず、ユーザーのアクション事例として以下の3種類を集めます。

【閲覧】ユーザーがポジションオファーの詳細表示を行った
【検討】ポジションオファーを検討リストに入れた
【応募】当該ポジションへの応募ボタンをクリックした

パターン2値分類用のスキームとして【閲覧のみ】 /【検討 or 応募】となるように、ユーザーとポジションペアを整理し、ペアに対応するユーザー・ポジションの特徴パターンベクトルを集約しました。

図1. 多方向交差検証の概念図とその適用例。(a) ユーザーがアイテムに対して行ったアクション事例データ(図中の黒塗り小方形)を、時間方向に2分割、ユーザー方向に2分割、アイテム方向に2分割し、全ての組み合わせ合計して8分割し、Yellow 0, Blue 0,…のように名前をつけた。Yellow 0 の領域に所属するものを訓練データセットとして教師付き学習を行い、その精度を8領域に分けて集計する。 (b) 領域ごとの精度を ROC-AUC で評価した結果と、Yellow 0 と各領域の重複ユーザー・重複アイテムの個数 [1] 。

次に機械学習用パターンデータセットを図1(a)のように8分割しました。

  • (時間方向)直近1ヶ月の事例/それ以前の事例
  • (ユーザー方向)ランダムに選択したテスト用 25% ユーザー/残り 75% 訓練用ユーザー
  • (アイテム方向)ランダムに選択したテスト用 25% アイテム/残り 75% 訓練用アイテム

訓練用パターン群として、1ヶ月以前の事例のみを使うものとし、そのなかで訓練用ユーザーと訓練用アイテムの組み合わせを選び、機械学習を行い、パターン認識に基づく予測器を構成しました。次に、この予測器を上記8分割した事例データそれぞれに適用して精度性能を求めました。

図1(b)では、各領域の精度性能として ROC-AUC の値を示し、また、Yellow 0 に含まれる事例と、その他領域に含まれる事例との間で、ユーザー/アイテムが重複していたものの個数も合わせて示しています。ここで、訓練/テスト分割を16パターン用意した16-foldの交差検証を行っており、精度については16-fold間の平均と標準偏差、重複数については16-fold間の平均を示しています。ただし、Yellow 0 における精度に限っては、訓練データに対してさらに10-fold交差検証を適用した結果(の16-fold間平均と標準偏差)を示しています。

つまり、Yellow 0 における値 0.748 は、推薦システムの特殊事情を考慮せず、うかつに普通の交差検証を行ってしまった場合に得られる値を意味しており、情報リークに起因する大きなバイアスを含んでいます。Yellow 0 の値 0.748 と、テスト用時間区(Yellow 1)における性能 0.681 との間の差 0.067 ポイントはだいぶ大きいですが、このバイアスのせいです。

大きなバイアスの影響から逃れるために、正しくは、まず Yellow 0 と同一の学習用時間区において、ユーザー・アイテムともに重複がない領域 Red 0 における値 0.643 を見るべきです。これが汎化性能をバイアス無しに示していることになります。したがって、この値は同じ領域のテスト用時間区 Red 1における性能 0.635 を精度よく予測できています。

次に、ユーザーの重複とアイテムの重複のどちらが、よりおおきなバイアス要因になっているかを見積もりましょう。このためには Blue 0 と Green 0 を比較すればよいです。Blue 0 における値 0.743 が Green 0 における値 0.662 よりもはるかに大きいことがわかります。このデータでは、訓練データとテストデータの間でのユーザーの重複が、アイテムの重複よりも、教師付き学習の見かけの性能により大きな影響を与えていたことがわかりました。

図2. 3方向 16-fold のクロスバリデーションのためのデータ分割方法。ユーザー(行)を4分割、アイテム(列)を4分割することにより、データ行列を16分割し、赤・青・緑・黄色に色分けする。黄色箇所を訓練用データセットとし、赤・青・緑箇所をそれぞれ評価対象データセットとする。

推薦システムを教師つきの機械学習を用いて構成するとき、うえで見たようなグループワイズ交差検証を、複数方向でグループ分けしながら行う必要があるよ!という話をご紹介しました。

推薦システムを作る上で、協調フィルタを用いる場面も多いでしょう。協調フィルタだけを用いて、教師つき学習を用いない場合にはこのような状況は現れません。Eコマースや広告推薦における推薦システムでは、このようなタイプの交差検証の必要性は低いはずです。

しかし、教師つきとのハイブリッドなどを考える場合には、やはりグループワイズの交差検証を考える必要が出てきます。気をつけなければいけませんね。


今回の話題は、今年 2022年の3月に出版された、人工知能学会誌の職場で働くAI特集内の記事 [1] の中でも短かくご紹介済みです。この記事には、我々が抱えている面白い話題を他にもたくさん紹介していますので、ご興味のあるかたはぜひご覧ください。

[1] 人工知能学会誌 Vol.37 No.2 (2022/3) 職場で働くAI特集 p.126

アセスメントリクルーティングを支えるHR サイエンス 神長 伸幸・大羽 成征

今日は2022年6月6日です。

2022年6月14日〜17日に開催される人工知能学会では、ミイダス株式会社HRサイエンス研究所を紹介するブースを置きます。詳しくはこちらをご覧ください。

我々は、インターンシップ生を募集しており、意欲のある大学院生を5月に若干名、6月に若干名を採用予定です。詳しくはこちらをご覧ください。