2008-10-02 5 views
78

Tôi muốn xếp hạng bộ sưu tập hình ảnh phong cảnh bằng cách thực hiện trò chơi theo đó khách truy cập trang web có thể xếp hạng chúng để tìm ra hình ảnh mọi người thấy hấp dẫn nhất.Làm cách nào để xếp hạng một triệu hình ảnh với một loại đám đông

Điều gì sẽ là một phương pháp tốt để làm điều đó?

  • Kiểu nóng hoặc không? I E. hiển thị một hình ảnh, yêu cầu người dùng xếp hạng hình ảnh đó từ 1-10. Như tôi thấy, điều này cho phép tôi tính điểm trung bình, và tôi chỉ cần đảm bảo rằng tôi nhận được sự phân phối phiếu bầu đồng đều trên tất cả các hình ảnh. Khá đơn giản để thực hiện.
  • Chọn A-hoặc-B? I E. hiển thị hai hình ảnh, yêu cầu người dùng chọn hình ảnh tốt hơn. Điều này hấp dẫn vì không có thứ hạng số, nó chỉ là một so sánh. Nhưng làm thế nào tôi sẽ thực hiện nó? Suy nghĩ đầu tiên của tôi là để làm điều đó như một quicksort, với các hoạt động so sánh được cung cấp bởi con người, và một khi hoàn thành, chỉ cần lặp lại các loại quảng cáo-vô hạn.

Làm cách nào để bạn làm điều đó?

Nếu bạn cần số, tôi đang nói về một triệu hình ảnh, trên trang web có 20.000 lượt truy cập hàng ngày. Tôi tưởng tượng một tỷ lệ nhỏ có thể chơi trò chơi, vì lợi ích của lập luận, cho phép nói rằng tôi có thể tạo ra 2.000 hoạt động sắp xếp của con người một ngày! Đó là một trang web phi lợi nhuận và những người tò mò về kỳ hạn sẽ tìm thấy nó thông qua tiểu sử của tôi :)

+1

Tôi đã viết một ứng dụng đồ chơi sử dụng GAE làm một việc như thế này: http://rank.appspot.com/. Nó sử dụng khái niệm động lượng cho mỗi mục mà tôi nghi ngờ biến thành một biến thể của ELO, mặc dù tôi đã phát triển nó một cách độc lập. Sẽ được hạnh phúc để chia sẻ src python. – freespace

+0

@freespace Tôi muốn được quan tâm để xem nguồn Python cho thuật toán của bạn. – akaihola

+0

Có thể, với dự án này, bạn nên cố gắng thiết lập mạng thần kinh (chỉ để giải trí, tất nhiên) và sử dụng đầu vào ** Chọn A-hoặc-B ** để đào tạo mạng. Có lẽ bạn mạng lưới thần kinh sẽ có thể chọn một mạng lưới đẹp nhất, sau rất nhiều khóa đào tạo. –

Trả lời

90

Như những người khác đã nói, xếp hạng 1-10 không hoạt động tốt bởi vì mọi người có các cấp độ khác nhau.

Sự cố với phương pháp Chọn phương thức A-or-B là không đảm bảo cho hệ thống chuyển tiếp (A có thể thắng B, nhưng B đánh bại C và C đánh bại A). Có các toán tử so sánh không phân phối phá vỡ các thuật toán sắp xếp. Với quicksort, so với ví dụ này, các chữ cái không được chọn làm trục sẽ được xếp hạng không chính xác với nhau.

Tại bất kỳ thời điểm nào, bạn muốn xếp hạng tuyệt đối tất cả các hình ảnh (ngay cả khi một số/tất cả hình ảnh được gắn). Bạn cũng muốn xếp hạng của mình không thay đổi trừ khi ai đó bỏ phiếu.

tôi sẽ sử dụng Pick A-hoặc-B (hoặc cà vạt) phương pháp, nhưng xác định thứ hạng tương tự như Elo ratings system được sử dụng để xếp hạng trong 2 trò chơi máy nghe nhạc (ban cờ vua):

Các Hệ thống đánh giá của người chơi Elo so sánh hồ sơ đối sánh của người chơi với hồ sơ đối sánh của đối thủ và xác định xác suất của cầu thủ thắng trận đấu. Yếu tố xác suất này xác định số lượng điểm xếp hạng của người chơi tăng lên hoặc dựa trên kết quả của mỗi trận đấu . Khi người chơi đánh bại đối thủ với xếp hạng cao hơn, xếp hạng của người chơi càng cao hơn nếu số người đó đánh bại người chơi có xếp hạng thấp hơn (vì người chơi phải đánh bại đối thủ có xếp hạng thấp hơn ).

Hệ thống Elo:

  1. Tất cả người chơi mới bắt đầu với một đánh giá cơ sở của
  2. WinProbability = 1/(10^((Đối thủ của Current Rating-cầu thủ Đánh giá hiện tại)/400) + 1)
  3. Ghi điểmPt = 1 điểm nếu họ thắng trận đấu, 0 nếu họ thua và 0,5 cho trận hòa.
  4. cầu thủ Đánh giá mới = cầu thủ Cũ Đánh giá + (K-Value * (ScoringPt-cầu thủ Win Xác suất))

Thay thế "chơi" với hình ảnh và bạn có một cách đơn giản để điều chỉnh giá cả hình ảnh dựa trên một công thức. Sau đó, bạn có thể thực hiện xếp hạng bằng cách sử dụng các điểm số đó. (K-Giá trị ở đây là "Cấp độ" của giải đấu. Đó là 8-16 cho các giải đấu địa phương nhỏ và 24-32 cho các giải đấu/khu vực rộng lớn hơn. Bạn chỉ có thể sử dụng một hằng số như 20).

Với phương pháp này, bạn chỉ cần giữ một số cho mỗi bức ảnh có dung lượng bộ nhớ ít hơn nhiều so với việc giữ các cấp bậc riêng lẻ của từng ảnh với nhau.

EDIT: Đã thêm một ít thịt hơn dựa trên nhận xét.

+2

Sự chuyển đổi không quan trọng chút nào. Bạn chỉ muốn tổng hợp ý kiến ​​của mọi người và bạn sẽ mong đợi họ không đồng ý về xếp hạng. Mọi người là nguồn dữ liệu ồn ào và không nhất quán. – Owen

+0

Cảm ơn bạn đã giải thích rõ ràng về hệ thống Elo. –

+3

quan điểm của tôi là nếu bạn có A> B> C> A, thì chỉ cần sử dụng ">" làm so sánh là một vấn đề vì sắp xếp của bạn sẽ không bao giờ kết thúc (chính xác) và danh sách của bạn sẽ ở trạng thái không đổi nếu không có người nào khác bỏ phiếu. Câu trả lời của tôi cung cấp một giải pháp cho vấn đề này. –

4

Bạn có thể muốn kết hợp.

giai đoạn đầu tiên: Hot-hay-không phong cách (mặc dù tôi sẽ đi với 3 tùy chọn bỏ phiếu:.! Sucks, Meh/OK mát)

Khi bạn đã sắp xếp tập vào 3 thùng, sau đó tôi sẽ chọn hai hình ảnh từ cùng một nhóm và đi với "Hình ảnh đẹp hơn"

Sau đó, bạn có thể sử dụng hệ thống quảng cáo và giảm hạng của Bóng đá tiếng Anh để di chuyển "Sucks" hàng đầu vào vùng Meh/OK, để tinh chỉnh các trường hợp cạnh.

8

Tôi không thích kiểu dáng Nóng hoặc không. Những người khác nhau sẽ chọn những con số khác nhau ngay cả khi tất cả họ đều thích hình ảnh giống hệt nhau. Ngoài ra tôi ghét những thứ xếp hạng trong số 10, tôi không bao giờ biết số nào để chọn.

Chọn A-or-B đơn giản hơn và thú vị hơn nhiều. Bạn có thể thấy hai hình ảnh và so sánh được thực hiện giữa các hình ảnh trên trang web.

4

Xếp hạng 1-10 sẽ không hoạt động, mọi người đều có các cấp độ khác nhau. Người nào đó luôn đưa ra xếp hạng 3-7 sẽ có thứ hạng của anh bị lu mờ bởi những người luôn đưa ra 1 hoặc 10.

a-hoặc-b dễ hiểu hơn.

+0

Tôi đánh giá cao điều đó, nhưng tôi đã xác định xem tôi có đảm bảo mỗi hình ảnh có được số phiếu bình đẳng hay không, nó phải trung bình. Rắc rối là, tôi nghĩ rằng tôi cần khoảng 10 phiếu bầu cho mỗi hình ảnh, mà dựa trên những con số trên sẽ đưa tôi 13 năm. Bởi vì thời gian mà tôi muốn có 5 triệu hình ảnh khác :) –

+1

Vì mọi người có xu hướng đi với mức trung bình hoặc cao/thấp, nếu bạn quyết định làm điều đó, tôi đề nghị bạn giảm xuống còn 1-5 thay vì 1-10. –

1

Chọn A-or-B đơn giản nhất và ít bị thiên vị, tuy nhiên ở mỗi tương tác của con người, nó cung cấp cho bạn thông tin ít hơn đáng kể. Tôi nghĩ vì sự giảm thiểu thiên vị, Pick là cấp trên và trong giới hạn nó cung cấp cho bạn những thông tin tương tự.

Một lược đồ tính điểm rất đơn giản là có số lượng cho mỗi ảnh.Khi ai đó đưa ra một sự so sánh tích cực tăng số lượng, khi ai đó đưa ra một so sánh tiêu cực, giảm số lượng.

Sắp xếp danh sách 1 triệu số nguyên rất nhanh và sẽ mất ít hơn một giây trên máy tính hiện đại.

Điều đó nói rằng, vấn đề là khá giả mạo - Sẽ mất 50 ngày để hiển thị từng hình ảnh một lần.

Tôi đặt cược mặc dù bạn quan tâm hơn đến những hình ảnh được xếp hạng cao nhất? Vì vậy, có thể bạn muốn thiên vị truy xuất hình ảnh của mình theo xếp hạng được dự đoán - vì vậy, bạn có nhiều khả năng hiển thị hình ảnh đã đạt được một số so sánh tích cực. Bằng cách này bạn sẽ nhanh chóng hơn chỉ bắt đầu hiển thị hình ảnh 'thú vị'.

+0

Tôi có thể thấy thứ hạng ban đầu với lượt xem trang, điều này cũng có thể hữu ích. –

+0

nên nói "hạt giống", không phải "nhìn thấy"! –

+0

nó có thể là "chọn tốt nhất trong số 4" và sau đó nó được tính là 3 thứ hạng theo cặp cho mỗi phiếu bầu – endolith

39

Cách tiếp cận ngây thơ nhất đối với sự cố có một số vấn đề nghiêm trọng. Điều tồi tệ nhất là cách bash.orgqdb.us hiển thị dấu ngoặc kép - người dùng có thể bỏ phiếu báo giá lên (+1) hoặc xuống (-1) và danh sách trích dẫn tốt nhất được sắp xếp theo tổng số điểm ròng. Điều này bị thiên vị thời gian khủng khiếp - những trích dẫn cũ hơn đã tích lũy rất nhiều phiếu bầu tích cực qua tuổi thọ đơn giản ngay cả khi chúng chỉ hơi hài hước. Thuật toán này có thể có ý nghĩa nếu những câu chuyện cười trở nên thú vị hơn khi chúng lớn hơn nhưng - tin tôi đi - chúng không có.

Có nhiều nỗ lực khác nhau để khắc phục điều này - xem xét số phiếu bầu tích cực trong một khoảng thời gian, tăng thêm số phiếu bầu gần đây, thực hiện hệ thống phân rã cho phiếu bầu cũ, tính tỷ lệ tích cực so với số phiếu phủ định, v.v. các sai sót khác.

Giải pháp tốt nhất - Tôi nghĩ - là một trong rằng các trang web The FunniestThe Cutest, The Fairest, và Best Thing sử dụng - một modified Condorcet voting system:

Hệ thống này cung cấp cho mỗi người một số dựa trên, trong số những điều mà nó đã phải đối mặt, những gì tỷ lệ phần trăm trong số họ thường đánh bại. Vì vậy, mỗi người nhận được điểm số phần trăm NumberOfThingsIBeat/(NumberOfThingsIBeat + NumberOfThingsThatBeatMe). Ngoài ra, mọi thứ bị cấm từ danh sách hàng đầu cho đến khi chúng được so sánh với tỷ lệ phần trăm hợp lý của tập hợp.

Nếu có một người chiến thắng Condorcet trong tập hợp, phương pháp này sẽ tìm thấy nó. Vì đó là điều không chắc chắn, do tính chất thống kê, nó tìm thấy một trong những "gần nhất" để trở thành một người chiến thắng Condorcet.

Để biết thêm thông tin về việc triển khai hệ thống như vậy, trang Wikipedia trên Ranked Pairs sẽ hữu ích.

Thuật toán yêu cầu mọi người so sánh hai đối tượng (tùy chọn Pick-A hoặc B) của bạn, nhưng thẳng thắn, đó là một điều tốt. Tôi tin rằng nó được chấp nhận rất tốt trong lý thuyết quyết định rằng con người rất giỏi so sánh hai đối tượng hơn là ở cấp độ trừu tượng. Hàng triệu năm tiến hóa làm cho chúng ta giỏi nhặt quả táo tốt nhất ra khỏi cây, nhưng khủng khiếp khi quyết định xem quả táo của chúng ta đã được chọn như thế nào với hình thức vui vẻ của Platonic. (Đây là, bằng cách này, tại sao các Analytic Hierarchy Process là rất tiện lợi ... nhưng đó là nhận được một chút tắt chủ đề.)

Một điểm cuối cùng để làm là SO sử dụng một thuật toán để tìm câu trả lời tốt nhất là rất giống nhau để bash.org 's thuật toán để tìm báo giá tốt nhất. Nó hoạt động tốt ở đây, nhưng thất bại khủng khiếp ở đó - phần lớn bởi vì câu trả lời cũ, được đánh giá cao, nhưng bây giờ đã lỗi thời ở đây có khả năng được chỉnh sửa. bash.org không cho phép chỉnh sửa, và nó không rõ ràng làm thế nào bạn thậm chí còn đi về chỉnh sửa những câu chuyện cười cũ về các memes internet ngày nay ngay cả khi bạn có thể ... Trong mọi trường hợp, quan điểm của tôi là thuật toán đúng thường phụ thuộc vào các chi tiết của vấn đề của bạn.:-)

+0

Cảm ơn bạn đã tham chiếu đến hệ thống bỏ phiếu Condorcet, dòng yêu cầu đó cho tôi biết trang wikipedia hữu ích này http: //en.wikipedia .org/wiki/Ranked_Pairs –

+0

Các trang web này cho biết họ đã "bị hỏng" và kể từ đó bị từ bỏ. Tôi không biết liệu thuật toán có bị lỗi hay chỉ thực hiện. – endolith

5

Những phương trình từ Wikipedia làm cho nó đơn giản hơn/hiệu quả hơn để tính toán xếp hạng Elo, thuật toán cho hình ảnh A và B sẽ là đơn giản:

  • Nhận Né, mA, MB và xếp hạng RA, RB từ cơ sở dữ liệu của bạn .
  • Tính KA, KB, QA, QB bằng cách sử dụng số lượng so sánh thực hiện (Ne) và số lần hình ảnh đó được so sánh (m) và xếp hạng hiện tại:

K

QA

QB

  • Tính EA và EB.

EA

EB

  • Điểm S của người chiến thắng: người chiến thắng là 1, thua là 0, và nếu bạn có một trận hòa là 0,5,
  • Tính xếp hạng mới cho cả hai sử dụng: New Rating

  • Cập nhật xếp hạng mới RA, RB và đếm mA, mB trong cơ sở dữ liệu.

1

Tôi thích lựa chọn nhanh chóng loại nhưng tôi muốn thực hiện một vài tweeks:

  • Giữ "so sánh" kết quả trong một DB và sau đó trung bình họ.
  • Nhận nhiều hơn một lần so sánh cho mỗi lượt xem bằng cách cung cấp cho người dùng 4-6 hình ảnh và sắp xếp chúng.
  • Chọn hình ảnh nào để hiển thị bằng cách chạy qsort và ghi và cắt bất kỳ thứ gì mà bạn không có đủ dữ liệu. Sau đó, khi bạn có đủ các mục ghi lại, hãy nhổ ra một trang.

Tùy chọn thú vị khác là sử dụng đám đông để dạy mạng neural-net.

11

Tôi biết câu hỏi này là khá cũ nhưng tôi nghĩ rằng tôi muốn đóng góp

Tôi muốn nhìn vào hệ thống TrueSkill phát triển tại Microsoft Research. Nó giống như ELO nhưng có thời gian hội tụ nhanh hơn nhiều (trông theo cấp số nhân so với tuyến tính), vì vậy bạn nhận được nhiều hơn từ mỗi phiếu bầu. Đó là, tuy nhiên, phức tạp hơn toán học.

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

+0

Các khái niệm về TrueSkill cung cấp rất nhiều khả năng để xếp hạng những thứ dựa trên "trận đấu". Các khái niệm tương tự được Bing sử dụng để phân phát quảng cáo có liên quan. Tôi đã viết rất nhiều về các chi tiết của TrueSkill tại http://www.moserware.com/2010/03/computing-your-skill.html –

+0

TrueSkill cũng có một thư viện Python tuyệt vời - http://trueskill.org/ –

3

Chà, tôi đến trễ trong trò chơi.

Tôi thích hệ thống ELO rất nhiều, nhưng như Owen nói rằng có vẻ như với tôi rằng bạn sẽ chậm xây dựng bất kỳ kết quả đáng kể nào.

Tôi tin rằng con người có khả năng lớn hơn nhiều so với chỉ so sánh hai hình ảnh, nhưng bạn muốn giữ tương tác ở mức tối thiểu. Vì vậy, làm thế nào về bạn hiển thị n hình ảnh (n là bất kỳ số nào bạn có thể hiển thị rõ ràng trên màn hình, điều này có thể là 10, 20, 30 tùy thuộc vào sở thích của người dùng) và khiến họ chọn những gì họ nghĩ là tốt nhất trong đó nhiều. Bây giờ trở lại ELO. Bạn cần phải sửa đổi hệ thống xếp hạng của bạn, nhưng giữ tinh thần tương tự. Bạn có trong thực tế, so sánh một hình ảnh để n-1 người khác. Vì vậy, bạn làm xếp hạng ELO của bạn n-1 lần, nhưng bạn nên chia thay đổi xếp hạng theo n-1 cho phù hợp (để kết quả với các giá trị khác nhau của n được kết hợp với nhau).

Bạn đã hoàn tất. Bây giờ bạn đã có tất cả các thế giới tốt nhất. Một hệ thống xếp hạng đơn giản làm việc với nhiều hình ảnh trong một cú nhấp chuột.

3

Nếu bạn thích sử dụng Pick A hoặc chiến lược B Tôi muốn giới thiệu bài viết này: http://research.microsoft.com/en-us/um/people/horvitz/crowd_pairwise.pdf

Chen, X., Bennett, PN, Collins-Thompson, K., & Horvitz, E. (2013 , tháng 2). Tập hợp xếp hạng theo cặp trong một cài đặt cộng đồng. Trong Kỷ yếu của hội nghị quốc tế ACM lần thứ sáu về tìm kiếm trên web và khai thác dữ liệu (trang 193-202). ACM.

Bài báo giới thiệu về mô hình Đám đông-BT mở rộng mô hình so sánh cặp đôi Bradley-Terry nổi tiếng thành cài đặt cộng đồng. Nó cũng đưa ra một thuật toán học thích ứng để nâng cao hiệu quả thời gian và không gian của mô hình. Bạn có thể tìm thấy một thực hiện Matlab của thuật toán trên Github (nhưng tôi không chắc chắn nếu nó hoạt động).