A linha separa dois conjuntos de pontos

19

Se existe uma maneira de identificar se dois conjuntos de pontos podem ser separados por uma linha?

Temos dois conjuntos de pontos e B se houver uma linha que separa A e B, de modo que todos os pontos de A e apenas A de um lado da linha e todos os pontos de B e apenas B do outro lado.ABABAABB

O algoritmo mais ingênuo que criei é a construção de polígonos convexos para e B e testá-los quanto à interseção. Parece que a complexidade do tempo para isso deve ser O ( n log h ) como para a construção de um polígono convexo. Na verdade, não estou esperando nenhuma melhoria na complexidade do tempo, não tenho certeza de que possa ser melhorada. Mas pelo menos deve haver uma maneira mais bonita de determinar se existe essa linha.ABO(nlogh)

com
fonte

Respostas:

19

Tanto uli quanto Dave Clarke observam corretamente que este é um problema de programação linear, mesmo em dimensões mais altas (esses dois conjuntos de pontos podem ser separados por um hiperplano?) E, portanto, podem ser resolvidos em tempo polinomial. Mas como seus pontos estão no plano, seu problema pode ser resolvido em tempo, onde n é o número total de pontos.O(n)n

A solução mais simples é provavelmente o algoritmo aleatório de Seidel. Escolha um ponto de entrada uniformemente aleatoriamente e calcule recursivamente uma linha de separação para todos os pontos, exceto p .p p

  • Se essa linha não existir, os pontos originais não serão separáveis.

  • Se estiver no lado correto de , separará os pontos originais.p

  • Se estiver no lado errado de , os pontos originais podem ser separados por uma linha até p , ou os pontos originais não são separáveis. É fácil verificar esta condição em O ( n ) tempo [exercício].ppO(n)

Esse algoritmo é executado em tempo com alta probabilidade (com relação às escolhas aleatórias do algoritmo). Para mais detalhes, consulte o documento original ou qualquer número de anotações de aula on-line.O(n)

JeffE
fonte
Muito obrigado, vou me aprofundar neste artigo.
com
No seu terceiro caso, você afirma que pode ser para que a linha passe por , como ajuda saber disso? p
Tarrasch 30/09
10

A propriedade dos seus dois conjuntos de dados é a da separabilidade linear , simplesmente, que existe uma linha que os separa. Muito aprendizado de máquina é dedicado a encontrar classificadores lineares , que são linhas que realizam a separação na qual você está interessado.

Enquanto você está falando de linhas, presumo que seus pontos estejam no avião. O que você deseja fazer é encontrar os valores , w 2 e w 3 , de modo que, para todos os pontos ( a 1 , a 2 ) no conjunto A , w 1 a 1 + w 2 a 2w 3 e para todos os pontos ( b 1 , b 2 ) em B , w 1 b 1 +w1w2w3(a1,a2)Aw1a1+w2a2w3(b1,b2)B . Assim, a desigualdade w 1 x + w 2 y w 3 pode ser visto como um classificador para o conjunto A .w1b1+w2b2<w3w1x+w2yw3A

Existem muitos algoritmos de aprendizado de máquina para determinar uma linha ideal (regressão linear, regressão logística etc.). Eles encontrarão valores para com base em alguma métrica de erro. Depois, você pode testar se todos os pontos estão classificados corretamente. Isto é, se todos os valores em A satisfazem a equação acima e similarmente para B .w1,w2,w3AB

Como você só está interessado em saber se essa linha existe, é necessário usar técnicas existentes (embora isso provavelmente seja mais simples). Simplesmente configure a seguinte coleção de igualdades em termos de variáveis ​​livres .w1,w2,w3

para cada i = 1 , . . , | Um | , onde A = { ( a 1 1 ,w1a1i+w2a2iw3i=1,..,|A| .A={(a11,a21),,(a1|A|,a2|A|)}

para cada j = 1 , . . , | B | , onde B = { ( b 1 1 ,w1b1j+w2b2j<w3j=1,..,|B| .B={(b11,b21),,(b1|B|,b2|B|)}

Se essas restrições forem consistentes, existe uma linha.

Dave Clarke
fonte
5

Se bem me lembro do suporte correto, as máquinas vetoriais constroem hiperplanos separados. Se você escolher a dimensão o hiperplano se tornará, obviamente, uma linha. Pode ser necessário verificar se há premissas adicionais a serem atendidas. Em duas dimensões, toda a abordagem pode simplificar consideravelmente, portanto o tempo de execução pode ser melhor do que na abordagem geral.2

uli
fonte