Como saber se os dados são linearmente separáveis?
21
Os dados têm muitos recursos (por exemplo, 100) e o número de instâncias é como 100.000. Os dados são escassos. Quero ajustar os dados usando regressão logística ou svm. Como sei se os recursos são lineares ou não lineares para que eu possa usar o truque do kernel se não linear?
Existem vários métodos para descobrir se os dados são linearmente separáveis, alguns deles são destacados neste artigo (1). Com a suposição de duas classes no conjunto de dados, a seguir estão alguns métodos para descobrir se eles são linearmente separáveis:
Programação linear: define uma função objetivo sujeita a restrições que satisfazem a separabilidade linear. Você pode encontrar detalhes sobre a implementação aqui .
Método Perceptron: Um perceptron é garantido para convergir se os dados forem linearmente separáveis.
Programação quadrática: A função objetivo da otimização da programação quadrática pode ser definida com restrições, como no SVM.
Geometria computacional: Se for possível encontrar dois cascos convexos disjuntos , os dados são linearmente separáveis
Método de cluster: Se for possível encontrar dois clusters com pureza de cluster de 100% usando alguns métodos de cluster, como k-means, os dados serão linearmente separáveis.
(1): Elizondo, D., "O problema da separabilidade linear: alguns métodos de teste", em Redes Neurais, IEEE Transactions on, vol.17, no.2, pp.330-344, março de 2006 doi: 10.1109 / TNN. 2005.860871
Forneça uma referência (os links podem apodrecer) e pelo menos uma pequena explicação de quais métodos são abordados.
Scortchi - Reinstate Monica
2
Obrigado. Boa resposta (+1). O pacote R safeBinaryRegressiontambém implementa a abordagem de programação linear.
Scortchi - Reinstate Monica
Qual (a abordagem LP) é prontamente interpretada geometricamente, computacionalmente eficiente e geralmente disponível (como são as rotinas LP).
user603
3
Suponho que você fale sobre um problema de classificação em duas classes. Nesse caso, há uma linha que separa suas duas classes e qualquer algoritmo clássico deve ser capaz de encontrá-la quando convergir.
Na prática, você precisa treinar e testar os mesmos dados. Se houver uma linha assim, você deve ter quase 100% de precisão ou 100% de AUC. Se não houver essa linha, o treinamento e o teste nos mesmos dados resultarão em pelo menos alguns erros. Com base no volume dos erros, pode ou não valer a pena tentar um classificador não linear.
safeBinaryRegression
também implementa a abordagem de programação linear.Suponho que você fale sobre um problema de classificação em duas classes. Nesse caso, há uma linha que separa suas duas classes e qualquer algoritmo clássico deve ser capaz de encontrá-la quando convergir.
Na prática, você precisa treinar e testar os mesmos dados. Se houver uma linha assim, você deve ter quase 100% de precisão ou 100% de AUC. Se não houver essa linha, o treinamento e o teste nos mesmos dados resultarão em pelo menos alguns erros. Com base no volume dos erros, pode ou não valer a pena tentar um classificador não linear.
fonte
fonte
safeBinaryRegression
Você tenta a regressão logística e vê como funciona. Se não der certo, existem infinitos kernels que você pode tentar e ainda pode não dar certo.
fonte