UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【アルゴリズム】Interleaving

2つの配列を組み合わせる Interleaving(インターリービング) という手法を知ったので調べた

参考になった記事 qiita.com

Interleavingは、2つの配列の要素を交互に組み合わせて1つの配列にする手法

2つのランキングアルゴリズムの結果を交互に組み合わせて統合したランキングを作り、同一のユーザー群にそのランキングを提示して性能を評価したりするのに使う

アルゴリズムはいくつかあり、

  • Balanced Interleaving
  • Team Draft Interleaving
  • Probabilistic Interleaving
  • Optimized interleaving

などがある

Balanced Interleave、Team Draft Interleaving、Probabilistic Interleaving の違いは以下

Balanced Interleave

概要

  • 入力された2つの配列から、どちらから先に追加するかを選び、交互に要素を選んで統合する手法

特徴

  • 簡単なデータ統合や均等な配列結合に適している
  • どちらから先に追加したかによってあらかた2つの配列の優劣が決まってしまう問題があり、一様な確率で1つの要素をランダム選択した場合にバイアスがかかってしまう

2. Team Draft Interleaving

概要

  • 各ランキングリスト(検索結果など)を「チーム」として扱い、先攻後攻をランダムにしながら交互に順位の高い項目を選ぶ
  • 両チームにある要素は先に選ばれたチームのものとしてランキングに追加され、すでに選ばれた項目は除外される

特徴

  • ランダム選択によるバイアスはなく、公平に評価される
  • 統合した配列の中で突出して選択される要素があった場合、片方の配列の方がその要素の順位が高いにも関わらず、どちらの配列も同等に評価され優劣がつかない問題がある(元配列の順位の重みづけが考慮されていない)

3. Probabilistic Interleaving

概要

  • 2つのランキング結果から交互に要素を追加していく際に、できるだけ順位を保持しつつも、相対的に低い確率で任意の順序を選んで結合する手法
  • 基本的に順位の高いアイテムほど選ばれる確率が高いが、完全に確定的ではない

特徴

  • ランダム選択によるバイアスはなく、公平に評価される
  • 元配列の順位の重みづけが考慮される

他参考

https://disk.yandex.ru/i/1nhkaIY2ULQM-A

https://data.gunosy.io/entry/2018/10/15/080000

https://www.nogawanogawa.com/entry/interleaving