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?

Xiang Zhang
fonte

Respostas:

22

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:

  1. 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 .
  2. Método Perceptron: Um perceptron é garantido para convergir se os dados forem linearmente separáveis.
  3. 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.
  4. Geometria computacional: Se for possível encontrar dois cascos convexos disjuntos , os dados são linearmente separáveis
  5. 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

Shuaib Ahmed
fonte
1
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.

iliasfl
fonte
1

mEunW,b ||W||2
s.t Eu,(WxEu+b)yEu1

mEuns,b s
s.t Eu,(WxEu+b)yEu1-s
s0 0

ssEu

Sridhar Thiagarajan
fonte
+1 esta é a intuição geométrica atrás do método implementado no pacote RsafeBinaryRegression
user603
-2

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.

Neil G
fonte