クラウドソーシングによる並べ替えで100万枚の画像をランク付けする方法


83

風景画像のコレクションをランク付けするために、サイトの訪問者がそれらを評価できるゲームを作成して、人々が最も魅力的だと思う画像を見つけたいと思います。

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

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

どうしますか?

数字が必要な場合は、1日2万回の訪問があるサイトで100万枚の画像について話します。議論のために、わずかな割合でゲームをプレイする可能性があると思います。たとえば、1日に2,000回の人間による並べ替え操作を生成できるとしましょう。それは非営利のウェブサイトであり、最終的に好奇心が強い人は私のプロフィールを通してそれを見つけるでしょう:)


1
私は、次のようなことを行うGAEを使用するおもちゃのアプリケーションを作成しました:rank.appspot.com。独自に開発したものの、ELOの変種に変質していると思われるアイテムごとに勢いの概念を使用しています。Pythonのsrcを共有していただければ幸いです。
フリースペース

@freespaceあなたのアルゴリズムのPythonソースを見てみたいと思います。
akaihola 2009年

たぶん、このプロジェクトでは、ニューラルネットワークをセットアップして(もちろん、楽しみのために)、PickA-or-B入力を使用してネットワークをトレーニングする必要があります。たぶん、あなたはたくさんのトレーニングの後、ニューラルネットワークが最も美しいものを選ぶことができるでしょう。
Martijn Courteaux 2011年

回答:


96

他の人が言っているように、ランク1-10は、レベルが異なるため、あまりうまく機能しません。

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

いつでも、すべての写真の絶対ランキングが必要です(一部/すべてが同点の場合でも)。また、誰かが投票しない限り、ランキングが変更されないようにする必要があります。

私は使用します ピックA-OR-B(またはタイ)メソッドを、それだけには同様の順位決定のElo評価システム2つのプレイヤーゲーム(チェス元々 )にランキングのために使用されます。

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

Eloシステム:

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

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

この方法では、画像ごとに1つの番号を保持するだけで済みます。これは、各画像の個々のランクを他の画像に保持するよりもはるかにメモリを消費しません。

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


3
推移性はまったく問題ではありません。あなたはただ人々の意見を集めたいだけであり、あなたは彼らがランキングについて意見を異にすることを期待するでしょう。人々はノイズの多いデータソースであり、一貫性がありません。
オーウェン

4
私のポイントは、A> B> C> Aの場合、単に ">"を比較として使用することは問題です。なぜなら、ソートは(正しく)終了せず、リストは次の場合でも一定の流動状態になるからです。それ以上の人は投票していません。私の答えは、この問題の解決策を提供します。
Laplie Anderson

1
クイックソートを使用するという私の提案から骨を選び出し、Eloの素敵なイラストが含まれているので、これを受け入れられた答えとしてマークします。
ポールディクソン

6
eloシステムは間違いなくA / Bメソッドをランク​​付けするための方法です。ただし、上記のインクリメンタル方式よりも優れた方式を使用することをお勧めします。Bayeseloをご覧ください: remi.coulom.free.fr/Bayesian-Elo
Fantius

1時間のグーグルの後、Eloレーティングシステムを明確に理解しました:)
daksh21ubuntu 2013年

40

この問題に対するほとんどの素朴なアプローチには、いくつかの深刻な問題があります。最悪なのはbash.orgqdb.usの方法です。表示するユーザーは見積もりを上(+1)または下(-1)に投票でき、最良の見積もりの​​リストは合計ネットスコアで並べ替えられます。これは恐ろしい時間バイアスに悩まされています-古い引用は、たとえわずかにユーモラスであったとしても、単純な長寿によって膨大な数の肯定的な投票を蓄積してきました。このアルゴリズムは、ジョークが年をとるにつれて面白くなった場合に意味があるかもしれませんが、私を信じてください。そうではありません。

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

最善の解決策は-私が思うに-ウェブサイトTheFunniest The CutestThe Fairest、およびBest Thingが使用するものです-修正されたコンドルセ投票システム

システムは、直面したものの中から、通常何パーセントを打つかに基づいて、それぞれに番号を付けます。したがって、それぞれがパーセンテージスコアNumberOfThingsIBeat /(NumberOfThingsIBeat + NumberOfThingsThatBeatMe)を取得します。また、セットの妥当なパーセンテージと比較されるまで、物事はトップリストから除外されます。

セットにコンドルセ勝者がいる場合、このメソッドはそれを見つけます。統計的な性質を考えると、それはありそうもないので、コンドルセの勝者であることに「最も近い」ものを見つけます。

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

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

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


コンドルセ投票システムを参照していただきありがとうございます。その問い合わせの行から、この便利なウィキペディアのページen.wikipedia.org/wiki/Ranked_Pairs
Paul Dixon

これらのサイトは「壊れた」と言って、それ以来放棄されました。アルゴリズムにバグがあるのか​​、それとも実装だけなのかはわかりません。
endolith 2014

11

私はこの質問がかなり古いことを知っていますが、私は貢献したいと思いました

MicrosoftResearchで開発されたTrueSkillシステムを見てみます。これはELOに似ていますが、収束時間がはるかに速いため(線形と比較して指数関数的に見えます)、各投票からより多くを得ることができます。ただし、数学的にはもっと複雑です。

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


TrueSkillの概念は、「一致」に基づいて物事をランク付けするための多くの可能性を提供します。同様の概念は、関連する広告を配信するためにBingによって使用されます。TrueSkillの詳細については、moserware.com / 2010/03 / Computing
Jeff Moser

8

Hot-or-Notスタイルが好きではありません。たとえ彼ら全員がまったく同じ画像を気に入ったとしても、異なる人々は異なる番号を選ぶでしょう。また、私は10点満点で評価するのが嫌いで、どの番号を選ぶべきかわかりません。

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


5

ウィキペディアのこれらの方程式は、イロレーティングの計算をより簡単/より効果的にします。画像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をカウントします。


4

あなたは組み合わせで行きたいかもしれません。

最初のフェーズ:ホットオアノットスタイル(3つのオプション投票で行きますが:Sucks、Meh /OK。Cool!)

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

次に、昇格と降格の英国サッカーシステムを使用して、上位のいくつかの「サック」をMeh / OKリージョンに移動し、エッジケースを改善することができます。


4

ランキング1-10は機能しません、誰もが異なるレベルを持っています。常に3〜7の評価を与える人は、常に1または10を与える人々によって彼のランキングを上回っています。

a-or-bの方が実用的です。


感謝しますが、各画像の投票数が同じになるようにすれば、平均化されるはずだと思いました。問題は、各画像に約10票が必要だと思います。これは、上記の数値に基づくと13年かかります。その時までに私はさらに500万枚の画像を持っているでしょう:)
Paul Dixon

1
人々は平均または高/低のどちらかで行く傾向があるので、そうすることにした場合は、1-10ではなく1-5に減らすことをお勧めします。
ビルK

3

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

私はELOシステムがとても好きですが、オーウェンが言うように、あなたは重要な結果を構築するのが遅いように思えます。

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

では、n個の画像を表示して(nは画面に表示できる任意の数であり、ユーザーの好みに応じて10、20、30になる可能性があります)、そのロットで最適と思われる画像を選択してもらいます。ELOに戻ります。評価システムを変更する必要がありますが、同じ精神を保ちます。実際、1つの画像を他のn-1個の画像と比較しました。したがって、ELOレーティングをn-1回実行しますが、一致するようにレーティングの変更をn-1で除算する必要があります(nの値が異なる結果が互いにコヒーレントになるようにするため)。

完了です。これで、すべての世界で最高のものを手に入れることができます。ワンクリックで多くの画像を処理するシンプルな評価システム。


3

Pick 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モデルについて説明しています。また、モデルの時間と空間の効率を高めるためのアダプティブラーニングアルゴリズムも提供します。アルゴリズムのMatlab実装はGithubにあります(ただし、機能するかどうかはわかりません)。



1

A-または-Bを選択してくださいと、最も単純で偏見が少なくなりますが、人間との対話ごとに、提供される情報は大幅に少なくなります。バイアスが減少しているため、Pickの方が優れており、限界では同じ情報が得られると思います。

非常に単純なスコアリングスキームは、各画像のカウントを持つことです。誰かが正の比較を行うとカウントが増加し、誰かが負の比較を行うとカウントが減少します。

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

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

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


ページビューで最初のランキングを見ることができます。これも役立つかもしれません。
ポールディクソン

それは「見る」ではなく「種」と言うべきです!
ポールディクソン

それは「4つから最良のものを選ぶ」可能性があり、その後、投票ごとに3つのペアワイズランキングとしてカウントされます
endolith 2014

1

私はクイックソートオプションが好きですが、数週間は作ります:

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

他の楽しいオプションは、群衆を使用してニューラルネットを教えることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.