Estou trabalhando com o código de floresta aleatória de Breiman ( http://stat-www.berkeley.edu/users/breiman/RandomForests/cc_manual.htm#c2 ) para classificação de dados de satélite (aprendizado supervisionado). Estou usando um conjunto de dados de treinamento e teste com tamanho de amostra de 2000 e tamanho variável 10. Os dados são classificados em duas classes, A e B. No modo de aprendizado supervisionado, o algoritmo está executando bem com erro de classificação muito baixo (<2%) . Agora, quero tentar a classificação não supervisionada sem rótulos de classe no conjunto de dados de teste e ver como o algoritmo é capaz de prever as classes. Existe uma maneira de implementar a classificação não supervisionada usando o código de Breiman? O erro desse método será maior que a classificação supervisionada? A configuração de dados e parâmetros de execução no algoritmo é fornecida abaixo
DESCRIÇÃO DOS DADOS 1 mdim = 10, ntrain = 2000, nclass = 2, maxcat = 1, 1 ntest = 2000, labelts = 1, labeltr = 1,
SET PARAMETERS DE EXECUÇÃO 2 mtry0 = 3, ndsize = 1, jbt = 500, look = 100, lookcls = 1, 2 jclasswt = 0, mdim2nd = 0, mselect = 0,
Respostas:
Como seu modelo exibe boa precisão, você pode apenas usá-lo para prever os rótulos de classe dos registros no conjunto de dados não rotulado. No entanto, você não pode avaliar os desempenhos em dados não rotulados.
Tenha cuidado para avaliar a qualidade do seu modelo nos dados rotulados por validação cruzada. Não é suficiente verificar a taxa de erro do treinamento.
Se o seu modelo não for preciso o suficiente, você pode pensar em aprendizado semi-supervisionado . Os dados não rotulados são usados para melhorar a qualidade do seu modelo via aprendizado indutivo. A precisão deve sempre ser calculada pela validação cruzada nos dados rotulados.
Veja [Crimisini et al. Florestas de decisão: uma estrutura unificada para classificação, regressão, estimativa de densidade, aprendizado múltiplo e aprendizado semi-supervisionado] Capítulo 7 sobre aprendizado semi-supervisionado e 7.4 sobre indução com aprendizado semi-supervisionado.
fonte
Duvido que a supervisão não funcione melhor, mas poderia ser um exercício interessante de experimentar. O aprendizado não supervisionado com floresta aleatória é feito através da construção de uma distribuição conjunta com base em suas variáveis independentes que descrevem aproximadamente seus dados. Em seguida, simule um certo número de observações usando essa distribuição. Por exemplo, se você tiver 1000 observações, poderá simular mais 1000. Então você os rotula, por exemplo, 1: = observação real, 0: = observação simulada. Depois disso, você executa um classificador aleatório de floresta comum tentando distinguir as observações reais das simuladas. Observe que você deve ter a opção calcular a proximidade ativada. O resultado realmente útil é exatamente isso, uma descrição da proximidade entre suas observações, com base no que a Random Forest faz ao tentar atribuir esses rótulos. Agora você tem uma descrição de como " Quero dizer, juntar observações que estão mais próximas do que um certo limite. Outra opção fácil é fazer cluster hierárquico, mas usando essa matriz de distância específica. Se você pode trabalhar com R, a maioria dos pacotes de armazenamento em cluster hierárquico permite alimentar as matrizes de distância personalizadas das funções. Em seguida, você seleciona um ponto de corte, pode visualizá-lo como um dendograma e assim por diante. Quero dizer, juntar observações que estão mais próximas do que um certo limite. Outra opção fácil é fazer cluster hierárquico, mas usando essa matriz de distância específica. Se você pode trabalhar com R, a maioria dos pacotes de armazenamento em cluster hierárquico permite alimentar as matrizes de distância personalizadas das funções. Em seguida, você seleciona um ponto de corte, pode visualizá-lo como um dendograma e assim por diante.
Este costumava ser um tutorial muito bom sobre o agrupamento Random Forest e eles compartilhavam algumas funções R úteis que eles escreveram para esse fim, mas o link parece estar morto agora. Talvez volte mais tarde. Eles também escreveram um pacote glm R aleatório muito elegante (que é análogo a floresta aleatória, mas baseado em duh ... glms) se você quiser conferir isso. Você sempre pode escrever para os autores e pedir o material para a classificação Random Forest, que costumava estar disponível no link morto. Eu tenho o código R, mas é muito grande para colar aqui, posso enviá-lo para você se você me enviar uma mensagem privada.
fonte
Se você deseja usar a floresta aleatória em um ambiente não supervisionado, estará focando na métrica de distância obtida no que Breiman chama de "proximidades". Essa deve ser uma matriz NxN que representa os tempos em que as amostras co-ocorrem nos nós terminais. No randomForest do R, isso é obtido via (eu nunca usei o Breiman, mas tenho certeza de que está disponível):
Agora, em um ambiente não supervisionado, a floresta aleatória não faz ideia de quantas classes deve haver, portanto esse será o seu trabalho. Isso pode ser feito de várias maneiras, por exemplo, KNN, PAM, etc., onde você escolhe k = 2.
Como você pode imaginar, essa é uma floresta aleatória supervisionada um pouco diferente; portanto, comparar a precisão da classificação entre os dois procedimentos pode não ser esclarecedor.
fonte