Tous les algorithmes d'apprentissage automatique séparent-ils les données de manière linéaire?

22

Je suis un passionné de programmation et d'apprentissage automatique. Il y a seulement quelques mois, j'ai commencé à apprendre la programmation d'apprentissage automatique. Comme beaucoup de ceux qui n'ont pas de formation scientifique quantitative, j'ai également commencé à apprendre le ML en bricolant avec les algorithmes et les jeux de données du package ML largement utilisé (caret R).

Il y a quelque temps, j'ai lu un blog dans lequel l'auteur parle de l'utilisation de la régression linéaire en ML. Si je me souviens bien, il a parlé de la façon dont tout l'apprentissage automatique utilise finalement une sorte de "régression linéaire" (je ne sais pas s'il a utilisé ce terme exact) même pour des problèmes linéaires ou non linéaires. Cette fois, je n'ai pas compris ce qu'il voulait dire par là.

Ma compréhension de l'utilisation de l'apprentissage automatique pour les données non linéaires consiste à utiliser un algorithme non linéaire pour séparer les données.

C'était ma pensée

Disons que pour classer les données linéaires, nous avons utilisé l'équation linéaire et pour les données non linéaires, nous utilisons l'équation non linéaire, disonsy=mX+cy=sjen(X)

entrez la description de l'image ici

Cette image est tirée du site Web sikit learn de la machine à vecteur de support. Dans SVM, nous avons utilisé différents noyaux à des fins de ML. Donc, ma pensée initiale était que le noyau linéaire sépare les données en utilisant une fonction linéaire et que le noyau RBF utilise une fonction non linéaire pour séparer les données.

Mais j'ai vu ce blog où l'auteur parle de réseaux neuronaux.

Pour classer le problème non linéaire dans la sous-intrigue de gauche, le réseau neuronal transforme les données de telle manière qu'au final, nous pouvons utiliser une séparation linéaire simple des données transformées dans la sous-intrigue de droite

entrez la description de l'image ici

Ma question est de savoir si tous les algorithmes d'apprentissage automatique utilisent finalement une séparation linéaire pour la classification (ensemble de données linéaire / non linéaire)?

Eka
la source
1
Connexes: stats.stackexchange.com/questions/164048/…
Sycorax dit de rétablir Monica le
3
Votre modèle non linéaire est également linéaire. introduisez une nouvelle variable , puis votre problème devient - linéaire. En ce sens, beaucoup d'algues ML sont en effet linéaires. s = sin ( x ) y = θ 0 + θ 1 spéché(X)s=péché(X)y=θ0+θ1s
Aksakal
J'aime aussi la réponse de mbq sur ce fil, Aidez-moi à comprendre les machines à vecteurs de support .
Andy W

Réponses:

26

La réponse est non. User20160 a une réponse parfaite, j'ajouterai 3 exemples avec visualisation pour illustrer l'idée. Remarque, ces graphiques peuvent ne pas vous être utiles pour voir si la "décision finale" est sous forme linéaire, mais vous donnent une idée de l'arborescence, du boosting et du KNN.

Nous allons commencer avec des arbres de décision. Avec de nombreuses divisions, il s'agit d'une frontière de décision non linéaire. Et nous ne pouvons pas penser que toutes les divisions précédentes sont des "transformations de caractéristiques" et il y a une ligne de décision finale à la fin.

Un autre exemple est le modèle de stimulation, qui regroupe de nombreux "classificateurs faibles" et la frontière de décision finale n'est pas linéaire. Vous pouvez penser que c'est un code / algorithme compliqué pour faire la prédiction finale.

Enfin, pensez à K Nearest Neighbours (KNN). Ce n'est pas non plus une fonction de décision linéaire au niveau de la couche finale. en outre, il n'y a pas de "transformations de fonctionnalités" dans KNN.

Voici trois visualisations dans l'espace 2D (Tree, Boosting et KNN de haut en bas). La vérité fondamentale est que 2 spirales représentent deux classes, et la sous-intrigue gauche est les prédictions du modèle et la sous-intrigue droite est les limites de décision du modèle.

Limite de décision d'arbre

Stimuler la limite de décision

Limite de décision KNN


EDIT: La réponse de @ ssdecontrol dans ce post donne une autre perspective.

Cela dépend de la façon dont nous définissons la «transformation» .

Toute fonction qui partitionne les données en deux parties peut être transformée en un modèle linéaire de cette forme, avec une interception et une entrée unique (un indicateur de quel "côté" de la partition le point de données est activé). Il est important de noter la différence entre une fonction de décision et une frontière de décision.

Haitao Du
la source
Je ne veux pas critiquer, mais le boosting semble un peu brutal, non? N'est-il pas possible d'obtenir un résultat plus fluide avec différents paramètres? Désolé d'être pernickety, parce que je trouve toute l'explication très bonne.
YCR
@YCR Je pense que c'est le point de stimuler où vous avez une frontière de décision approximative. La rugosité est causée par l'agrégation de nombreux classificateurs faibles (dans cet exemple, ce sont des arbres). Mais je suis d'accord avec vous que le deuxième exemple n'est pas un bon modèle, et il est trop adapté :)
Haitao Du
1
(+1) Grande visualisation (j'utilise aussi spiralsbeaucoup dans mes expérimentations). Une suggestion: tracez les limites de décision comme image, et ajoutez peut-être des niveaux de probabilité (si vous utilisez des sorties probabilistes) avec contour.
Firebug
@Firebug grande suggestion! ces tracés sont générés dans une grille et ne peuvent que vous donner l'étiquette finale. Le contour est bien meilleur.
Haitao Du
Regardez ma réponse ici: stats.stackexchange.com/a/218578/60613
Firebug
21

Certains algorithmes utilisent un hyperplan (c'est-à-dire une fonction linéaire) pour séparer les données. Un exemple frappant est la régression logistique. D'autres utilisent un hyperplan pour séparer les données après une transformation non linéaire (par exemple, les réseaux de neurones et prennent en charge les machines vectorielles avec des noyaux non linéaires). Dans ce cas, la frontière de décision est non linéaire dans l'espace de données d'origine, mais linéaire dans l'espace d'entités dans lequel les données sont mappées. Dans le cas des SVM, la formulation du noyau définit implicitement ce mappage. D'autres algorithmes utilisent plusieurs hyperplans de fractionnement dans les régions locales de l'espace de données (par exemple, les arbres de décision). Dans ce cas, la frontière de décision est linéaire par morceaux (mais globalement non linéaire).

Cependant, d'autres algorithmes ont des limites de décision non linéaires et ne sont pas formulés en termes d'hyperplans. Un exemple frappant est la classification k des voisins les plus proches. Les classificateurs d'ensemble (par exemple produits en augmentant ou en ensachant d'autres classificateurs) sont généralement non linéaires.

user20160
la source
Le réseau neuronal n'est pas un bon exemple de classe modèle qui utilise des hyperplans après une transformation non linéaire. La couche de sortie peut être (dans de nombreux cas) une activation sigmoïde, étant donné que vous supposez les couches précédentes comme une transformation non linéaire vers un espace d'entités.
Cagdas Ozgenc
1
@CagdasOzgenc Considérons le cas de la classification binaire et d'un réseau avec sortie sigmoïdale, comme vous le suggérez. Cela équivaut à une régression logistique sur les activations de la couche précédente (l'utilisation de sorties softmax serait équivalente à une régression logistique multinomiale). Ainsi, la frontière de décision est un hyperplan dans l'espace d'entités. L'image de la question d'origine en montre un bel exemple.
user20160
Je comprends que lorsque f (Ax) = 0 et f est un à un, vous pouvez simplement faire f ^ -1 de (Ax) = f ^ -1 (0) => Ax = 0 (ou une constante c). Donc, en cas de sigmoïde, vous obtenez une limite de décision linéaire. Parlons-nous essentiellement de cas où f n'est pas inversible?
Cagdas Ozgenc
F est-elle la fonction d'activation du neurone de sortie et x la sortie de la couche précédente? Je ne suis pas sûr de comprendre ce que vous demandez.
user20160
x est un vecteur provenant des neurones de la couche précédente, et f est la fonction d'activation de la sortie.
Cagdas Ozgenc