[PYTHON] Découvrez SVM

C'est un mémo que j'ai écrit pour enquêter sur la relation entre le SVM de scikit-learn et les autres SVM, et il n'a pas encore été organisé. Je suis attiré par la commodité de scikit-learn, mais pour une utilisation dans le langage C ++, il est également nécessaire de faire référence à d'autres implémentations, et j'étudie.

Récemment, l'apprentissage en profondeur est devenu un sujet brûlant dans l'apprentissage automatique. Support Vector Machine (SVM) est capable et facile à utiliser. Je ne pense pas qu'il ait perdu de son éclat.

** La partie qui n'a pas d'importance quelle implémentation vous utilisez **

Maître SVM! 8 points de contrôle http://qiita.com/pika_shi/items/5e59bcf69e85fdd9edb2

Soutenir les machines vectorielles et d'autres techniques d'apprentissage automatique http://qiita.com/ynakayama/items/afa2212cf561f2067606

Il est important pour le succès de l'apprentissage automatique d'avoir des connaissances suffisantes sur le prétraitement pour utiliser SVM et la partie de vérification croisée, qui ne dépend pas de l'implémentation utilisée.

Pour ceux qui n'ont pas de problèmes avec l'anglais, nous recommandons les documents suivants. A Practical Guide to Support Vector Classification

L'analyse en composantes principales peut être utilisée avant SVM. Les caractéristiques de l'analyse en composantes principales sont

  1. Les vecteurs propres obtenus à la suite de l'analyse en composantes principales étant orthogonaux, les coefficients obtenus sont C'est une combinaison de variables sans corrélation.   La construction d'un modèle à l'aide de variables corrélées a tendance à provoquer des phénomènes involontaires, mais elle facilite la gestion des paramètres orthogonaux et non corrélés (Note).

  2. Il montre quantitativement quels types de fluctuations sont inclus dans les fluctuations réelles des données, et combien de fluctuations peuvent être expliquées jusqu'au vecteur propre de quel ordre. Par conséquent, bien que cela soit possible en principe, une composante variable qui peut être pratiquement ignorée devient claire, et il devient possible de capturer le phénomène en se concentrant uniquement sur le composant sur lequel se concentrer.

Par conséquent, l'analyse des composants principaux est utilisée aux fins de la compression des dimensions. La chose intéressante à propos de la compression dimensionnelle est que l'apprentissage avec la compression dimensionnelle peut donner de meilleurs résultats d'apprentissage automatique que l'apprentissage sans compression dimensionnelle.

Machine Learning with Scikit Learn (Part I) Si les données d'image d'origine sont utilisées telles quelles, la précision n'est que d'environ 40%, mais si elles sont compressées dimensionnellement en un visage unique puis classées, la précision est d'environ 85%.

Vous pouvez découvrir quel type de données a été obtenu à la suite de la compression dimensionnelle en reprojetant les données dimensionnellement compressées dans l'espace d'origine. Un exemple peut être vu comme une image dans l'article suivant sur PCA. Utilisation de PCA de sklearn.decomposition Comment faire PCA avec Python

PCA (n_components = 2) dans PCA de scikit-learn Spécifiez le nombre de dimensions après réduction de dimension avec n_composants et ainsi de suite.

Article mettant en œuvre PCA avec numpy Code pour l'analyse des composants principaux avec Python

La classe OpenCV PCA en Python est la classe cv2.PCACompute. OpenCV [cv2.PCACompute](http://docs.opencv.org/3.1.0/d3/d8d/classcv_1_1PCA.html#gsc.tab=0) cv2.PCACompute(data[, mean[, eigenvectors[, maxComponents]]]) -> mean, eigenvectors Dans maxComponents, spécifiez le nombre de dimensions après la réduction de dimension.

Article utilisant PCA avec OpenCV / C ++ Analyse des composants principaux des images [J'ai essayé d'analyser les principaux composants avec OpenCV] (http://www.yasutomo57jp.com/2010/10/26/opencv%E3%81%A7%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/)

Mise en œuvre de l'analyse en composants principaux (PCA) par OpenCV

[libpca C++ library: A C++ library for principal component analysis] (https://sourceforge.net/projects/libpca/)

La valeur absolue du coefficient de vecteur propre dans l'analyse en composantes principales ainsi obtenue diminue à mesure que l'ordre augmente. S'ils ne sont pas modifiés, les paramètres avec de petites valeurs absolues ne seront pas pleinement utilisés par SVM. Par conséquent, dans SVM, les données d'entrée sont standardisées et la taille est uniformisée.

Dans le domaine de l'apprentissage automatique, il arrive souvent qu'une projection soit calculée pour une autre donnée en utilisant le résultat ajusté par l'analyse en composantes principales et utilisée comme valeur d'entrée pour l'apprentissage automatique. Vérifions le cadre de sauvegarde et de chargement des données afin qu'elles puissent être projetées en utilisant les données du résultat de l'analyse du composant principal.

Pour comprendre quel type d'algèbre linéaire fait réellement l'analyse en composantes principales, l'explication de l'analyse en composantes principales PCA dans "Practical Computer Vision" est facile à comprendre. Si vous utilisez simplement du code scikit-learn ou OpenCV, le type d'algèbre linéaire en cours est masqué. Dans l'analyse en composantes principales, lorsque le nombre d'échantillons est petit par rapport au nombre de dimensions de la quantité de caractéristiques, il devient facile de comprendre que la taille de la mémoire utilisée pour le calcul matriciel est déterminée par la dimension du nombre d'échantillons. Accumuler une compréhension de ces choses aidera à résoudre les problèmes réels.

Il est également recommandé de vérifier le vecteur propre (ou image propre dans le cas d'une image) lors de l'analyse en composantes principales. Comprendre les fluctuations impliquées vous donnera des conseils sur la manière de procéder à l'apprentissage automatique. Cela vous aidera à comprendre à quoi ressemble la distribution des données d'entraînement.

** Bibliothèque PCA **

scikit-learn OpenCV Autre
URL sklearn.decomposition.PCA()
 http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
cv2.PCACompute()
http://docs.opencv.org/2.4.12/modules/core/doc/operations_on_arrays.html?highlight=pca#cv2.PCACompute
Exemple d'implémentation par numpy
http://www.yasutomo57jp.com/2012/02/24/python%E3%81%A7pca/
projection pca.transform(X) pcacompute.project(X)
Analyse des composants principaux dans les images Visage unique http://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html Analyse des composants principaux des images http://suzuichibolgpg.blog.fc2.com/blog-entry-62.html Exemple d'analyse des composants principaux de la police http://www.oreilly.co.jp/pub/9784873116075/
iris data PCA example with Iris Data-set http://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_iris.html
Exemple de code de compression de dimension from sklearn import decomposition
pca = decomposition.PCA(n_components=3)
pca.fit(X)
pca.transform(X)
cv2.PCACompute(data[, mean[, eigenvectors[, maxComponents]]]) -> mean, eigenvectors

** Bibliothèque SVM **

Vous trouverez ci-dessous trois exemples de bibliothèques SVM pouvant être utilisées dans l'environnement python. Veuillez l'utiliser correctement selon le travail souhaité. ・ Scikit-learn: Un environnement avec une riche bibliothèque d'apprentissage automatique. L'interface utilisée dans Python a un haut degré de similitude même si l'algorithme d'apprentissage est modifié, il est donc pratique pour les essais et les erreurs. ・ LibSVM: Les développeurs de LibSVM ont publié une liaison python. Cela correspond à des données d'apprentissage rares. ・ OpenCV: Il est pratique de passer à l'environnement OpenCV / C ++ à l'avenir. Cependant, l'interface de liaison OpenCV-Python est volatile et peut ne pas suivre la documentation. ・ Dlib Il existe également une implémentation SVM dans dlib, qui peut être utilisée à la fois en C ++ et Python. http://dlib.net/python/#dlib.svm_c_trainer_histogram_intersection

LIBLINEAR --A Library for Large Linear Classification

Le tableau suivant est en construction

scikit-learn libSVM OpenCV
URL http://scikit-learn.org/stable/ https://www.csie.ntu.edu.tw/~cjlin/libsvm/ http://opencv.org/
Module de charge from sklearn import svm from svm import * import cv2
Apprentissage clf = svm.SVC(C=22, gamma=2-11) m = svm_train(prob, param) svm = cv2.SVM()
Apprentissage clf.fit(x,y) m = svm_train(prob, param) svm.train(x, y)
Jugement clf.predict(x) result = svm_predict(test_label, test_data , t) result = svm.predict_all(testData)
Multi-classe 1 à 1 1 à 1 1 à 1
Enregistrer le modèle s = pickle.dumps(clf) svmutil.svm_save_model('libsvm.model', m) svm.save("/path/to/model.xml")
Modèle de charge clf2 = pickle.loads(s) m = svmutil.svm_load_model('libsvm.model') svm2 = cv2.SVM();svm2.load("/path/to/model.xml")
Présence ou absence d'estimation de probabilité Oui classificateur= svm.SVC(gamma=0.001, probability=True); classifier.fit(X, Y);predicted_Prob = classifier.predict_proba(Xnew) Oui
exemple de données d'iris http://scikit-learn.org/stable/auto_examples/svm/plot_iris.html Localisation des données https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html#iris
C/C++Avec ou sans Aucun Oui Oui
Licence commercially usable - BSD license the modified BSD license 3-clause BSD License

** Articles utilisant la mise en œuvre de scikit-learn **

Puisque Scikit-learn dispose d'une bibliothèque liée à l'apprentissage automatique Facile à démarrer avec SVM.

scikit-learn [Recognizing hand-written digits] (http://scikit-learn.org/stable/auto_examples/classification/plot_digits_classification.html#example-classification-plot-digits-classification-py) scikit-learn [1.4. Support Vector Machines] (http://scikit-learn.org/stable/modules/svm.html) scikit-learn [Plot different SVM classifiers in the iris dataset] (http://scikit-learn.org/stable/auto_examples/svm/plot_iris.html)

L'exemple de code sur le blog peut être écrit à partir d'une perspective différente de l'exemple de code sur le site scicit-learn.

Python: essayez de classer l'ensemble de données numériques manuscrites scikit-learn avec SVM http://blog.amedama.jp/entry/2016/01/03/143258

scikit-learn Recognizing hand-written digits

SVM multi-classes avec scikit-learn http://qiita.com/sotetsuk/items/3a5718bb1f945a383ceb

Essayez la classification multi-classes en utilisant le SVM scikit-learn http://minus9d.hatenablog.com/entry/2015/04/19/190732

[Python: essayez de classer les ensembles de données Iris avec les machines vectorielles prises en charge] (http://momijiame.tumblr.com/post/114751531866/python-iris-%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%83%99%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%9E%E3%82%B7%E3%83%B3%E3%81%A7%E5%88%86%E9%A1%9E%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B)

scikit-learn Plot different SVM classifiers in the iris dataset

Il est écrit que l'identification de n-classes est implémentée sur une base un à un. scikit-learn [SVC and NuSVC implement the “one-against-one” approach (Knerr et al., 1990) ] (http://scikit-learn.org/stable/modules/svm.html)

Il semble qu'il est plus facile d'atteindre la précision en implémentant l'identification un-à-un de la classe n. Les implémentations sur une base un-à-autre rétréciront les limites qui les distinguent dans un espace multidimensionnel.

Comment enregistrer et charger un modèle dans [scikit-learn Model persistence] est présenté. (http://scikit-learn.org/stable/modules/model_persistence.html)

La méthode d'enregistrement d'une instance d'un classificateur à l'aide de pickle présentée ici nécessite que l'économiseur et le lecteur utilisent la même version de scicit-learn.

python


import pickle
s = pickle.dumps(clf)
clf2 = pickle.loads(s)

L'article suivant présente d'autres techniques d'apprentissage intéressantes en plus de SVM. Il est plutôt amusant de regarder l'image. Machine Learning with Scikit Learn (Part I)

Il semble que l'analyse des composants principaux et SVM soient compatibles, et j'ai trouvé l'exemple suivant. scikit-learn [Faces recognition example using eigenfaces and SVMs] (http://scikit-learn.org/stable/auto_examples/applications/face_recognition.html)

** Articles utilisant libSVM **

Si les algorithmes que vous devez utiliser sont limités à SVM et que vous prévoyez de les réimplémenter dans le langage C / C ++, vous pouvez envisager d'utiliser directement libSVM, une bibliothèque éprouvée. libSVM est également capable d'apprentissage multi-classes. Dans le cas de libSVM, l'apprentissage est possible même si les fonctionnalités sont rares.

libSVM a un format exe qui peut être utilisé à partir de la ligne de commande, un module python qui peut être utilisé à partir de python et un module qui peut être utilisé à partir du langage C, alors assurez-vous qu'il fonctionne dans une couche, puis utilisez-le dans une autre couche. Cela semble facile.

LIBSVM Tools Est toujours mis à jour, il vaut donc la peine de revoir ceux qui le regardaient beaucoup.

LIBSVM FAQ

GPU-accelerated LIBSVM

Utiliser LIBSVM avec Python http://hy-adversaria.blogspot.jp/2011/04/pythonlibsvm.html

[Python] Remarques sur l'utilisation de SVM à partir de python [SVM] http://gasser.blog114.fc2.com/blog-entry-498.html

J'ai écrit FizzBuzz en python en utilisant la machine à vecteurs de support (bibliothèque LIVSVM). http://qiita.com/cof/items/e02ada0adb1106635ac9

J'ai essayé de prédire les données en utilisant LIBSVM https://airtoxin.wordpress.com/2013/02/03/libsvm%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%87%E3%83%BC%E3%82%BF%E4%BA%88%E6%B8%AC%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/

Introduction à Python pour la prédiction toto [Partie 3] Utilisation de SVM avec Python (Partie 2) Découper un article http://blogs.yahoo.co.jp/gdg00431/2211049.html

Installez libsvm avec Python http://pumpkinkaneko.com/python%E3%81%A7libsvm%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B

Comment utiliser LIBSVM (python) http://liberte599.jimdo.com/2011/02/25/libsvm-python-%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/

FAQ livSVM également un contre un. Il déclare qu'il s'agit d'une mise en œuvre de.

Enregistrement et chargement des résultats d'apprentissage svmutil.svm_save_model('libsvm.model', m) m = svmutil.svm_load_model('libsvm.model')

Avec libSVM, il est possible de renvoyer non seulement le résultat du jugement mais aussi la probabilité au moment du jugement. Article de blog Détails des résultats de classification des numéros manuscrits du MNIST par SVM

** Articles utilisant OpenCV SVM **

[OpenCV-Python Tutorials >> Machine Learning >> Understanding SVM] (http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_ml/py_svm/py_svm_basics/py_svm_basics.html#svm-understanding)

OpenCV 2.4.11 Documentation [Support Vector Machines] (http://docs.opencv.org/2.4/modules/ml/doc/support_vector_machines.html#cvsvm-cvsvm)

Pour autant que j'ai lu la documentation, il semble qu'elle supporte également la classification multi-classes. En fait, j'ai couru un exemple plus tard pour le voir. (Il existe une expression appelée classification de classe n.) OpenCV SVM est disponible à partir de python ainsi que du langage C ++. À partir de python, vous pouvez facilement créer un graphique à l'aide de matplotlib, il est donc facile de vérifier le résultat. Une fois que vous savez que la méthode fonctionne, vous pouvez sauter le graphique et vous concentrer uniquement sur l'apprentissage et l'identification individuels. À ce moment-là, l'implémentation en langage C ++ sera simplifiée et un traitement à grande vitesse sera possible.

Jetez un œil aux exemples inclus dans la distribution standard d'OpenCV. Une classe SVM différente de cv2.SVM est définie. (La même interface est fournie pour faciliter la comparaison avec plusieurs méthodes.) (répertoire opencv) \ sources \ samples \ python2 digits.py (répertoire opencv) \ sources \ samples \ python2 letter_recog.py

OCR of Hand-written Digits http://docs.opencv.org/3.1.0/dd/d3b/tutorial_py_svm_opencv.html#gsc.tab=0

svm = cv2.SVM() svm.train(trainData,responses, params=svm_params) result = svm.predict_all(testData)

Vérifions l'emplacement des données pour faire fonctionner ce script.

[Svm avec python] (http://ffuyyo.blogspot.jp/2012/08/pythonsvm.html)

Exemple d'utilisation à partir de C ++ OpenCV diary (9) Non-linear SVM using kernel method

Avec OpenCV2 "train data must be floating-point matrix" Lorsque l'erreur de Il semble bon de changer les données du tableau de numpy données à train () en float32. Article de blog sur SVM d'OpenCV svm avec python A écrit la même chose

Si vous essayez de l'utiliser et obtenez une erreur, vous pouvez rechercher le message d'erreur dans le module C ++ d'origine. C'est peut-être le moyen le plus rapide d'y remédier. OpenCV-Return valeur de prédire () pour la classe SVM en Python

cv2.SVM.predict(sample[, returnDFVal]) → retva cv2.SVM.predict_all(samples[, results]) → results

La forme de numpy.array, qui est la valeur de retour de predict_all () de la classe SVM dans OpenCV-Python, est différente de la prediction () de SVM de scikit-learn. Enregistrement et chargement des résultats d'apprentissage Puisqu'il est enregistré en tant que fichier XML comme indiqué ci-dessous, il semble qu'il y ait peu de dépendances selon la version d'OpenCV. Cependant, tel quel, il ne convient pas pour cacher les résultats d'apprentissage, donc une certaine ingéniosité est requise. Le fichier de résultat save () dans digits.py ci-dessus était YAML.

model = cv2.SVM(points, labels)
# Store it by using OpenCV functions:
model.save("/path/to/model.xml")
# Now create a new SVM & load the model:
model2 = cv2.SVM()
model2.load("/path/to/model.xml")

[Answers.opencv.org/ Enregistrer et charger le modèle SVM d'OpenCV] (http://answers.opencv.org/question/5713/save-svm-in-python/) Il est également possible de sélectionner une instance de SVM avec la liaison Python d'OpenCV.

python


pickle.dump(model, open("save.pkl", 'w'))

Ce n'est pas une utilisation de SVM uniquement Un détecteur par HOG + SVM est préparé en OpenCV. La version CPU et la version GPU sont disponibles. Pour la documentation, reportez-vous au GPU et utilisez la version du CPU.

Object Detection gpu::HOGDescriptor

[Détection de personne avec HOG + SVM [OpenCV & Python]] (http://yusuke1581.hatenablog.com/entry/2014/11/26/153901)

OpenCV 3.1 est-il disponible et la transition d'OpenCV 2.x est-elle en cours?

Article sur la lignée OpenCV3.1? [Support Vector Machines (SVM)](http://wn55.web.fc2.com/cv2_SVM.html#Support Vector Machines (SVM, -Support-Vector-Machines))

** Outil d'évaluation des résultats d'apprentissage (scikit-learn.metrics) **

・ Évaluez les résultats d'apprentissage en utilisant des données qui n'ont pas été utilisées pour l'apprentissage. L'apprentissage automatique sans évaluation est impossible. Souvent, il donne de bons résultats uniquement pour les données utilisées pour la formation, Pour d'autres résultats, cela donne un résultat brutal. Lisez "Practical Machine Learning System". Vous pouvez voir à quel point la partie préparation et évaluation des données est importante. Que vous utilisiez SVM cv2, votre propre code python numpy ou autre chose scikit-learn.metrics est utile.

sklearn.metrics Classification metrics

Recognizing hand-written digits Dans sklearn.metrics.classification_report (attendu, prédit) sklearn.metrics.confusion_matrix(expected, predicted) Il est important de savoir comment est utilisé.

** Les données sont importantes **

Dans le domaine de l'apprentissage automatique, les données sont toujours importantes. Dans le cas d'une classification multi-classe, en se concentrant à la fois sur la valeur du taux de rappel et la valeur de précision dans sklearn.metrics.classification_report, il est possible de savoir quelle classification des données d'entraînement est manquante. En complétant les données d'apprentissage de la classification manquante, la valeur du taux de rappel et la valeur de précision devraient être améliorées. En répétant un tel processus, il devient un niveau qui peut être utilisé pour des problèmes réels.

Informations de référence:

** Bibliothèque équivalente Scikit-learn en C ++ **

En réponse à la question de savoir s'il existe une bibliothèque équivalente à scicit-learn en C ++, la bibliothèque suivante a été introduite. Si vous avez besoin d'une bibliothèque équivalente à scicit-learn en C ++, examinons.

The Shogun Machine Learning Toolbox Article de commentaire japonais Introduction to Machine Learning Library SHOGUN Article de commentaire japonais Comment utiliser le shogun Shark – Machine Learning 3.0

** Logiciel d'apprentissage automatique écrit en Java Weka **

Weka

** Remarque: ne pas corréler les paramètres **

La décorrélation des paramètres est également courante dans le domaine de l'analyse multivariée. La combinaison de (taille, IMC) est moins corrélée (ou peut être ignorée) que la combinaison de (taille, poids), elle convient donc comme variable explicative pour l'analyse multivariée.

N'utilisez pas de variables à forte corrélation entre les variables explicatives

Si la corrélation entre les variables explicatives est élevée, le résultat peut ne pas être possible.

Si la corrélation entre les variables explicatives est très élevée, le modèle de régression devient très instable.

Si la corrélation entre les variables explicatives est très élevée, le modèle de régression devient très instable. Ceci est une explication Cela signifie qu'il existe déjà une autre relation de régression linéaire entre les variables, et en ce sens Un tel phénomène est appelé «multi colinéarité». Empiriquement, la corrélation entre les variables explicatives S'il est égal ou supérieur à 0,7, on dit qu'il est dangereux. Afin de prêter attention à la colinéarité multiple, lors de l'analyse de régression, regardez d'abord la matrice de corrélation entre les variables explicatives. S'il existe une forte corrélation, il est nécessaire d'en exclure une des variables explicatives. À.

** Remarque: Liberté lors de l'écriture du modèle **

En ce qui concerne la liberté à accorder lors de la description d'un modèle, le montant appelé AIC (Akaike Information Amount Criteria) est une ligne directrice pour l'évaluation. [Critères de quantité d'informations Akaike](https://ja.wikipedia.org/wiki/%E8%B5%A4%E6%B1%A0%E6%83%85%E5%A0%B1%E9%87%8F% E8% A6% 8F% E6% BA% 96)

Au fur et à mesure que le nombre et l'ordre des paramètres augmentent, le degré de compatibilité avec les données de mesure peut être amélioré. Cependant, en revanche, il ne correspond pas au même type de données car il est obligé de s'adapter à des fluctuations accidentelles telles que le bruit (sans rapport avec la structure à mesurer).

** Pour ceux qui s'intéressent aux mathématiques **

Dans SVM, il est merveilleux qu'il soit projeté sur un espace multidimensionnel et rendu séparable, et que le calcul dans cet espace multidimensionnel soit réalisé par une technique appelée astuce du noyau sans augmenter la quantité de calcul. Au fait.

Cuda GPU-accelerated LIBSVM http://mklab.iti.gr/project/GPU-LIBSVM

Post-scriptum (03/06/2019)

"Apprentissage automatique pratique avec scicit-learn et TensorFlow" Dans le tableau de Chapitre 5 Support Vector Machine (SVM) Chapitre 8 Réduction de dimension Il y a. La norme de réalisation de la réduction de dimension dans l'analyse en composantes principales (ACP) et la classification par machine à vecteurs de support (SVM) est expliquée.

Postscript: Pourquoi SVM est utile même avec l'apprentissage en profondeur

Pour déterminer si l'apprentissage a été possible ou non, si nous considérons seulement qu'il suffit de séparer les données utilisées pour l'apprentissage et l'évaluation, ce sera OK si elles peuvent être séparées, quelle que soit leur proximité. À moins que vous ne vous trompiez, cela ne contribuera pas à la correction. C'est la situation dans la plupart des situations d'apprentissage en profondeur. C'est pourquoi on sait que la classification peut être trompée en ajoutant un bruit infime qui n'est pas remarqué par les humains. Méthode d'attaque contre le réseau neuronal convolutif - Induction d'une mauvaise classification-

D'autre part, en SVM, un mécanisme qui prend une grande zone de délimitation lors de la classification ( Il existe Maximiser la marge. Par conséquent, s'il peut être formulé avec SVM, je pense qu'il vaut mieux utiliser SVM.

Article de référence Implémentation SVM avec python

"Alors, comment se compare-t-il aux autres méthodes?"

SlideShare [Introduction à l'apprentissage automatique avec Python - Des bases au Deep Learning-] (http://www.slideshare.net/yasutomo57jp/pythondeep-learning-60544586?next_slideshow=1)

Recommended Posts

Découvrez SVM
Découvrez comment lancer Anaconda Prompt
Découvrez l'environnement Python de Cinema4D
Découvrons ROS (Robot Operating System)
J'ai essayé de découvrir les grandes lignes de Big Gorilla
les débutants en python ont essayé de le découvrir
Découvrez l'adresse MAC CentOS7 (HWADDR)
Découvrir les autorisations de fichiers et les super utilisateurs