7 · Filtrado colaborativo ítem-ítem
Voltea la matriz: mide la similitud entre ÍTEMS que los mismos usuarios co-valoraron, luego predice tu valoración para un ítem nuevo a partir de los ítems que ya valoraste. Amazon popularizó esto porque es estable y precalculable.
El CF ítem-ítem mide la similitud entre ítems según los usuarios que los co-valoraron, luego predice la valoración de un usuario para un ítem como el promedio ponderado por similitud sobre los ítems que ese usuario ya valoró. Como los ítems cambian mucho más despacio que los usuarios, la matriz de similitud ítem-ítem es lo bastante estable para precalcularse offline.
Sin esto:
Con CF usuario-usuario puro, cada valoración nueva puede mover el vecindario de un usuario y las similitudes deben recalcularse en vivo para millones de usuarios — justo el cuello de botella que Amazon resolvió volteando a ítems.
El CF usuario-usuario tiene un problema práctico a escala: suele haber muchos más usuarios que ítems, los gustos de los usuarios cambian constantemente, y cada valoración nueva puede modificar el vecindario de alguien — así que las similitudes se quedan obsoletas rápido y deben recalcularse en vivo. El filtrado colaborativo ítem-ítem voltea la perspectiva y resuelve esto.
En vez de preguntar '¿qué usuarios se parecen a mí?', el CF ítem-ítem pregunta '¿qué ítems se parecen a este?' Dos ítems son similares si los mismos usuarios tienden a valorarlos parecido — es decir, calculamos la similitud sobre las columnas de la matriz. Luego, para predecir la valoración del usuario u para el ítem i:
pred(u,i) = Σ_j sim(i,j)·R[u,j] / Σ_j |sim(i,j)| sobre los ítems j que u ya valoró.
En palabras: para adivinar cuánto te gustará el ítem i, mira los ítems que ya valoraste, pondera cada uno según lo similar que sea a i, y promedia. Si valoraste 'Interstellar' con un 5 y es muy similar a 'Inception', probablemente te guste 'Inception' también.
La gran ventaja práctica es la estabilidad y precalculabilidad. Los ítems cambian mucho más despacio que los usuarios — los vecinos de Inception son básicamente los mismos esta semana que la pasada — así que la matriz de similitud ítem-ítem puede calcularse offline y cachearse, y servir una recomendación se vuelve una consulta barata. Amazon popularizó este enfoque ('Los clientes que compraron esto también compraron…') en su famoso artículo de 2003 precisamente porque el CF ítem-ítem escalaba a su catálogo donde el usuario-usuario no.
Python (in browser)
CF ítem-ítem: similitud coseno entre columnas de ítems, luego predecir una valoración faltante a partir de los ítems que ese usuario ya valoró, ponderados por la similitud ítem-ítem.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
CF ítem-ítem del mundo real con la librería `implicit`: ajusta una vez para precalcular las similitudes ítem-ítem, luego `recommend` y `similar_items` son consultas baratas (corre en servidor, mostrado como referencia).
¿Por qué el CF ítem-ítem suele preferirse sobre el usuario-usuario en sistemas de producción grandes como Amazon?
- El CF ítem-ítem calcula la similitud sobre las columnas de la matriz (ítems co-valorados por los mismos usuarios) y predice una valoración a partir de los ítems similares que el usuario ya valoró.
- Como los ítems cambian despacio, la matriz de similitud ítem-ítem es estable y precalculable offline — servir se vuelve una consulta barata.
- Amazon popularizó el CF ítem-ítem ('los clientes que compraron esto también compraron…') porque escalaba donde el usuario-usuario no.
El 'los clientes también compraron' de Amazon, los videos relacionados de YouTube y el 'a los fans también les gusta' de Spotify son consultas de vecinos ítem-ítem servidas desde una matriz de similitud precalculada.
Si lo quitas: Sin el ítem-ítem, los catálogos grandes tendrían que recalcular los vecindarios de usuarios en vivo en cada interacción — demasiado lento y caro para servir a escala.