Me gustaría clasificar una colección de imágenes de paisajes creando un juego en el que los visitantes del sitio puedan calificarlas para descubrir qué imágenes encuentran más atractivas las personas.
¿Cuál sería un buen método para hacer eso?
- ¿ Estilo caliente o no ? Es decir, mostrar una sola imagen, pida al usuario que la clasifique del 1 al 10. A mi modo de ver, esto me permite promediar los puntajes, y solo necesitaría asegurarme de obtener una distribución uniforme de los votos en todas las imágenes. Bastante simple de implementar.
- ¿Elige A o B ? Es decir, mostrar dos imágenes, pedirle al usuario que elija la mejor. Esto es atractivo ya que no hay una clasificación numérica, es solo una comparación. Pero, ¿cómo lo implementaría? Mi primer pensamiento fue hacerlo como una clasificación rápida, con las operaciones de comparación proporcionadas por humanos, y una vez completadas, simplemente repetir la clasificación hasta el infinito.
¿Cómo se haría?
Si necesita números, estoy hablando de un millón de imágenes, en un sitio con 20.000 visitas diarias. Me imagino que una pequeña proporción podría jugar el juego, por el bien de la discusión, ¡digamos que puedo generar 2,000 operaciones de tipo humano al día! Es un sitio web sin fines de lucro, y los curiosos terminales lo encontrarán a través de mi perfil :)
algorithm
sorting
crowdsourcing
Paul Dixon
fuente
fuente
Respuestas:
Como han dicho otros, la clasificación del 1 al 10 no funciona tan bien porque las personas tienen diferentes niveles.
El problema con el método Pick A-or-B es que no se garantiza que el sistema sea transitivo (A puede vencer a B, pero B vence a C y C vence a A). Tener operadores de comparación no transitivos rompe los algoritmos de clasificación . Con quicksort, en este ejemplo, las letras no elegidas como pivote se clasificarán incorrectamente entre sí.
En cualquier momento, desea una clasificación absoluta de todas las imágenes (incluso si algunas o todas están empatadas). También desea que su clasificación no cambie a menos que alguien vote .
Me gustaría utilizar el Pick a-o-B (o lazo) método, pero determinar la clasificación similar al sistema de clasificación Elo que se utiliza para las graduaciones en 2 juegos jugador de ajedrez (originalmente):
El sistema Elo:
Reemplace "jugadores" con imágenes y tendrá una forma sencilla de ajustar la calificación de ambas imágenes en función de una fórmula. A continuación, puede realizar una clasificación utilizando esos puntajes numéricos. (El valor K aquí es el "Nivel" del torneo. Es 8-16 para torneos locales pequeños y 24-32 para invitaciones / regionales más grandes. Puedes usar una constante como 20).
Con este método, solo necesita mantener un número para cada imagen, lo que requiere mucha menos memoria que mantener los rangos individuales de cada imagen entre sí.
EDITAR: Se agregó un poco más de carne según los comentarios.
fuente
La mayoría de los enfoques ingenuos del problema tienen serios problemas. Lo peor es cómo bash.org y qdb.us muestran las citas: los usuarios pueden votar una cita hacia arriba (+1) o hacia abajo (-1), y la lista de las mejores citas está ordenada por la puntuación neta total. Esto sufre un horrible sesgo de tiempo: las citas más antiguas han acumulado una gran cantidad de votos positivos a través de una simple longevidad, incluso si son solo marginalmente humorísticas. Este algoritmo podría tener sentido si los chistes se volvieran más divertidos a medida que envejecían, pero créeme, no es así.
Hay varios intentos de solucionar este problema: observar el número de votos positivos por período de tiempo, ponderar los votos más recientes, implementar un sistema de decadencia para los votos más antiguos, calcular la proporción de votos positivos y negativos, etc. La mayoría adolece de otros defectos.
La mejor solución, creo, es la que utilizan los sitios web The Funniest The Cutest , The Fairest y Best Thing : un sistema de votación Condorcet modificado :
Para obtener más información sobre la implementación de dichos sistemas, la página de Wikipedia sobre Pares clasificados debería ser útil.
El algoritmo requiere que las personas comparen dos objetos (su opción Pick-A-or-B), pero francamente, eso es algo bueno. Creo que está muy bien aceptado en la teoría de la decisión que los seres humanos son mucho mejores comparando dos objetos que en la clasificación abstracta. Millones de años de evolución nos hacen buenos para elegir la mejor manzana del árbol, pero terribles para decidir qué tan cerca se acerca la manzana que elegimos a la verdadera forma platónica de manzana. (Por cierto, esta es la razón por la que el Proceso de Jerarquía Analítica es tan ingenioso ... pero eso se está saliendo un poco del tema).
Un último punto a destacar es que SO usa un algoritmo para encontrar las mejores respuestas que es muy similar al algoritmo de bash.org para encontrar la mejor cita. Funciona bien aquí, pero falla terriblemente allí, en gran parte porque es probable que se edite una respuesta antigua, altamente calificada, pero ahora desactualizada. bash.org no permite la edición, y no está claro cómo editaría chistes de hace una década sobre memes de Internet con fecha actual, incluso si pudiera ... En cualquier caso, mi punto es que el algoritmo correcto generalmente depende de los detalles de su problema. :-)
fuente
Sé que esta pregunta es bastante antigua, pero pensé en contribuir
Miraría el sistema TrueSkill desarrollado en Microsoft Research. Es como ELO, pero tiene un tiempo de convergencia mucho más rápido (parece exponencial en comparación con lineal), por lo que obtiene más de cada voto. Sin embargo, es matemáticamente más complejo.
http://en.wikipedia.org/wiki/TrueSkill
fuente
No me gusta el estilo Hot-or-Not . Diferentes personas elegirían números diferentes incluso si a todos les gustaba la imagen exactamente igual. También odio calificar cosas sobre 10, nunca sé qué número elegir.
Elegir A o B es mucho más simple y divertido. Puedes ver dos imágenes y se hacen comparaciones entre las imágenes del sitio.
fuente
Estas ecuaciones de Wikipedia hacen que sea más simple / más efectivo calcular las calificaciones Elo, el algoritmo para las imágenes A y B sería simple:
Calcule las nuevas calificaciones para ambos usando:
Actualice las nuevas clasificaciones RA, RB y recuentos mA, mB en la base de datos.
fuente
Es posible que desee ir con una combinación.
Primera fase: estilo Hot-or-not (aunque yo optaría por un voto de 3 opciones: Sucks, Meh / OK. Cool!)
Una vez que haya ordenado el conjunto en los 3 grupos, entonces seleccionaría dos imágenes del mismo grupo e iría con "Cuál es mejor"
Luego, podría usar un sistema de promoción y degradación de English Soccer para mover los primeros "Sucks" a la región Meh / OK, con el fin de refinar los casos extremos.
fuente
La clasificación 1-10 no funcionará, todos tienen diferentes niveles. Alguien que siempre da entre 3 y 7 calificaciones, vería eclipsado su clasificación por personas que siempre dan 1 o 10.
a-o-b es más viable.
fuente
Vaya, llego tarde en el juego.
Me gusta mucho el sistema ELO, pero como dice Owen, me parece que sería lento para obtener resultados significativos.
Creo que los humanos tienen una capacidad mucho mayor que simplemente comparar dos imágenes, pero debes mantener las interacciones al mínimo.
Entonces, ¿qué tal si muestra n imágenes (siendo n cualquier número que pueda mostrar visiblemente en una pantalla, esto puede ser 10, 20, 30, según la preferencia del usuario, tal vez) y hacer que elijan cuál creen que es mejor en ese lote? Ahora volvamos a ELO. Necesita modificar su sistema de clasificación, pero mantenga el mismo espíritu. De hecho, ha comparado una imagen con otras n-1. Por lo tanto, realiza su calificación ELO n-1 veces, pero debe dividir el cambio de calificación entre n-1 para que coincida (de modo que los resultados con diferentes valores de n sean coherentes entre sí).
Ya terminaste. Ahora tienes lo mejor de todos los mundos. Un sistema de clasificación simple que funciona con muchas imágenes con un solo clic.
fuente
Si prefiere utilizar la estrategia Pick A o B, recomendaría este documento: http://research.microsoft.com/en-us/um/people/horvitz/crowd_pairwise.pdf
El artículo habla sobre el modelo Crowd-BT que extiende el famoso modelo de comparación por pares de Bradley-Terry al entorno de crowdsource. También proporciona un algoritmo de aprendizaje adaptativo para mejorar la eficiencia temporal y espacial del modelo. Puede encontrar una implementación de Matlab del algoritmo en Github (pero no estoy seguro de si funciona).
fuente
El difunto sitio web whatsbetter.com utilizó un método de estilo Elo . Puede leer sobre el método en sus preguntas frecuentes en Internet Archive .
fuente
Elija A-o-B, es el más simple y menos propenso a sesgos, sin embargo, en cada interacción humana, le brinda sustancialmente menos información. Creo que debido a la reducción del sesgo, Pick es superior y en el límite te proporciona la misma información.
Un esquema de puntuación muy simple consiste en contar cada imagen. Cuando alguien da una comparación positiva, aumenta el recuento, cuando alguien da una comparación negativa, disminuye el recuento.
Ordenar una lista de 1 millón de enteros es muy rápido y tomará menos de un segundo en una computadora moderna.
Dicho esto, el problema está bastante mal planteado: le llevará 50 días mostrar cada imagen solo una vez.
Apuesto a que estás más interesado en las imágenes mejor clasificadas. Por lo tanto, probablemente desee sesgar la recuperación de imágenes según el rango predicho, por lo que es más probable que muestre imágenes que ya han logrado algunas comparaciones positivas. De esta manera, comenzará a mostrar imágenes "interesantes" más rápidamente.
fuente
Me gusta la opción de clasificación rápida, pero haría algunos ajustes:
La otra opción divertida sería utilizar a la multitud para enseñar una red neuronal.
fuente