Pregunta

Estoy pensando en escribir una aplicación para clasificar películas en un HTPC según lo que les gusta a los miembros de la familia.

No conozco las estadísticas ni la inteligencia artificial, pero aquí aquí es muy jugoso. No sabría por dónde empezar.

Esto es lo que quiero lograr:

  1. Componga un conjunto de muestras de los gustos de cada usuario, calificando cada atributo de muestra por separado. Por ejemplo, tal vez a un usuario le gusten mucho las películas occidentales, por lo que el género occidental tendría un poco más de peso para ese usuario (y así sucesivamente para otros atributos, como actores, directores, etc.).

  2. Un usuario puede obtener sugerencias basadas en los gustos de los demás usuarios. Por ejemplo, si tanto el usuario A como el B como Spielberg (conexión entre los usuarios), y el usuario B ama a Batman Begins, pero el usuario A detesta a Katie Holmes, pesa la película para el usuario A en consecuencia (nuevamente, cada atributo por separado, por ejemplo, tal vez al usuario A no le gustan mucho las películas de acción, así que reduzca un poco la calificación, y ya que Katie Holmes no es la estrella principal, no tome eso tanto en cuenta como los otros atributos).

Básicamente, comparando conjuntos del usuario A similar a los conjuntos del usuario B, y obtenemos una calificación para el usuario A.

Tengo una idea cruda sobre cómo implementar esto, pero estoy seguro de que algunas mentes brillantes ya han pensado en una solución mucho mejor, así que ... ¿alguna sugerencia?

En realidad, después de una investigación rápida, parece que un filtro bayesiano funcionaría. Si es así, ¿sería este el mejor enfoque? ¿Sería tan simple como simplemente " normalizar " datos de la película, entrenando a un clasificador para cada usuario, y luego simplemente clasificando cada película?

Si su sugerencia incluye algunos conceptos de fusión cerebral (no tengo experiencia en estos temas, especialmente en IA), le agradecería que también incluyera una lista de algunos conceptos básicos para que los investigue antes de sumergirme en las cosas más sustanciosas. .

¡Gracias!

¿Fue útil?

Solución

Hay algunos algoritmos que son buenos para esto:

ARTMAP: se agrupa por probabilidad entre sí (esto no es rápido, pero es lo mejor para su problema, IMO)

ARTMAP tiene un grupo de atributos comunes y determina la probabilidad de similitud a través de porcentajes. ARTMAP

KMeans: Esto separa los vectores por la distancia entre ellos KMeans: Wikipedia

PCA: separará el promedio de todos los valores de los bits de varing. Esto es lo que usaría para hacer la detección de rostros y la resta de fondo en Computer Vision. PCA

Otros consejos

Esto es similar a esta pregunta donde el OP Quería construir un sistema de recomendación. En pocas palabras, se nos da un conjunto de datos de entrenamiento que consisten en calificaciones de usuarios para películas (por ejemplo, calificación de 1 a 5 estrellas) y un conjunto de atributos para cada película (año, género, actores, ...). Queremos construir un recomendador para que salga para las películas invisibles una clasificación posible. Así que los datos inpt parecen:

user movie   year   genre   ...    | rating
---------------------------------------------
  1    1     2006   action         |    5
  3    2     2008   drama          |    3.5
  ...

y para una película sin clasificar X:

10    20     2009   drama   ?

queremos predecir una calificación. Al hacer esto para todas las películas que no se ven, las clasifica según la clasificación de películas pronosticada y la salida de los 10 primeros le da un sistema de recomendaciones.

El enfoque más sencillo es utilizar un algoritmo k-vecino más cercano . Entre las películas clasificadas, busque el " más cercano " unos a la película X, y combinan sus calificaciones para producir una predicción. Este enfoque tiene la ventaja de ser muy fácil de implementar desde cero.

Existen otros enfoques más sofisticados. Por ejemplo, puede crear un árbol de decisiones , que se ajuste a un conjunto de reglas sobre los datos de capacitación. También puede usar Redes bayesianas , redes neuronales artificiales , máquinas de vectores de soporte , entre muchos otros ... Pasar por cada uno de estos no será fácil para alguien sin los antecedentes adecuados. Todavía espero que estés usando una herramienta / biblioteca externa. Ahora parece que está familiarizado con las redes bayesianas, por lo que una simple red ingenua de bayes, de hecho, podría ser muy poderosa. Una ventaja es que permite la predicción bajo datos faltantes.

La idea principal sería algo similar; toma los datos de entrada que tienes, entrena un modelo y luego úsalo para predecir la clase de nuevas instancias.

Si desea jugar con diferentes algoritmos en un paquete simple e intuitivo que no requiere programación, le sugiero que eche un vistazo a Weka (mi primera opción), Orange O RapidMiner . La parte más difícil sería preparar el conjunto de datos al formato requerido. El resto es tan fácil como elegir qué algoritmo y aplicarlo (¡todo en unos pocos clics!)

Supongo que para alguien que no busca entrar en demasiados detalles, recomendaría usar el método del vecino más cercano, ya que es intuitivo y fácil de implementar. Aún así, la opción de usar Weka (o una de las otras herramientas) vale la pena mirar.

El algoritmo del vecino más cercano a K puede estar a tu altura.

Vea algunos de los trabajos de los equipos principales para premio de Netflix .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top