36 votos

¿Cómo puedo utilizar la enfermedad vesicular porcina en el filtrado colaborativo?

Estoy un poco confundida con la forma de la enfermedad vesicular porcina se utiliza en el filtrado colaborativo. Supongamos que tengo un grafo social, y voy a construir una matriz de adyacencia de los bordes, a continuación, tomar una enfermedad vesicular porcina (vamos a olvidarnos de regularización, las tasas de aprendizaje, dispersión optimizaciones, etc), ¿cómo puedo usar esta enfermedad vesicular porcina para mejorar mis recomendaciones?

Supongamos que mi grafo social correspondía a instagram, y estaba encargado con la responsabilidad de recomendar a los usuarios en el servicio, basándose únicamente en el gráfico social. En primer lugar, construir una matriz de adyacencia A (mxm), tomar la SVD, A = U s V, elija la primera k autovalores, entonces, ¿qué?

He de suponer que crear un nuevo conjunto de matrices:

U_new ~ mxk

s_new ~ kxk

V_new ~ kxm

entonces, ¿qué hace?

He mirado en la web, y la mayoría de los enlaces se centran en el cálculo de la SVD, pero nadie te dice qué hacer con él. Entonces, ¿qué debo hacer?

27voto

blahdiblah Puntos 1419

Me gustaría ofrecer una opinión disidente:

Falta, en los Bordes de los Valores perdidos

En el filtrado colaborativo problema, las conexiones que no existen (usuario $i$ no ha valorado el elemento $j$ persona $x$ no ha friended persona $y$) generalmente son tratados como valores perdidos para ser predicho, en lugar de como ceros. Es decir, si el usuario $i$ no ha valorado el elemento $j$, queremos adivinar lo que podría tasa de él si se había clasificado. Si la persona $x$ no ha friended $y$, queremos adivinar cómo es la probabilidad de que iba a querer a un amigo de él. Las recomendaciones se basan en la reconstrucción de los valores.

Cuando usted toma el SVD del grafo social (por ejemplo, la conecte a través de svd()), que son, básicamente, la imputación de los ceros en todos los puestos vacantes. Que esto es problemático, es más evidente en el usuario-objeto-calificación de la instalación de filtrado colaborativo. Si yo tuviera una forma confiable de relleno en las entradas que faltan, yo no sería necesario el uso de SVD. Me acababa de dar recomendaciones basadas en el llenado de los datos. Si no tengo una manera de hacer eso, entonces yo no debería llenar antes de hacer la enfermedad vesicular porcina.*

SVD con los Valores que Faltan

Por supuesto, el svd() función no saben cómo lidiar con los valores que faltan. Así que, ¿qué se supone que debes hacer? Bueno, hay una manera de reformular el problema como

"Encontrar la matriz de rango $k$ que es la más cercana a la matriz original"

Ese es realmente el problema que estamos tratando de resolver, y no vas a usar svd() a resolverlo. Una forma en que ha funcionado para mí (en el premio de Netflix de datos) fue esta:

  • Tratar de encajar las entradas con un modelo simple, por ejemplo, $\hat{X}_{i,j} = \mu + \alpha_i + \beta_j$. Esto realmente hace un buen trabajo.

  • Asignar a cada usuario $i$ $k$- vector $u_i$ y cada elemento de a $j$ $k$- vector $v_j$. (En su caso, cada persona se una a la derecha y a la izquierda $k$-vector). Usted va a ser en última instancia la predicción de los residuos como productos de puntos: $\sum u_{im}v_{jm}$

  • El uso de algún algoritmo para encontrar los vectores que minimizar la distancia a la matriz original. Por ejemplo, el uso de este papel

La mejor de las suertes!

* : ¿Qué Tenali está recomendando es básicamente vecinos más cercanos. Intenta encontrar los usuarios que son similares y hacer recomendaciones sobre eso. Por desgracia, la dispersión problema (~99% de la matriz es la falta de valores) hace que sea difícil encontrar la más cercana a los vecinos el uso de coseno de distancia o similitud de jaccard o lo que sea. Por tanto, era recomiende hacer un SVD de la matriz (con ceros atribuido a la falta de valores) a la primera comprimir los usuarios en un menor espacio de características y, a continuación, hacer comparaciones allí. Haciendo SVD, más cercano a los vecinos es buena, pero aun así, recomendaría hacer el SVD de la manera correcta (me refiero a... a mi manera). No hay necesidad de hacer sentido de valor de la imputación!

14voto

Sean B. Durkin Puntos 7723

La razón por la que nadie te dice qué hacer con él es porque si usted sabe lo que SVD hace, entonces, es un poco obvio lo que hacer con él :-).

Desde las filas y columnas son de la misma serie, voy a explicar esto a través de una diferente de la matriz A. Deje que la matriz a de ser tal que las filas son los usuarios y las columnas son los elementos que desee el usuario. Tenga en cuenta que esta matriz no necesita ser simétrica, pero en tu caso, supongo que resulta ser simétrica. Una manera de pensar de enfermedad vesicular porcina es la siguiente : Enfermedad vesicular porcina se encuentra una característica oculta espacio donde los usuarios y de los elementos que tienen la característica de vectores que están estrechamente alineados.

Así, cuando calculamos el $A = U \times s \times V$, $U$ de la matriz representa la función de los vectores que corresponden a los usuarios en la característica oculta el espacio y el $V$ de la matriz representa la función de los vectores correspondientes a los elementos de la característica oculta el espacio.

Ahora, si me dan dos vectores de la misma característica de espacio y te pregunto para ver si son similares, ¿cuál es la cosa más simple que se puede pensar para lograr eso? Producto escalar.

Así que, si quiero ver el usuario $i$ le gusta elemento $j$, todo lo que necesitas hacer es tomar el producto escalar de la $i$th entrada en $U$ $j$th entrada en V. por supuesto, el producto escalar no es la única cosa que usted puede aplicar cualquier medida de similitud que se puede pensar es aplicable.

13voto

Max Z. Puntos 196

Sin embargo: Con puro de vainilla SVD usted podría tener problemas para recrear la matriz original, y no digamos la predicción de los valores de los elementos faltantes. La utilidad de la regla-de-pulgar en esta área es el cálculo de la calificación promedio por película, y restando este promedio para cada usuario / película de combinación, es decir, descontando la película de sesgo de cada usuario. A continuación, se recomienda ejecutar el SVD, y, por supuesto, usted tendrá que registrar estos valores de inclinación en algún lugar, con el fin de recrear las calificaciones, o predecir valores desconocidos. Yo había leído Simon Funk post sobre la enfermedad vesicular porcina para las recomendaciones que se inventó un incremento de enfermedad vesicular porcina durante la competencia de Netflix.

http://sifter.org/~simon/journal/20061211.html

Supongo que degradantes de la matriz antes de que SVD tiene sentido, ya que SVD del primo cercano de la PCA también funciona de una manera similar. En términos del incremento de la computación, Funk me dijo que si no se degradan, la primera dirección del degradado domina el resto de la computación. He visto de primera mano, básicamente, sin degradante cosas no funcionan.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X