Eu tenho um conjunto de dados de usuários que compram produtos de um site.
Os atributos que tenho são: ID do usuário, região (estado) do usuário, ID das categorias do produto, ID das palavras-chave do produto, ID das palavras-chave do site e valor das vendas gastas do produto.
O objetivo é usar as informações de um produto e site para identificar quem são os usuários, como "jovem jogador do sexo masculino" ou "mãe que fica em casa".
Anexei uma imagem de exemplo como abaixo:
No total, existem 1940 categorias exclusivas e 13845 palavras-chave exclusivas para produtos. Para o site, existem 13063 palavras-chave exclusivas. Todo o conjunto de dados é enorme, já que são os dados de log diários.
Estou pensando em agrupar, pois eles não são supervisionados, mas esses IDs são números ordenados sem significado numérico. Então não sei como aplicar o algoritmo. Eu também estou pensando em classificação. Se eu adicionar uma coluna da classe com base na quantidade de vendas do produto comprado. Eu acho que o clustering é mais preferido. Não sei qual algoritmo devo usar neste caso, pois as dimensões do ID das palavras-chave podem ser maiores que 10000 (cada produto pode ter muitas palavras-chave, o mesmo ocorre com o site). Eu preciso usar o Spark para este projeto.
Alguém pode me ajudar com algumas idéias ou sugestões?
Muito obrigado!
Respostas:
No momento, só tenho tempo para uma resposta muito breve, mas tentarei expandi-la mais tarde.
O que você deseja fazer é um cluster , pois você deseja descobrir alguns rótulos para seus dados. (Ao contrário de uma classificação, onde você teria rótulos para pelo menos alguns dos dados e gostaria de rotular o restante).
Para executar um cluster em seus usuários, você precisa deles como algum tipo de ponto em um espaço abstrato. Depois, você medirá as distâncias entre os pontos e dirá que os pontos "próximos" são "semelhantes" e os rotulará de acordo com o seu lugar naquele espaço.
Você precisa transformar seus dados em algo parecido com um perfil de usuário, ou seja: um ID do usuário, seguido por um vetor de números que representam os recursos desse usuário. No seu caso, cada recurso pode ser uma "categoria de site" ou "categoria de produto", e o número pode ser a quantia gasta nesse recurso. Ou um recurso pode ser uma combinação de web e produto, é claro.
Como exemplo, vamos imaginar o perfil do usuário com apenas três recursos:
Para criar esses perfis, você precisa mapear as "categorias" e "palavras-chave" que você possui, que são muito abundantes, para os recursos que você considera relevantes. Examine a modelagem de tópicos ou a semelhança semântica para fazer isso. Depois que o mapa for construído, ele indicará que todos os dólares gastos nas redes com as palavras-chave "gadget", "eletrônica", "programação" e X outros devem ser agregados ao nosso primeiro recurso; e assim por diante.
Não tenha medo de "impor" os recursos! Você precisará refiná-los e talvez alterá-los completamente depois de agrupar os usuários.
Depois de ter perfis de usuário, prossiga para agrupá-los usando k-means ou qualquer outra coisa que você achar interessante. Qualquer que seja a técnica usada, você estará interessado em obter o ponto "representativo" para cada cluster. Este é geralmente o "centro" geométrico dos pontos nesse cluster.
Traçar esses pontos "representativos" e também traçar como eles se comparam a outros clusters. Usar um gráfico de radar é muito útil aqui. Sempre que houver um recurso destacado (algo muito representativo no representante e também muito destacado em sua comparação com outros clusters), é um bom candidato para ajudá-lo a rotular o cluster com uma frase cativante ("nerds", "fashionistas" , "mães agressivas" ...).
Lembre-se de que um problema de cluster é um problema aberto, portanto não há solução "certa"! E acho que minha resposta já é bastante longa; verifique também sobre a normalização dos perfis e os outliers de filtragem.
fonte
Para orientação e exploração, posso recomendar o WeKa , que é um kit de ferramentas muito bom para aprendizado de máquina. É preciso um certo formato de entrada (.ARFF), assim você pode precisar examinar isso também.
Quanto ao dilema das palavras-chave, recomendo realizar algumas seleções de recursos para eliminar palavras-chave redundantes ou não indicativas.
fonte