Escolha o algoritmo de classificação correta. Linear ou não-linear? [fechadas]

StackOverflow https://stackoverflow.com/questions/2414030

  •  19-09-2019
  •  | 
  •  

Pergunta

Eu acho esta questão um pouco complicado. Talvez alguém sabe uma abordagem para responder a esta pergunta. Imagine que você tem um (dados de treinamento) conjunto de dados que você não sabe do que se trata. Quais recursos de dados de treinamento que você olha para inferir classificação algoritmo para classificar esses dados? podemos dizer nada se devemos usar um algoritmo de classificação linear não-linear ou?

A propósito, estou usando WEKA para analisar os dados.

Todas as sugestões? Obrigado.

Foi útil?

Solução

Uau, então você tem alguns dados de treinamento e você não sabe se você está olhando para características que representam palavras em um documento, ou genese em uma célula e necessidade de sintonizar um classificador. Bem, desde que você não tem qualquer informação semântica, você vai ter que fazer isso soley por olhar para propriedades estatísticas dos conjuntos de dados.

Em primeiro lugar, para formular o problema, isso é mais do que apenas linear vs não-linear. Se você está realmente olhando para classificar esses dados, o que você realmente precisa fazer é selecionar uma função de kernel para o classificador que pode ser linear ou não-linear (gaussian, polinomial, hiperbólica, etc. Além disso, cada função do kernel pode levar um ou mais parâmetros que precisam ser definidas. Determinar uma função ideal kernel e conjunto de parâmetros para um determinado problema de classificação não é realmente um problema resolvido, existem heurísticas única úteis e se você google 'selecionar uma função de kernel' ou 'escolha do kernel função', você será tratado a muitos trabalhos de pesquisa propondo e testando várias abordagens. Embora existam muitas abordagens, um dos mais básicos e bem viajou é fazer um gradiente descendente na parameters-- basicamente você tentar um método kernel e um conjunto de parâmetros, trem na metade de seus pontos de dados e ver como se faz. Então você tenta um conjunto diferente de parâmetros e ver como você faz. você se move os parâmetros no sentido de melhor melhora na precisão até chegar satisfac resultados tory.

Se você não precisa passar por toda essa complexidade para encontrar uma função bom kernel, e simplesmente querem uma resposta para linear ou não-linear. em seguida, vem a pergunta principalmente para duas coisas: não linear classificadores terá um maior risco de overfitting (undergeneralizing) uma vez que têm mais dimensões da liberdade. Eles podem sofrer do classificador apenas memorizar conjuntos de bons pontos de dados, em vez de chegar com uma boa generalização. Por outro lado um classificador linear tem menos liberdade para ajuste, e no caso de dados que não é linearmente seperable, vai deixar de encontrar uma função boa decisão e sofrem de taxas de erro elevadas.

Infelizmente, eu não sei a melhor solução matemática para responder à pergunta "é esses dados linearmente seperable" que não apenas tentar o classificador em si e ver como ele se comporta. Para isso você vai precisar de uma resposta mais inteligente do que o meu.

Edit: Este trabalho de pesquisa descreve um algoritmo que parece que ele deve ser capaz de determinar o quão perto um determinado conjunto de dados trata de ser linearmente seperable

.

http://www2.ift.ulaval.ca/~mmarchand/ publicações / wcnn93aa.pdf

Outras dicas

Esta é, de facto, dois perguntas em um; -)

  • Seleção de características
  • Linear ou não

adicionar "seleção algoritmo", e você provavelmente terá três questões mais fundamentais da concepção classificador.

Como uma nota de lado, é uma coisa boa que você não tem qualquer experiência de domínio que teria permitido que você para orientar a seleção de recursos e / ou para fazer valer a linearidade do espaço de características. Essa é a diversão de mineração de dados: inferir tais informações sem um conhecimento a priori. (BTW, e enquanto experiência de domínio é bom para checar o resultado do classificador, muito uma visão priori pode fazer você perder boas oportunidades de mineração). Sem qualquer conhecimento a priori você é forçado a estabelecer metodologias de som e aplicar um exame cuidadoso com os resultados.

É difícil fornecer específica orientação, em parte porque muitos detalhes são deixados de fora na pergunta, e também porque eu sou um pouco BS-ing meu caminho através deste ;-). Nunca a menos espero o seguinte conselho genérico será útil

  • Para cada algoritmo de tentar (ou mais precisamente para cada conjunto de parâmetros para um determinado algoritmo), você terá de executar muitos testes . A teoria pode ser muito útil, mas não continuará a ser um monte de "tentativa e erro". Você vai encontrar Cross-Validação uma técnica valiosa.
    Em poucas palavras, [e, dependendo do tamanho dos dados de treinamento disponível], você dividir aleatoriamente os dados de treinamento em várias partes e treinar o classificador em uma [ou vários] dessas peças, e depois avaliar o classificador sobre o seu desempenho em outro [ou vários] peças. Para cada corrida você mede diversos indicadores de desempenho, tais como erros de classificação de erro (MCE) e para além de dizer-lhe como as executa classificador, essas métricas, ou melhor, a sua variabilidade irá fornecer dicas quanto à relevância dos recursos selecionados e / ou sua falta de escala ou de linearidade.

  • Independentemente do pressuposto de linearidade, é útil para normalizar os valores de numérica recursos. Isso ajuda com características que têm uma gama ímpar etc.
    Dentro de cada dimensão, estabelecer a faixa de dentro de, digamos, 2,5 desvios-padrão em ambos os lados da mediana, e converter os valores de recurso a um percentual com base neste intervalo.

  • Converter atributos nominais para os binários , criando como muitas dimensões são existem valores distintos do atributo nominal. (Eu acho que muitos otimizadores algoritmo vai fazer isso por você)

  • Depois de ter identificado um ou alguns classificadores com um desempenho relativamente decente (digamos 33% MCE), executar as mesmas séries de testes, com tal classificador, modificando apenas um parâmetro de cada vez. Por exemplo remover algumas características, e ver se o resultante, classificador dimensionalidade inferior melhora ou se degrada.

  • O fator de perda é um parâmetro muito sensível . Experimente e ficar com um valor "reasonnable" mas possivelmente abaixo do ideal para a maior parte dos testes, afinar a perda no final.

  • Saiba explorar o "dump" informações fornecidas pelos otimizadores SVM. Estes resultados fornecem informações muito valiosas sobre o que o otimizador "pensa"

  • Lembre-se que o que funcionou muito bem wih um determinado conjunto de dados em um determinado domínio pode executar muito mal com os dados de outro domínio ...

  • boa do café, não muito. Quando tudo falhar, torná-lo irlandês; -)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top