Classificação estratificada com florestas aleatórias (ou outro classificador)

12

Então, eu tenho uma matriz de cerca de 60 x 1000. Estou vendo como 60 objetos com 1000 recursos; os 60 objetos são agrupados em 3 classes (a, b, c). 20 objetos em cada classe, e sabemos a verdadeira classificação. Gostaria de fazer um aprendizado supervisionado neste conjunto de 60 exemplos de treinamento, e estou interessado tanto na precisão do classificador (e métricas relacionadas) quanto na seleção de recursos nos 1000 recursos.

Primeiro, como está minha nomenclatura?

Agora a verdadeira questão:

Eu poderia jogar florestas aleatórias nele, como declarado, ou em qualquer número de outros classificadores. Mas há uma sutileza - eu realmente só me importo em diferenciar a classe c das classes a e b. Eu poderia agrupar as classes aeb, mas existe uma boa maneira de usar o conhecimento a priori de que todos os objetos não-c provavelmente formam dois grupos distintos? Eu preferiria usar florestas aleatórias ou uma variante delas, já que foi demonstrado que é eficaz em dados semelhantes aos meus. Mas eu poderia estar convencido a tentar outras abordagens.

user116293
fonte
Não vejo nenhum problema com sua nomenclatura. São 60 objetos tudo o que você tem? Em seguida, para calcular uma precisão de classificação, você precisa dividir seu conjunto de dados em conjuntos de treinamento, teste (e também validação). Existem várias maneiras de fazer isso, mas a validação cruzada fold é a mais comum, eu acho. k
emrea
1
Sim, apenas esses 60. Mas, para florestas aleatórias, cada árvore de decisão é criada com um subconjunto das amostras, para que você possa obter um erro de generalização estimado aplicando cada uma das 60 amostras existentes apenas nas árvores da floresta que não veja essa amostra durante a construção. ( stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#ooberr ) Portanto, talvez a validação cruzada típica não seja necessária aqui.
user116293
você deve estar muito preocupado com o ajuste excessivo aqui. Você tem 1000 variáveis ​​com 60 objetos, eu me sentiria muito melhor se fosse o outro qay por aí e eu ainda diria, você deve se preocupar com o ajuste excessivo. Existe uma maneira lógica ou semântica de reduzir o número de variáveis ​​antes de fazer a análise?
Jank

Respostas:

8

existe uma boa maneira de usar o conhecimento a priori de que todos os objetos não-c provavelmente formam dois grupos distintos

Se você estiver usando um método baseado em árvore, não acho que isso importe, pois esses classificadores particionam o espaço de recursos e, em seguida, analisam a proporção de amostras em cada classe. Então, tudo o que importa é a ocorrência relativa da classe c em cada nó do terminal.

Se, no entanto, você estava usando algo como uma mistura de normais, LDA, etc., seria uma má idéia combinar dois grupos (assumindo que as classes aeb formam grupos únicos). Aqui você precisa preservar a estrutura da classe para descrever com precisão o espaço de recurso que mapeia para a, bec. Esses modelos assumem que os recursos de cada classe têm uma distribuição normal diferente. Se você combinar aeb forçará uma única distribuição Normal a ser ajustada a uma mistura.

Em resumo para árvores, não importa muito se você:

I. Crie três classificadores (1. a vs b, 2. a vs ce 3. b vs c) e preveja com um método baseado em votação.

II Mesclar as classes aeb para formar um problema de duas classes.

III Preveja as três classes e mapeie a previsão para um valor de duas classes (por exemplo, f (c) = c, f (a) = não c, f (b) = não c).

No entanto, se você usar um método que esteja ajustando uma distribuição para cada classe, evite II. e teste qual de I. ou III. funciona melhor para o seu problema

muratoa
fonte
III parece bom - embora eu ache que, se o classificador disser que uma amostra é 0,33 a, 0,33 be 0,34 c, provavelmente devo somar as probabilidades para a e b e, assim, escolher 'não c'.
user116293
1
Para (I), qual é o bom procedimento para uma votação por partes (1: a, 2: c, 3: b) ou isso é muito raro para ser realmente importante?
user116293
Para III. o que você sugere está correto. Para I. em dados de 3 classes, não acho que exista alguma medida para dividir votos (1 para cada), pois a propriedade transitiva teria que ser violada. No entanto, para mais de 4 classes, é possível ter empates no topo; nesse caso, você pode usar uma quantidade numérica em vez de ganhar / perder; ou seja, somar os pesos de acordo com a classe de peso máximo.
Muratoa 17/08/12