1

異なる結果を提供する2つの並べ替えアルゴリズムがあります(関連性によって情報を並べ替えます)。結果として、両方の方法で、同じアイテムを異なる順序で取得します。私は、最初のアルゴリズムが2番目よりも良い結果を提供することを知っています。「array2の最初のN値はarray1の最初のN値の0.73品質」を意味する相対値(0から1)を取得したい(ユーザーはアクションなしで表示するため、最初の要素を比較します)。最初に頭に浮かぶのは、array1とarray2の位置の差の合計を使用することです。例えば:

array1:1 2 3 4 | 5 6 7 8 9

array2:8 6 2 3 | 7 4 159-array1の位置

array2 *:5 5 2 3 | (diapasone 0..1の相対値を取るために、4より大きい値は5に置き換えられます)

最初の4つの要素を比較したい:

S = 1 + 2 + 3 + 4-エタロンの合計、最大偏差

D = | 1-5 | + | 2-5 | + | 3-2 | + | 4-3 | =9-これは絶対偏差です

相対的な品質を計算するには、次の式を使用します:(S-D)/ S=0.1。

標準的なアルゴリズムはありますか?このアルゴリズムのどのような欠点がありますか?

4

1 に答える 1

1

あなたが探しているのはおそらく、関連性のランク付けに使用されるDCG [Discounted Cumulative Gain] とnDCG [normalized DCG] です。

これは、1 つのリスト [let it be list2] がベースライン、つまり「絶対的な真実」であり、それにlist1できるだけ近いものであると想定しています。
アイデアは、最初の要素が順不同の場合 - 10 番目の要素が順不同である場合はより重要であるということです。

解決策は、この投稿の私の回答の詳細と例で説明されています[自分自身を自己宣伝して申し訳ありませんが、ここにうまく収まるようです]。基本的な考え方は、次を評価することです。

DCG(list1)/DCG(list2)

各要素の関連性は、list2それ自体から導出されます。次に例を示します。rel_i = 1/log(1+i)

ノート:

  • もちろん、リスト全体ではなく、関連する要素でDCGのみ計算できます。n
  • このソリューションは、1ifの結果をもたらしますlist1 == list2
  • このソリューションでは、要素の数値ではなく、要素が表示される場所のみが重要であると想定しています。数値を完全に無視しています。
于 2012-04-17T13:45:03.777 に答える