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:
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!
Respuestas:
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:
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.
fuente
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.
fuente