83

サイトの訪問者が評価できるゲームを作成して、風景画像のコレクションをランク付けし、どの画像が最も魅力的かを見つけたいと考えています。

それを行うための良い方法は何ですか?

  • ホットオアノットスタイル?つまり、単一の画像を表示し、ユーザーに 1 ~ 10 のランク付けを依頼します。私が見ているように、これによりスコアを平均化することができ、すべての画像で投票が均等に分散されるようにする必要があります。実装はかなり簡単です。
  • AまたはBを選択しますか?つまり、2 つの画像を表示し、ユーザーに良い方を選択してもらいます。これは数字のランキングではなく、あくまでも比較であるため魅力的です。しかし、どうすればそれを実装できますか? 私が最初に考えたのは、人間が提供する比較操作を使用してクイックソートとして実行し、完了したら、並べ替えを無限に繰り返すことでした。

どのようにしますか?

数字が必要な場合は、毎日 20,000 人の訪問者がいるサイトの 100 万枚の画像について話しています。少数の人がゲームをプレイする可能性があると思いますが、議論のために、1 日に 2,000 回のヒューマン ソート操作を生成できるとしましょう。これは非営利のウェブサイトで、好奇心旺盛な人は私のプロフィールから見つけることができます :)

4

12 に答える 12

100

他の方もおっしゃっていますが、人によってレベルが違うので、1~10位のランキングではうまくいきません。

Pick A-or-B方式の問題点は、システムが推移的であることが保証されていないことです (A は B に勝つことができますが、B は C に勝ち、C は A に勝ちます)。 非推移的な比較演算子を使用すると、ソート アルゴリズムが壊れます。この例に対してクイックソートを使用すると、ピボットとして選択されなかった文字が互いに誤ってランク付けされます。

いつでも、すべての画像の絶対ランキングが必要です (一部/すべてが同点であっても)。また、誰かが投票しない限りランキングが変わらないようにしたいと考えています。

私はPick A-or-B (または引き分け)方式を使用しますが、2 プレイヤー ゲーム (元はチェス) でのランキングに使用されるElo レーティング システムと同様のランキングを決定します。

Elo プレイヤー レーティング システムは、プレイヤーの試合記録を対戦相手の試合記録と比較し、プレイヤーが対戦に勝つ確率を決定します。この確率係数は、各試合の結果に基づいてプレイヤーのレーティングが何ポイント上昇または下降するかを決定します。プレイヤーがレーティングの高い対戦相手を倒すと、レーティングの低いプレイヤーを倒した場合よりもレーティングが上がります (プレイヤーはレーティングの低い対戦相手を倒す必要があるため)。

エロシステム:

  1. すべての新規プレイヤーは基本レーティング1600から始めます
  2. 勝率 = 1/(10^(( 対戦相手の現在のレーティング – プレイヤーの現在のレーティング)/400) + 1)
  3. ScoringPt = 試合に勝った場合は 1 ポイント、負けた場合は 0 ポイント、引き分けの場合は 0.5 ポイント。
  4. プレーヤーの新しいレーティング = プレーヤーの古いレーティング + (K 値 * (ScoringPt–プレーヤーの勝利確率))

「プレーヤー」を写真に置き換えると、数式に基づいて両方の写真の評価を簡単に調整できます。その後、それらの数値スコアを使用してランキングを実行できます。(ここでの K 値はトーナメントの「レベル」です。小規模なローカル トーナメントでは 8 ~ 16、大規模な招待/地域トーナメントでは 24 ~ 32 です。20 などの定数を使用できます)。

この方法では、画像ごとに 1 つの数値を保持するだけでよく、各画像の個々のランクを他の画像ごとに保持するよりもメモリ使用量が大幅に少なくなります。

編集:コメントに基づいてもう少し肉を追加しました。

于 2008-10-02T23:05:05.187 に答える
40

問題に対するほとんどの単純なアプローチには、いくつかの深刻な問題があります。最悪なのは、 bash.orgqdb.usが引用符を表示する方法です。ユーザーは引用符にプラス (+1) またはマイナス (-1) の投票を行うことができ、最高の引用符のリストは総ネット スコアでソートされます。これは恐ろしい時間の偏りに悩まされています. 古い引用符は、わずかにユーモラスなものであっても、単純な寿命によって膨大な数の肯定的な投票を蓄積しています. このアルゴリズムは、ジョークが年を重ねるにつれて面白くなるのであれば理にかなっているかもしれませんが、信じてください - そうではありません。

これを修正するためのさまざまな試みがあります - 一定期間ごとの賛成票の数を調べたり、最近の票に重みを付けたり、古い票の減衰システムを実装したり、賛成票と反対票の比率を計算したりします。ほとんどは他の欠陥に苦しんでいます。

最善の解決策は、私が思うに、The Funniest The CutestThe FairestBest Thingのウェブサイトで使用されている、修正されたコンドルセ投票システムです。

システムは、直面したことのうち、通常何パーセントを打ち負かすかに基づいて、それぞれに数値を与えます。したがって、それぞれがパーセンテージ スコア NumberOfThingsIBeat / (NumberOfThingsIBeat + NumberOfThingsThatBeatMe) を取得します。また、セットの妥当なパーセンテージと比較されるまで、トップ リストから除外されます。

セット内にコンドルセ勝者が存在する場合、このメソッドはそれを見つけます。その可能性は低いため、統計の性質上、コンドルセの勝者に「最も近い」ものを見つけます。

このようなシステムの実装に関する詳細については、ランク付けされたペアに関するウィキペディアのページが役立つはずです。

このアルゴリズムでは、人々が 2 つのオブジェクトを比較する必要がありますが (A または B の選択)、率直に言って、それは良いことです。人間は抽象的なランキングよりも 2 つのオブジェクトを比較する方がはるかに優れているということは、意思決定理論では広く受け入れられていると思います。何百万年もの進化のおかげで、私たちは木から最高のリンゴを選ぶことは得意ですが、私たちが選んだリンゴが真のプラトン形式のリンゴにどれだけ近いかを判断するのは難しい. (ちなみに、これが分析的階層プロセスが非常に優れている理由です...しかし、それは少し話題から外れています.)

最後の 1 つのポイントは、SOが最良の引用を見つけるためのbash.orgのアルゴリズムと非常によく似たアルゴリズムを使用して最良の回答を見つけることです。ここではうまく機能しますが、そこではひどく失敗します-主に、古くて評価が高いが、現在は時代遅れの回答が編集される可能性が高いためです。bash.org では編集が許可されていません。また、現在のインターネット ミームに関する 10 年前のジョークを編集する方法さえ明確ではありません。問題の詳細によって異なります。:-)

于 2008-10-02T22:46:26.480 に答える
8

Hot-or-Not スタイルは好きではありません。全員がまったく同じ画像を気に入っていたとしても、人によって選ぶ数字は異なります。また、私は物事を 10 点満点で評価するのが嫌いです。

Pick A-or-Bは、はるかにシンプルで楽しいものです。2 つの画像が表示され、サイト上の画像が比較されます。

于 2008-10-02T22:20:04.060 に答える
5

ウィキペディアのこれらの方程式は、Elo レーティングの計算をより簡単かつ効果的にします。画像 A と B のアルゴリズムは単純です。

  • データベースから Ne、mA、mB、評価 RA、RB を取得します。
  • 実行された比較の数 (Ne) と画像が比較された回数 (m) および現在の評価を使用して、KA 、KB、QA、QB を計算します。

K

QA

QB

  • EA と EB を計算します。

EA

EB

  • 勝者の S を採点します: 勝者を 1、敗者を 0、引き分けの場合は 0.5、
  • 以下を使用して、両方の新しい評価を計算します。 新しい評価

  • データベース内の新しい定格 RA、RB およびカウント mA、mB を更新します。

于 2008-12-24T13:42:48.240 に答える
4

ランキング 1 ~ 10 は機能しません。レベルは人それぞれです。常に 3 ~ 7 の評価を付けている人は、常に 1 または 10 を付けている人よりも順位が低くなります。

a-or-b の方が実行可能です。

于 2008-10-02T22:26:04.717 に答える
4

組み合わせて使いたいかも。

第 1 段階: 熱くするかしないかのスタイル (ただし、私は 3 つのオプションの投票を行います: 最悪、まあまあ/OK、かっこいい!)

セットを 3 つのバケットに分類したら、同じバケットから 2 つの画像を選択し、「どちらが優れているか」を選択します。

次に、英語のサッカー システムの昇格と降格を使用して、上位の数名の「サック」を Meh/OK 領域に移動し、エッジ ケースを絞り込むことができます。

于 2008-10-02T22:14:47.553 に答える
3

うわー、私はゲームに遅れています。

私は ELO システムがとても気に入っていますが、Owen が言うように、重要な結果を得るのに時間がかかるように思えます。

人間は 2 つの画像を比較するよりもはるかに優れた能力を持っていると思いますが、相互作用は最小限に抑えたいと考えています。

では、n 個の画像を表示し (n は画面に表示できる任意の数であり、ユーザーの好みによっては 10、20、30 になる場合があります)、そのロットで最適と思われる画像を選択してもらいます。ELOに戻ります。評価システムを変更する必要がありますが、同じ精神を維持してください。実際、1 つの画像を他の n-1 の画像と比較しました。したがって、ELO 評価を n-1 回行いますが、一致するように評価の変化を n-1 で割る必要があります (n の値が異なる結果が互いに首尾一貫しているようにするため)。

あなたは終わった。あなたは今、すべての世界で最高のものを手に入れました。ワンクリックで多くの画像を扱うシンプルな評価システム。

于 2011-03-05T05:26:52.830 に答える
3

A または B を選択する戦略を使用する場合は、このペーパーをお勧めします: http://research.microsoft.com/en-us/um/people/horvitz/crowd_pairwise.pdf

Chen, X.、Bennett, PN、Collins-Thompson, K.、および Horvitz, E. (2013 年 2 月)。クラウドソーシング環境でのペアワイズ ランキング集計。Web 検索とデータ マイニングに関する第 6 回 ACM 国際会議の議事録 (pp. 193-202)。ACM。

この論文は、有名な Bradley-Terry ペアワイズ比較モデルをクラウドソース設定に拡張したCrowd-BTモデルについて述べています。また、モデルの時間効率と空間効率を向上させる適応学習アルゴリズムも提供します。Githubでアルゴリズムの Matlab 実装を見つけることができます(ただし、動作するかどうかはわかりません)。

于 2015-05-17T03:01:03.677 に答える
2

廃止されたWebサイトwhatsbetter.comは、Eloスタイルの方法を使用していました。この方法については、インターネットアーカイブのFAQで読むことができます。

于 2008-12-19T06:36:10.387 に答える
1

私はクイックソートオプションが好きですが、私はいくつかの微調整をしたいと思います:

  • 「比較」結果をDBに保持し、それらを平均します。
  • ユーザーに 4 ~ 6 個の画像を提供し、それらを並べ替えてもらうことで、ビューごとに複数の比較を取得します。
  • qsort を実行し、十分なデータがないものを記録およびトリミングして、表示する画像を選択します。次に、十分なアイテムが記録されたら、ページを吐き出します。

もう 1 つの楽しいオプションは、群衆を使ってニューラル ネットワークを教えることです。

于 2009-05-07T17:04:13.937 に答える
1

A-or-Bを選択するのが最も単純で偏りが少ない方法ですが、人間とやり取りするたびに得られる情報は大幅に少なくなります。偏りが少ないため、Pick の方が優れており、制限内では同じ情報が得られると思います。

非常に単純なスコア方式は、各画像の数を数えることです。誰かが肯定的な比較をするとカウントを増やし、誰かが否定的な比較をするとカウントを減らします。

100 万の整数リストの並べ替えは非常に高速で、最新のコンピューターでは 1 秒もかかりません。

とは言っても、問題はかなり不適切です。各画像を 1 回だけ表示するのに 50 日かかります。

あなたは、最もランクの高い画像にもっと興味があると思いますか? したがって、予測されたランクによって画像検索にバイアスをかけることをお勧めします。そのため、いくつかの肯定的な比較をすでに達成している画像を表示する可能性が高くなります。このようにして、「興味深い」画像をより迅速に表示し始めることができます。

于 2008-10-02T22:27:51.453 に答える