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é.
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.
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 2 ≥ w 3 et pour tous les points ( b 1 , b 2 ) en B , w 1 b 1 +w1 w2 w3 ( un1, un2) UNE w1une1+ w2une2≥ w3 ( 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< w3 w1x + w2y≥ w3 UNE
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, w3 UNE B
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 ,w1uneje1+ w2uneje2≥ w3 i = 1 , . . , | A | .A = { ( a11, un12) , ... , ( a| A |1, un| A |2) }
pour chaque j = 1 , . . , | B | , où B = { ( b 1 1 ,w1bj1+ w2bj2< w3 j = 1 , . . , | B | .B = { ( b11, b12) , … , ( B| B |1, b| B |2) }
Si ces contraintes sont cohérentes, alors une ligne existe.
la source
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
la source