16

アイテムを 1 から 10 までの等級で評価するのではなく、1 対 1 の「戦い」を行いたいと考えています。2つのアイテムが並んで表示されますので、好きな方を選んでください。これらの「戦い」の結果に基づいて、アルゴリズムは各項目の評価を計算する必要があります。

このアプローチは、このアプローチを使用して映画が評価されているFlickchart.comで確認できます。

次のようになります。

スクリーンショット

ご覧のとおり、「戦い」に勝った場合、アイテムは上に押し上げられます。「ファイト」の結果によってランキングは常に変動します。しかし、これは勝率 (ここでは 54%) だけに基づいているわけではありません。「25 時間」程度よりも「タイタニック」に勝つ方が難しいからです。

よくわからない点がいくつかあります: - 評価はどのように計算されますか? ランキング1位の映画はどうやって決まるの?アイテムがどれくらいの頻度で勝つか、そして打ち負かされたアイテムがどれだけ優れているかを考慮する必要があります。- 「戦い」のあるアイテムの選び方は?

もちろん、Flickchart がこれらすべてを正確にどのように行っているかはわかりません。しかし、それがどのように行われるかを教えていただけるかもしれません。前もって感謝します!

4

9 に答える 9

9

これは flickchart が行っていることとまったく同じではないかもしれませんが、チェス (およびその他のスポーツ) で使用されるELOアルゴリズムの変形を使用できます。

基本的に、すべての映画は 0 勝 / 敗から始まり、勝つたびに一定のポイントを獲得します。通常、平均は 20 前後ですが (ただし、任意の数でもかまいません)、自分と同じ評価の映画に勝つと、ちょうどその 20 になります。悪い映画に勝つと、約 10 ポイントが得られますが、より良い映画に勝つと、あなたに30ポイントを与えます。逆に、良い映画に負けた場合は 10 ポイントしか減点されませんが、悪い映画に負けた場合は 30 ポイントを失います。

アルゴリズムの詳細は、ウィキペディアのリンクにあります。

于 2009-12-06T16:53:19.203 に答える
5

評価はどのように計算されますか? ランキング1位の映画はどうやって決まるの?アイテムがどれくらいの頻度で勝つか、そして打ち負かされたアイテムがどれだけ優れているかを考慮する必要があります。

必要なのは、ベイジアン推定とも呼ばれる加重評価です。

IMDB のトップ 250 ムービーは、ランキング Web サイトを作成するための出発点として適していると思います。30 万票以上の映画もあれば、5 万票未満の映画もあります。IMDB はベイズ推定を使用して、人気のある映画を不当に重み付けすることなく、映画を相互にランク付けします。アルゴリズムは、ページの下部に記載されています。

weighted rating (WR) = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C どこ:

  • R = 映画の平均 (平均) = (評価)
  • v = 映画の投票数 = (votes)
  • m = トップ 250 にリストされるために必要な最低投票数 (現在は 3000)
  • C = レポート全体の平均投票数 (現在 6.9)

トップ 250 については、通常の有権者からの投票のみが考慮されます。

IMDB が最小投票数として 3000 を選んだ理由はわかりません。彼らは 1000 または 10000 を選択でき、リストは多かれ少なかれ同じでした。たぶん、彼らは「興行収入で6週間後の平均投票数」を使用しているのかもしれませんし、試行錯誤をしているのかもしれません.

いずれにせよ、それは本当に問題ではありません。上記の式は、ランキング Web サイトで投票を正規化するためのほぼ標準であり、Flickrchart がバックグラウンドで同様のものを使用していることはほぼ確実です。

この式は、評価を平均に向けて「引っ張る」ため、非常にうまく機能します。つまり、平均を超える評価はわずかに減少し、平均を下回る評価はわずかに増加します。ただし、引きの強さは映画の得票数に反比例します。そのため、投票数の少ない映画は、投票数の多い映画よりも積極的に平均に引き寄せられます。プロパティを示す 2 つのデータ ポイントを次に示します。

Rank  Movie            Votes            Avg Rating        Weighted Rating
----  -----            -----            ----------        ---------------
219   La Strada        15,000+          8.2               8.0
221   Pirates of the   210,000+         8.0               8.0
      Caribbean 2

両方の映画の評価は引き下げられていますが、La Strada の引きはより劇的で、投票数が少なく、PotC の評価ほど代表的ではありません。


あなたの特定のケースでは、「戦い」に2つのアイテムがあります。おそらく、次のようにテーブルを設計する必要があります。

Items
-----
ItemID (pk)
FightsWon (int)
FightsEngaged (int)

平均評価は FightsWon / FightsEngaged です。加重評価は、上記の式を使用して計算されます。

ユーザーが戦いで勝者を選択すると、勝ったアイテムの FightsWon フィールドを 1 増やし、両方のアイテムの FightsEngaged フィールドを 1 増やします。

お役に立てれば!- ジュリエット

于 2009-12-11T03:24:25.997 に答える
2

私はしばらくの間、ペアワイズ比較によるアイテムのランク付けの問題に取り組んできましたが、これまでに思いついたアイデアを時間をかけて説明したいと思いました。

今のところ、私は単純に<fights won> / <total fights>、最も高いものから順に並べ替えています。これは、投票するのが1人だけの場合、または投票する人が多い場合に問題なく機能します。そうしないと、すぐに不正確になる可能性があります。

ここでの1つの問題は、どの2つのアイテムが戦うべきかをどのように選択するかです。(主観的に)うまく機能しているように見えることの1つは、これまでのところ戦闘が最も少ないアイテムをランダムなアイテムと戦わせることです。これは、有権者にとって退屈である可能性を犠牲にして、アイテムの比較的均一な数の戦い(->精度)につながります。彼らはしばしば最新のアイテムを他のものと比較するでしょう、それはちょっと退屈です。これを軽減するために、戦闘回数が最も少ないn個のアイテムを選択し、そのうちの1つをランダムに最初の候補として選択することができます。

あなたは、強い敵に対しての勝利を弱い敵に対する勝利よりも重要視したいと述べました。上記の他の投稿で述べたように、チェスなどに使用されるレーティングシステム(Elo、Glicko)が機能する場合があります。個人的には、MicrosoftのTrueSkillを使用したいと思います。これは、最も正確であり、TrueSkillによって計算された描画確率が最も高い2つのアイテムを選択して互いにピットインするための良い方法を提供するためです。しかし、残念ながら、私の数学の理解は、システムの詳細を実際に理解して実装するのに十分ではなく、とにかくライセンス料の対象となる可能性があります...

集合的な選択:より多くの情報/インスピレーションが必要な場合は、競争力のあるランキングシステムにいくつかの異なる評価システムの概要があります。

評価システム以外にも、さまざまな単純なラダーシステムを試すことができます。一例:

  1. アイテムのリストをランダム化して、1からnにランク付けします
  2. ランダムに2つのアイテムを選び、それらを戦わせます
  3. 勝者が敗者より上位にランクされている場合:何もしない
  4. 敗者が勝者より上位にランクされている場合:
    • 敗者が勝者の真上にいる場合:それらを交換します
    • それ以外の場合:勝者をはしごをx%上に移動して、戦いの敗者に向かってください。
  5. 後藤2

これは最初は比較的不安定ですが、時間の経過とともに改善されるはずです。しかし、それは変動し続けることはありません。

少なくとも少しはお役に立てれば幸いです。

于 2009-12-14T18:15:47.400 に答える
2

フリックチャートに関しては、私はそれを少しいじっていましたが、評価システムはかなり洗練されていないと思います. 擬似コードでは、次のようになると思います。

if rank(loser) == null and rank(winner) == null
    insert loser at position estimated from global rank
    insert winner at position estimated from global rank
else if rank(winner) == null or rank(winner) < rank(loser)
    then advance winner to loser's position and demote loser and all following by 1

なぜ私はこれを考えるのですか?まず、彼らのベイズ事前分布は、私の以前の選択を慎重に調べたものではないことを完全に確信しています。私はジェダイの帰還が好きで、帝国の逆襲が好きなので、彼らはそれを推測する方法がないようです. 実際、私はホーム アローン 2 を見たことがあるので、ホーム アローン 1 を見たことがあるかもしれないので、彼らはそれを理解できません。

第二に、上記のコードを見ると小さなバグが見つかるかもしれませんが、サイト上で間違いなく気付くでしょう。選択を行うと、勝者が1 つずつスライドすることがあります。これは、敗者が以前に追加されていない場合にのみ発生するようです。私の推測では、敗者が勝者よりも高く追加されているということです。

それ以外は、ランクの低い映画がランクの高い映画を直接打ち負かさない限り、ランキングはまったく変わらないことに気付くでしょう。実際のスコアが保持されているとは思いません。このサイトは、各映画の序数ランクと最新の評価を除いて、完全に記憶を失っているようです。

于 2009-12-11T21:04:33.323 に答える
1

考え抜いた結果、この映画ランキングの最適な解は次のとおりです。

必要なデータ:

  • 映画の各ペアリングで得られた投票数。
    • また、基数ソートのようにグループ化されたこのデータのソート済みバージョン
  • 映画の各ペアで各映画が投票された回数

オプションのデータ:

  • 各映画が各ユーザーの投票に参加した回数

ユーザーの投票を選択する方法:

  • ソートされたリストから、最も使用されていない基数グループの投票選択を (ランダムに) 選択します。
  • オプション: ユーザーの個人的な投票統計を使用して、何度も投票を求められた映画を除外します。適切なものがない場合は、より高い基数のバケットに移動する可能性があります。

映画のランキング スコアの計算方法:

  • スコアを 0 から開始する
  • システム内のお互いのフィルムを介して行きます
    • voteswon / votestakenこの映画との対戦をスコアに 追加
      • これらの 2 つの映画の間で投票が行われなかった場合は、代わりに 0.5 を追加します (これはもちろん、新しい映画をランキングで平均的に開始することを前提としています)

注: オプションのものは、ユーザーが退屈するのを防ぐためのものですが、他の統計にも役立つ場合があります。特に、その映画に別の映画よりも投票した回数を含める場合はそうです。

新しく追加された映画の統計をできるだけ早く収集し、既存のすべての映画に非常に均等に投票を分散させることは、残りの映画の統計を正確に保つために不可欠です。ランキングの一時的な不具合を回避するために、一連の新しい映画のシステムへの登録をずらす価値があるかもしれません (ただし、即時でも深刻でもありません)。

===これが元の答えです===

問題は実際には非常に簡単です。ここでは、あなたがその映画に投票するために優先順に並べたいと仮定しています。つまり、1 位にランク付けされた映画は、投票で選ばれる可能性が最も高い映画です。各投票で完全にランダムに 2 つの映画を選択するようにすると、簡単な計算でこれを計算できます。

まず、投票する 2 つの映画の各選択の可能性は同じであるため、各投票の結果を加算してスコアを求めることができます (すべてに 1/nC2 を乗じて保存します)。そして明らかに、誰かがある特定の映画に投票して、別の特定の映画に投票する確率はvotesforthisfilm / numberofvotes.

したがって、1 つの映画のスコアを計算するには、votesforthisfilm / numberofvotes照合できるすべての映画を合計します。

他のすべての映画に対してかなりの数の票を獲得していない新しい映画を追加すると、ここで少し問題が発生するため、投票数が増えるまでランキングから除外することをお勧めします。

===以下はほとんど間違っており、主に歴史的な文脈のためにここに記載されています===

このスコアリング方法は、投票システムのマルコフ連鎖から導き出されたものであり、考えられるすべての投票質問の可能性が等しいと仮定しています。 [この最初の文は間違っています。意味のある結果を得るには、マルコフ連鎖ですべての投票の質問を行う可能性が等しくなければならないからです] もちろん、これは当てはまりません。実際、これも修正できます。質問は、その質問に対して行われた投票の数です! [特定の投票の質問を得る確率は実際には無関係なので、これは役に立ちません] このように、同じグラフを使用して、投票によって重み付けされたエッジを使用して...

投票に含まれていた場合に各映画を獲得する確率は、各映画を獲得して投票に参加する確率と同じであり、投票に含まれた確率で割ったものです。これは でsumoverallvotes((votesforthisfilm / numberofvotes) * numberofvotes) / totalnumberofvotes割ることになりsumoverallvotes(numberofvotes) / totalnumberofvotesます。多くのキャンセルで、これは になりvotesforthisfilmoverallvotes / numberofvotesinvolvingthisfilmます。これは本当に簡単です!

于 2009-12-15T17:41:41.337 に答える
1

または、PageRank のバリアントを使用することもできます。prof を参照してください。ウィルフのクールな説明

于 2009-12-09T11:32:38.173 に答える
0

http://en.wikipedia.org/wiki/Maximize_Affirmed_Majorities

(または、元々はVeryBlindDate投票アルゴリズムと呼ばれていたBestThing投票アルゴリズム

于 2009-12-10T18:38:21.790 に答える
0

このような 1 対 1 のシナリオは、離散選択と呼ばれるコンジョイント分析の一種ではないかと思います。これらは、市場調査のための Web 調査でかなり頻繁に見られます。通常、お客様は 2 つ以上の異なる機能セットから最も好む機能を選択するよう求められます。残念ながら、(私のような非統計の専門家にとって) かなり複雑なので、理解するのが難しいかもしれません。

于 2009-12-12T06:36:19.093 に答える
-1

これらの方針に沿ったあらゆる種類の興味深いアルゴリズムとデータ分析については、「集合知プログラミング」という本を心からお勧めします。

于 2009-12-15T15:13:00.010 に答える