Uso de atributos para clasificar / agrupar perfiles de usuario


14

Tengo un conjunto de datos de usuarios que compran productos de un sitio web.

Los atributos que tengo son la identificación del usuario, la región (estado) del usuario, la identificación de las categorías del producto, la identificación de las palabras clave del producto, la identificación de las palabras clave del sitio web y el monto de ventas gastado del producto.

El objetivo es utilizar la información de un producto y un sitio web para identificar quiénes son los usuarios, como "jugador joven masculino" o "madre que se queda en casa".

Adjunto una imagen de muestra de la siguiente manera:

ingrese la descripción de la imagen aquí

En total, hay 1940 categorías únicas y 13845 palabras clave únicas para productos. Para el sitio web, hay 13063 palabras clave únicas. Todo el conjunto de datos es enorme, ya que son los datos de registro diario.

Estoy pensando en la agrupación, ya que esos no están supervisados, pero esos id son números ordenados que no tienen significado numérico. Entonces no sé cómo aplicar el algoritmo. También estoy pensando en la clasificación. Si agrego una columna de clase basada en la cantidad de ventas del producto comprado. Creo que la agrupación es más preferida. No sé qué algoritmo debería usar para este caso, ya que las dimensiones de la identificación de las palabras clave podrían ser superiores a 10000 (cada producto podría tener muchas palabras clave, al igual que el sitio web). Necesito usar Spark para este proyecto.

¿Alguien puede ayudarme con algunas ideas o sugerencias?

Muchas gracias!


1
¿Puedes proporcionar más información? ¿Qué es "Id. de categorías del producto A" y "Id. de búsqueda de palabras clave del producto A" de la misma longitud para todas las entradas? "las dimensiones de la identificación de palabras clave de búsqueda podrían ser más de 10000" ¿por qué? ¿Qué son? ¿Cuántas muestras tienes? Todas las preguntas pueden responderse si publica una muestra de sus datos aquí. Entonces probablemente podría sugerirte algo.
Kasra Manshaei

¿Son el producto A y el producto B dos productos que el usuario compró? La redacción parece sugerir que los productos A y B son diferentes para cada usuario, ya que las palabras clave pueden variar. Es esto asi? Y último comentario, ¿quieres clasificar o agrupar? Esas son técnicas bastante diferentes :)
logc

Muchas gracias @kasramsh por tus respuestas. Actualicé la descripción y también adjunté una muestra de datos. ¡Espero recibir algunas sugerencias tuyas!
sylvia

@logc sí, el producto (dije el producto A antes) y el sitio web (dije el producto B antes) son diferentes de cada usuario. Cada producto tiene algunas palabras clave y cada sitio web también tiene algunas palabras clave. Tanto el agrupamiento como la clasificación están bien, siempre que pueda hacer un perfil de usuario, como "jugador joven masculino"; "Quédate en la casa mamá". Creo que la agrupación es más preferible. ¡¡Gracias!!
sylvia

@sylvia: tengo un problema similar que resolver. Lo había publicado como una pregunta separada. ¿Podría dar algunas sugerencias sobre cómo lo resolvió? datascience.stackexchange.com/questions/12930/… Mi otra duda es para K significa, ¿ agrupaste los registros por cliente? Es decir, cada fila representaba una transacción o representaba compras agregadas de ese cliente hasta la fecha.
Neil

Respuestas:


11

En este momento, solo tengo tiempo para una respuesta muy breve, pero trataré de ampliarla más adelante.

Lo que desea hacer es una agrupación , ya que desea descubrir algunas etiquetas para sus datos. (A diferencia de una clasificación, donde tendría etiquetas para al menos algunos de los datos y le gustaría etiquetar el resto).

Para realizar una agrupación en sus usuarios, debe tenerlos como algún tipo de puntos en un espacio abstracto. Luego, medirá las distancias entre los puntos y dirá que los puntos que están "cerca" son "similares", y los etiquetará según su lugar en ese espacio.

Debe transformar sus datos en algo que se parezca a un perfil de usuario, es decir, una identificación de usuario, seguida de un vector de números que represente las características de este usuario. En su caso, cada función podría ser una "categoría de sitio web" o una "categoría de producto", y el número podría ser la cantidad de dólares gastados en esa función. O una característica podría ser una combinación de web y producto, por supuesto.

Como ejemplo, imaginemos el perfil de usuario con solo tres características:

  • dólares gastados en redes "techy",
  • dólares gastados en productos de "moda",
  • y dólares gastados en videojuegos "agresivos" en webs "orientadas a la familia" (quién sabe).

Para crear esos perfiles, debe asignar las "categorías" y "palabras clave" que tiene, que son demasiado abundantes, en las características que considera relevantes. Examine el modelado de temas o la similitud semántica para hacerlo. Una vez que se construye ese mapa, se indicará que todos los dólares gastados en sitios web con palabras clave "gadget", "electrónica", "programación" y X otros, se deben agregar a nuestra primera función; y así.

¡No tengas miedo de "imponer" las características! Deberá refinarlos y tal vez cambiarlos por completo una vez que haya agrupado a los usuarios.

Una vez que tenga los perfiles de usuario, proceda a agruparlos utilizando k-means o cualquier otra cosa que considere interesante. Cualquiera sea la técnica que utilice, le interesará obtener el punto "representativo" para cada grupo. Este suele ser el "centro" geométrico de los puntos en ese grupo.

Grafique esos puntos "representativos", y también grafique cómo se comparan con otros grupos. Usar un gráfico de radar es muy útil aquí. Siempre que haya una característica destacada (algo en el representante que esté muy marcado y que también sea muy destacado en su comparación con otros grupos) es un buen candidato para ayudarlo a etiquetar el grupo con alguna frase pegadiza ("nerds", "fashionistas" , "mamás agresivas" ...).

Recuerde que un problema de agrupación es un problema abierto, por lo que no existe una solución "correcta". Y creo que mi respuesta ya es bastante larga; verifique también la normalización de los perfiles y el filtrado de valores atípicos.


¡Muchísimas gracias! Es muy útil Comenzaré por el mapeo. ¡Realmente lo aprecio!
Sylvia

Feliz de ayudar. :)
logc

Hola @logc, apliqué LDA para seleccionar las funciones. Consideré cada user_id como un "documento" y las palabras clave son las "palabras" en el "documento", luego al aplicar LDA obtuve algunos temas de palabras clave. Sin embargo, no sé por qué la mayoría de mis temas consisten en las mismas palabras clave. ¿Eso significa que LDA no es el método correcto para mi caso o hay algunos errores? Muchas gracias!
Sylvia

@sylvia: Sugeriría que convierta esa pregunta en una nueva pregunta en este sitio. De lo contrario, podríamos terminar escribiendo un montón de comentarios, y ese no es el mejor formato para preguntas y respuestas. :)
logc

Gracias por la sugerencia. Aquí está el enlace que publiqué si tienes tiempo para echar un vistazo datascience.stackexchange.com/questions/5941/… ¡Gracias!
Sylvia

-2

Para orientación y exploración, puedo recomendar WeKa , que es un juego de herramientas muy bueno para el aprendizaje automático. Se necesita un cierto formato de entrada (.ARFF), por lo que es posible que deba analizarlo también.

En cuanto al dilema de palabras clave, recomiendo realizar alguna selección de funciones para eliminar palabras clave redundantes o no indicativas.


Gracias @Lennart Kloppenburg por su respuesta. ¿Cómo realizar la selección de características si el atributo (keword_id) es un número ordenado? Actualicé una muestra de datos arriba. ¿Podrías echar un vistazo y darme algunas sugerencias? ¡Gracias!
Sylvia
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.