La línea separa dos conjuntos de puntos.

19

¿Si hay una manera de identificar si dos conjuntos de puntos se pueden separar por una línea?

Tenemos dos conjuntos de puntos y B si hay una línea que separa A y B de manera que todos los puntos de A y solo A en un lado de la línea, y todos los puntos de B y solo B en el otro lado.ABABAABB

El algoritmo más ingenuo que se me ocurrió es construir un polígono convexo para y B y probar su intersección. Parece que la complejidad del tiempo para esto debería ser O ( n log h ) como para construir un polígono convexo. En realidad, no espero ninguna mejora en la complejidad del tiempo, no estoy seguro de que pueda mejorarse en absoluto. Pero al menos debería haber una forma más hermosa de determinar si existe tal línea.ABO(nlogh)

com
fuente

Respuestas:

19

Tanto uli como Dave Clarke observan correctamente que este es un problema de programación lineal, incluso en dimensiones más altas (¿Pueden estos dos conjuntos de puntos estar separados por un hiperplano?) Y, por lo tanto, puede resolverse en tiempo polinómico. Pero debido a que sus puntos se encuentran en el plano, su problema puede resolverse en tiempo , donde n es el número total de puntos.O(n)n

La solución más simple es probablemente el algoritmo aleatorio de Seidel. Elija un punto de entrada uniforme al azar y calcule recursivamente una línea de separación para todos los puntos excepto p .p p

  • Si no existe tal línea, entonces los puntos originales no son separables.

  • Si está en el lado correcto de , entonces separa los puntos originales.p

  • Si está en el lado equivocado de , entonces los puntos originales se pueden separar por una línea a través de p , o los puntos originales no se pueden separar en absoluto. Esta condición es fácil de verificar en O ( n ) tiempo [ejercicio].ppO(n)

Este algoritmo se ejecuta en tiempo con alta probabilidad (con respecto a las elecciones aleatorias del algoritmo). Para obtener más detalles, consulte el documento original o cualquier cantidad de notas de clase en línea.O(n)

JeffE
fuente
Muchas gracias, voy a profundizar en este artículo.
com
En su tercer caso, usted afirma que podría ser así que la línea pasa por , ¿cómo ayuda saber eso? p
Tarrasch
10

La propiedad de sus dos conjuntos de datos es la de la separabilidad lineal , simplemente, que hay una línea que los separa. Se dedica mucho aprendizaje automático a encontrar clasificadores lineales , que son líneas que realizan la separación que le interesa.

Mientras habla de líneas, supondré que sus puntos se encuentran en el plano. Lo que se quiere hacer es encontrar los valores de , w 2 y W 3 , de tal manera que para todos los puntos ( un 1 , un 2 ) en el conjunto A , W 1 a 1 + w 2 a 2w 3 y para todos los puntos ( b 1 , b 2 ) en B , w 1 b 1 +w1w2w3(a1,a2)Aw1a1+w2a2w3(b1,b2)B . Así, la desigualdad w 1 x + w 2 y w 3 puede ser visto como un clasificador para el grupo A .w1b1+w2b2<w3w1x+w2yw3A

Existen muchos algoritmos de aprendizaje automático para determinar una línea óptima (regresión lineal, regresión logística, etc.). Estos encontrarán valores para basados ​​en alguna métrica de error. Luego puede probar si todos los puntos están clasificados correctamente. Es decir, si todos los valores en A satisfacer la ecuación de arriba y de manera similar para B .w1,w2,w3AB

w1,w2,w3

w1a1i+w2a2iw3i=1,..,|A|A={(a11,a21),,(a1|A|,a2|A|)}

w1b1j+w2b2j<w3j=1,..,|B|B={(b11,b21),,(b1|B|,b2|B|)}

Si estas restricciones son consistentes, entonces existe una línea.

Dave Clarke
fuente