Para a tarefa de modelagem de rotatividade, eu estava considerando:
- Computar k clusters para os dados
- Crie k modelos para cada cluster individualmente.
A justificativa para isso é que não há nada a provar, que a população de assinantes é homogênea; portanto, é razoável supor que o processo de geração de dados possa ser diferente para diferentes "grupos"
Minha pergunta é: é um método apropriado? Ele viola alguma coisa ou é considerado ruim por algum motivo? Se sim, por quê?
Caso contrário, você compartilharia algumas práticas recomendadas sobre esse assunto? E a segunda coisa - geralmente é melhor ou pior fazer o pré-agrupamento do que a árvore modelo (conforme definido em Witten, Frank - árvore de classificação / regressão com modelos nas folhas. Intuitivamente, parece que o estágio da árvore de decisão é apenas outra forma de agrupamento, mas idk se tiver alguma vantagem sobre o cluster "normal".).
Dois pontos muito longos para serem comentados:
clusters puros (isto é, contendo casos de apenas uma classe) não são um problema per se: os chamados classificadores de uma classe modelam cada classe independentemente de todas as outras. Eles podem lidar perfeitamente com isso.
No entanto, se os clusters de dados de uma maneira que as classes são bastante separadas, ou seja, os clusters são bastante puros, isso significa que existe uma estrutura muito forte, uma estrutura que a análise de cluster é capaz de encontrar sem orientação pelos rótulos das classes. Isso significa que certos tipos de classificadores, como métodos vizinhos mais próximos, com base na mesma medida de distância usada pela análise de cluster, são apropriados para os dados.
A outra possibilidade, situações em que os clusters não são puros, mas uma combinação de métodos de cluster e classificação pode fazer bem é apropriada para árvores. A árvore fará a parte do clustering (e os nós puros não são considerados um problema.) Aqui está um exemplo artificial, uma versão em 2 clusters do problema XOR:
outra maneira de incluir as informações do cluster sem correr o risco de ter clusters puros seria usar o cluster como uma etapa de geração de recursos: adicione o resultado da análise de cluster como novas variáveis à matriz de dados.
Você pergunta se é ruim por algum motivo: uma armadilha é que essa abordagem leva a modelos com muitos graus de liberdade. Você terá que ter um cuidado especial para não se ajustar demais.
Dê uma olhada nas árvores baseadas em modelo, por exemplo, a resposta da mbq aqui , acho que elas implementam um conceito muito próximo do que você procura. Eles também podem ser implementados como floresta: por exemplo, R package mobForest .
fonte
Estou lidando com problemas semelhantes nos dias de hoje. Eu tenho centenas de recursos para construir o classificador. Depois de experimentar modelos diferentes (ex: florestas aleatórias, aumento de gradiente, etc ...), ainda obtive baixa precisão / recall. Então, eu estou tentando fazer alguns agrupamentos e criar classificadores em diferentes grupos. Minha preocupação é, como diz Anony-Mousse, como obter mais informações do classificador se usar todas as informações em cluster? Então, aqui está o que eu vou fazer a seguir:
Eu acho que também pode ajudar a reduzir a complexidade, desejo que ajude.
fonte
Construir clusters e, em seguida, modelos correspondentes é absolutamente viável. O caso patológico observado nos comentários em que os agrupamentos separam perfeitamente as variáveis de resultado colocaria dificuldades para os classificadores é um problema teórico, mas acho que é improvável (especialmente em um caso de alta dimensão). Além disso, se você pudesse criar esses clusters, poderia usá-los apenas para prever!kk k
Além disso, se o processo começar com amostras, os classificadores poderão usar apenas amostras. Assim, uma abordagem mais poderosa seria usar os clusters na construção de um único classificador que incorpore a heterogeneidade nos clusters usando uma mistura de regressões. No cluster baseado em modelo, supõe-se que os dados sejam gerados a partir de uma distribuição de mistura que com probabilidade e com probabilidade e e . Uma regressão de mistura é uma extensão que permite modelar os dados como dependentes de covariáveis;N / k Y i ~ N ( μ i , σ 2 i ) i = 1 π i = 2 1 - π μ 1 ≠ μ 2 σ 2 1 ≠ σ 2 2 μ i β i X i β iN N/k Yi∼N(μi,σ2i) i=1 π i=2 1−π μ1≠ μ2 σ21≠σ22 μi é substituído por , onde o deve ser estimado. Embora este exemplo seja para um caso gaussiano univariado, a estrutura pode acomodar muitos dados (o log multinomial seria apropriado para variáveis categóricas). O pacote flexmix para R fornece uma descrição mais detalhada e, é claro, uma maneira relativamente fácil e extensível de implementar essa abordagem.βiXi βi
Como alternativa, em um ambiente discriminativo, pode-se tentar incorporar atribuições de cluster (hard ou soft) como um recurso para treinar o algoritmo de classificação de escolha (por exemplo, NB, ANN, SVM, RF, etc.)
fonte
Bem, se seus clusters forem realmente bons, seus classificadores serão ruins. Porque eles não têm diversão suficiente em seus dados de treinamento.
Diga que seus agrupamentos são perfeitos, ou seja, puros. Você não pode mais treinar adequadamente um classificador lá. Classificadores precisam de exemplos positivos e negativos!
A Random Forest tem muito sucesso ao fazer exatamente o oposto. Eles coletam uma amostra aleatória dos dados, treinam um classificador nisso e usam todos os classificadores treinados.
O que pode funcionar é usar cluster e, em seguida, treinar um classificador em cada par de clusters, pelo menos se discordarem o suficiente (se uma classe for dividida em dois clusters, você ainda não poderá treinar um classificador lá!)
fonte