La ligne sépare deux ensembles de points

19

S'il existe un moyen d'identifier si deux ensembles de points peuvent être séparés par une ligne?

Nous avons deux ensembles de points et B s'il y a une ligne qui sépare A et B de telle sorte que tous les points de A et seulement A d'un côté de la ligne, et tous les points de B et seulement B de l'autre côté.UNEBUNEBUNEUNEBB

L'algorithme le plus naïf que j'ai trouvé consiste à créer un polygone convexe pour et B et à les tester pour l'intersection. Il semble que la complexité temporelle soit O ( n log h ) comme pour la construction d'un polygone convexe. En fait, je ne m'attends pas à des améliorations de la complexité du temps, je ne suis pas sûr que cela puisse être amélioré du tout. Mais au moins, il devrait y avoir un moyen plus beau de déterminer s'il existe une telle ligne.UNEBO(nJournalh)

com
la source

Réponses:

19

Uli et Dave Clarke observent correctement qu'il s'agit d'un problème de programmation linéaire, même dans des dimensions supérieures (ces deux ensembles de points peuvent-ils être séparés par un hyperplan?) Et qu'il peut donc être résolu en temps polynomial. Mais parce que vos points se trouvent dans le plan, votre problème peut en fait être résolu en temps , où n est le nombre total de points.O(n)n

La solution la plus simple est probablement l'algorithme randomisé de Seidel. Choisissez un point d'entrée uniformément au hasard et calculez récursivement une ligne de séparation pour tous les points sauf p .p p

  • Si une telle ligne n'existe pas, les points d'origine ne sont pas séparables.

  • Si est du bon côté de , alors sépare les points d'origine.p

  • Si est du mauvais côté de , alors soit les points d'origine peuvent être séparés par une ligne passant par p , soit les points d'origine ne sont pas du tout séparables. Cette condition est facile à vérifier en O ( n ) temps [exercice].ppO(n)

Cet algorithme s'exécute en temps avec une probabilité élevée (par rapport aux choix aléatoires de l'algorithme). Pour plus de détails, consultez l'article original ou n'importe quel nombre de notes de cours en ligne.O(n)

JeffE
la source
Merci beaucoup, je vais me plonger dans cet article.
com
Dans votre troisième cas, vous déclarez que cela pourrait être pour que la ligne passe par , comment cela aide-t-il de le savoir? p
Tarrasch
10

La propriété de vos deux ensembles de données est celle de la séparabilité linéaire , simplement, qu'il y a une ligne qui les sépare. Beaucoup d'apprentissage automatique est consacré à la recherche de classificateurs linéaires , qui sont des lignes qui effectuent la séparation qui vous intéresse.

Comme vous parlez de lignes, je suppose que vos points se trouvent dans l'avion. Ce que vous voulez faire, c'est trouver les valeurs , w 2 et w 3 , de sorte que pour tous les points ( a 1 , a 2 ) de l'ensemble A , w 1 a 1 + w 2 a 2w 3 et pour tous les points ( b 1 , b 2 ) en B , w 1 b 1 +w1w2w3(une1,une2)UNEw1une1+w2une2w3(b1,b2)B . Ainsi, l'inégalité w 1 x + w 2 y w 3 peut être considéré comme un classificateur pour ensemble A .w1b1+w2b2<w3w1X+w2yw3UNE

Il existe de nombreux algorithmes d'apprentissage automatique pour déterminer une ligne optimale (régression linéaire, régression logistique, etc.). Ceux-ci trouveront des valeurs pour fonction d'une mesure d'erreur. Ensuite, vous pouvez tester si tous les points sont correctement classés. Autrement dit, si toutes les valeurs A satisfont l'équation ci - dessus et de même pour B .w1,w2,w3UNEB

Comme vous ne souhaitez savoir si une telle ligne existe, vous devez utiliser les techniques existantes (bien que ce soit probablement plus simple). Configurez simplement la collection suivante d'égalités en termes de variables libres .w1,w2,w3

pour chaque i = 1 , . . , | A | , où A = { ( a 1 1 ,w1une1je+w2une2jew3je=1,..,|UNE| .UNE={(une11,une21),,(une1|UNE|,une2|UNE|)}

pour chaque j = 1 , . . , | B | , où B = { ( b 1 1 ,w1b1j+w2b2j<w3j=1,..,|B| .B={(b11,b21),,(b1|B|,b2|B|)}

Si ces contraintes sont cohérentes, alors une ligne existe.

Dave Clarke
la source
5

Si je me souviens bien, les machines vectorielles supportent la construction d'hyperplans séparés. Si vous choisissez la dimension l'hyperplan devient bien sûr une ligne. Vous devrez peut-être vérifier s'il y a des hypothèses supplémentaires à respecter. En deux dimensions, l'approche globale pourrait être considérablement simplifiée, de sorte que l'exécution pourrait être meilleure que pour l'approche générale.2

uli
la source