[PYTHON] Informieren Sie sich über SVM

Dies ist ein Memo, das ich geschrieben habe, um die Beziehung zwischen der SVM von scikit-learn und anderen SVMs zu untersuchen. Es wurde noch nicht organisiert. Ich bin von der Bequemlichkeit des Scikit-Lernens angezogen, aber für die Verwendung in der C ++ - Sprache ist es notwendig, auch auf andere Implementierungen zu verweisen, und ich untersuche dies.

In letzter Zeit ist Deep Learning ein heißes Thema im maschinellen Lernen geworden. Support Vector Machine (SVM) ist leistungsfähig und einfach zu bedienen. Ich glaube nicht, dass es seine Brillanz verloren hat.

** Der Teil, der keine Rolle spielt, welche Implementierung Sie verwenden **

Master SVM! 8 Kontrollpunkte http://qiita.com/pika_shi/items/5e59bcf69e85fdd9edb2

Unterstützung von Vektormaschinen und anderen Techniken des maschinellen Lernens http://qiita.com/ynakayama/items/afa2212cf561f2067606

Für den Erfolg des maschinellen Lernens ist es wichtig, über ausreichende Kenntnisse über die Vorverarbeitung zur Verwendung von SVM und den Teil der gegenseitigen Überprüfung zu verfügen, was nicht davon abhängt, welche Implementierung verwendet wird.

Für diejenigen, die keine Probleme mit Englisch haben, empfehlen wir die folgenden Dokumente. A Practical Guide to Support Vector Classification

Die Hauptkomponentenanalyse kann vor der SVM verwendet werden. Die Merkmale der Hauptkomponentenanalyse sind

  1. Da die als Ergebnis der Hauptkomponentenanalyse erhaltenen Eigenvektoren orthogonal sind, sind die erhaltenen Koeffizienten Es ist eine Kombination von Variablen, die keine Korrelation haben.   Das Erstellen eines Modells unter Verwendung korrelierter Variablen führt tendenziell zu unbeabsichtigten Phänomenen, erleichtert jedoch den Umgang mit orthogonalen und nicht korrelierten Parametern (Hinweis).

  2. Es zeigt quantitativ, welche Art von Schwankungen in den tatsächlichen Datenschwankungen enthalten sind und wie viel von den Schwankungen bis zum Eigenvektor welcher Ordnung erklärt werden kann. Obwohl dies im Prinzip möglich ist, wird daher die variable Komponente, die praktisch ignoriert werden kann, klar, und es wird möglich, das Phänomen zu erfassen, indem nur auf die Komponente fokussiert wird, auf die fokussiert werden soll.

Daher wird die Hauptkomponentenanalyse zum Zweck der Dimensionskomprimierung verwendet. Das Interessante an der Dimensionskomprimierung ist, dass das Lernen mit Dimensionskomprimierung bessere Ergebnisse beim maschinellen Lernen liefern kann als das Lernen ohne Dimensionskomprimierung.

Machine Learning with Scikit Learn (Part I) Wenn die Originalbilddaten unverändert verwendet werden, beträgt die Genauigkeit nur etwa 40%. Wenn sie jedoch zu einem eindeutigen Gesicht komprimiert und dann klassifiziert werden, beträgt die Genauigkeit etwa 85%.

Sie können herausfinden, welche Art von Daten als Ergebnis der Dimensionskomprimierung erhalten wurden, indem Sie die dimensional komprimierten Daten wieder in den ursprünglichen Raum projizieren. Ein Beispiel ist im folgenden Artikel über PCA als Bild zu sehen. Verwenden der PCA von sklearn.decomposition So führen Sie eine PCA mit Python durch

PCA (n_components = 2) in PCA von Scikit-Learn Geben Sie die Anzahl der Dimensionen nach der Dimensionsreduzierung mit n_components usw. an.

Artikel zur Implementierung von PCA mit numpy Code für die Hauptkomponentenanalyse mit Python

Die OpenCV PCA-Klasse in Python ist die cv2.PCACompute-Klasse. 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 Geben Sie in maxComponents die Anzahl der Dimensionen nach der Dimensionsreduzierung an.

Artikel mit PCA mit OpenCV / C ++ Hauptkomponentenanalyse von Bildern [Ich habe versucht, die Hauptkomponenten mit OpenCV zu analysieren] (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/)

Implementierung der Hauptkomponentenanalyse (PCA) durch OpenCV

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

Der Absolutwert des Koeffizienten des Eigenvektors in der auf diese Weise erhaltenen Hauptkomponentenanalyse nimmt mit zunehmender Ordnung ab. Wenn sie nicht berührt werden, werden Parameter mit kleinen Absolutwerten von SVM nicht vollständig genutzt. Daher werden in SVM die Eingabedaten standardisiert und die Größe einheitlich gemacht.

Im Bereich des maschinellen Lernens ist es häufig der Fall, dass eine Projektion für andere Daten unter Verwendung des Ergebnisses berechnet wird, das durch die Hauptkomponentenanalyse angepasst und als Eingabewert für maschinelles Lernen verwendet wird. Lassen Sie uns das Framework zum Speichern und Laden der Daten überprüfen, damit sie mithilfe der Daten des Ergebnisses der Hauptkomponentenanalyse projiziert werden können.

Um zu verstehen, welche Art von linearer Algebra die Hauptkomponentenanalyse tatsächlich ausführt, ist die Erklärung der Hauptkomponentenanalyse PCA in "Practical Computer Vision" leicht zu verstehen. Wenn Sie nur Scikit-Learn- oder OpenCV-Code verwenden, ist verborgen, welche Art von linearer Algebra ausgeführt wird. Bei der Hauptkomponentenanalyse wird es leicht verständlich, wenn die Anzahl der Proben im Vergleich zur Anzahl der Dimensionen der Merkmalsmenge klein ist, dass die Größe des für die Matrixberechnung verwendeten Speichers durch die Dimension der Anzahl der Proben bestimmt wird. Das Sammeln von Verständnis für solche Dinge hilft bei der Lösung tatsächlicher Probleme.

Es wird auch empfohlen, den Eigenvektor (oder das Eigenbild im Fall eines Bildes) zu überprüfen, wenn eine Hauptkomponentenanalyse durchgeführt wird. Wenn Sie wissen, um welche Schwankungen es sich handelt, erhalten Sie Hinweise zum maschinellen Lernen. Es wird Ihnen helfen zu verstehen, wie die Verteilung von Trainingsdaten aussieht.

** PCA-Bibliothek **

scikit-learn OpenCV Andere
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
Implementierungsbeispiel von numpy
http://www.yasutomo57jp.com/2012/02/24/python%E3%81%A7pca/
Projektion pca.transform(X) pcacompute.project(X)
Hauptkomponentenanalyse in Bildern Einzigartiges Gesicht http://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html Hauptkomponentenanalyse von Bildern http://suzuichibolgpg.blog.fc2.com/blog-entry-62.html Beispiel für die Hauptkomponentenanalyse der Schriftart 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
Codebeispiel für die Dimensionskomprimierung from sklearn import decomposition
pca = decomposition.PCA(n_components=3)
pca.fit(X)
pca.transform(X)
cv2.PCACompute(data[, mean[, eigenvectors[, maxComponents]]]) -> mean, eigenvectors

** SVM-Bibliothek **

Im Folgenden finden Sie drei Beispiele für SVM-Bibliotheken, die in der Python-Umgebung verwendet werden können. Bitte verwenden Sie es entsprechend der gewünschten Arbeit. ・ Scikit-lernen: Eine Umgebung mit einer umfangreichen Bibliothek für maschinelles Lernen. Die in Python verwendete Schnittstelle weist ein hohes Maß an Gemeinsamkeit auf, selbst wenn der Lernalgorithmus geändert wird, sodass sie für Versuch und Irrtum geeignet ist. ・ LibSVM: LibSVM-Entwickler haben eine Python-Bindung veröffentlicht. Es entspricht spärlichen Lerndaten. ・ OpenCV: Es ist praktisch, in Zukunft auf die OpenCV / C ++ - Umgebung umzusteigen. Die OpenCV-Python-Bindungsschnittstelle ist jedoch flüchtig und die Dokumentation kann möglicherweise nicht mithalten. ・ Dlib Es gibt auch eine SVM-Implementierung in dlib, die sowohl in C ++ als auch in Python verwendet werden kann. http://dlib.net/python/#dlib.svm_c_trainer_histogram_intersection

LIBLINEAR - Eine Bibliothek für große lineare Klassifikation

Die folgende Tabelle befindet sich im Aufbau

scikit-learn libSVM OpenCV
URL http://scikit-learn.org/stable/ https://www.csie.ntu.edu.tw/~cjlin/libsvm/ http://opencv.org/
Modul laden from sklearn import svm from svm import * import cv2
Lernen clf = svm.SVC(C=22, gamma=2-11) m = svm_train(prob, param) svm = cv2.SVM()
Lernen clf.fit(x,y) m = svm_train(prob, param) svm.train(x, y)
Beurteilung clf.predict(x) result = svm_predict(test_label, test_data , t) result = svm.predict_all(testData)
Multi-Klasse 1 zu 1 1 zu 1 1 zu 1
Modell speichern s = pickle.dumps(clf) svmutil.svm_save_model('libsvm.model', m) svm.save("/path/to/model.xml")
Modell laden clf2 = pickle.loads(s) m = svmutil.svm_load_model('libsvm.model') svm2 = cv2.SVM();svm2.load("/path/to/model.xml")
Vorhandensein oder Nichtvorhandensein einer Wahrscheinlichkeitsschätzung Ja Klassifikator= svm.SVC(gamma=0.001, probability=True); classifier.fit(X, Y);predicted_Prob = classifier.predict_proba(Xnew) Ja
Beispiel für Irisdaten http://scikit-learn.org/stable/auto_examples/svm/plot_iris.html Speicherort der Daten https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html#iris
C/C++Mit oder ohne Keiner Ja Ja
Lizenz commercially usable - BSD license the modified BSD license 3-clause BSD License

** Artikel, die die Implementierung von Scikit-Learn nutzen **

Da hat Scikit-learn eine Bibliothek zum maschinellen Lernen Einfacher Einstieg in 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)

Der Beispielcode im Blog kann aus einer anderen Perspektive als der Beispielcode auf der Scicit-Learn-Site geschrieben werden.

Python: Versuchen Sie, handgeschriebene numerische Scikit-Learn-Datensätze mit SVM zu klassifizieren http://blog.amedama.jp/entry/2016/01/03/143258

scikit-learn Recognizing hand-written digits

Mehrklassen-SVM mit Scikit-Learn http://qiita.com/sotetsuk/items/3a5718bb1f945a383ceb

Versuchen Sie eine Klassifizierung in mehreren Klassen mit Scikit-Learn-SVM http://minus9d.hatenablog.com/entry/2015/04/19/190732

[Python: Versuchen Sie, Iris-Datasets mit unterstützten Vektormaschinen zu klassifizieren] (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

Es steht geschrieben, dass die Identifikation der n-Klasse eins zu eins implementiert wird. scikit-learn [SVC and NuSVC implement the “one-against-one” approach (Knerr et al., 1990) ] (http://scikit-learn.org/stable/modules/svm.html)

Es scheint, dass es einfacher ist, Genauigkeit zu erreichen, indem eine Eins-zu-Eins-Identifizierung der n-Klasse implementiert wird. Eins-zu-andere-Basisimplementierungen haben enge Grenzen, die sie in einem mehrdimensionalen Raum unterscheiden.

Das Speichern und Laden eines Modells in [scikit-learn Model Persistence] wird vorgestellt. (http://scikit-learn.org/stable/modules/model_persistence.html)

Die hier gezeigte Methode zum Speichern einer Instanz des Klassifikators mit pickle erfordert, dass der Sparer und der Leser dieselbe Version von scicit-learn verwenden.

python


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

Der folgende Artikel stellt neben SVM weitere interessante Lerntechniken vor. Schon das Betrachten des Bildes macht Spaß. Machine Learning with Scikit Learn (Part I)

Es scheint, dass die Hauptkomponentenanalyse und SVM kompatibel sind, und ich habe das folgende Beispiel gefunden. scikit-learn [Faces recognition example using eigenfaces and SVMs] (http://scikit-learn.org/stable/auto_examples/applications/face_recognition.html)

** Artikel mit libSVM **

Wenn die Algorithmen, die Sie verwenden sollten, auf SVM eingegrenzt sind und Sie beabsichtigen, sie in der C / C ++ - Sprache erneut zu implementieren, können Sie libSVM, eine bewährte Bibliothek, direkt verwenden. libSVM kann auch in mehreren Klassen lernen. Im Fall von libSVM ist das Lernen auch dann möglich, wenn die Funktionen spärlich sind.

libSVM verfügt über ein exe-Format, das über die Befehlszeile verwendet werden kann, ein Python-Modul, das über Python verwendet werden kann, und ein Modul, das über die C-Sprache verwendet werden kann. Stellen Sie daher sicher, dass es in einer Ebene funktioniert, und verwenden Sie es dann in einer anderen Ebene. Scheint einfach.

LIBSVM Tools Ist immer noch aktualisiert, so dass auch diejenigen, die es früher gut angeschaut haben, einen erneuten Besuch wert sind.

LIBSVM FAQ

GPU-accelerated LIBSVM

Verwenden Sie LIBSVM mit Python http://hy-adversaria.blogspot.jp/2011/04/pythonlibsvm.html

[Python] Hinweise zur Verwendung von SVM aus Python [SVM] http://gasser.blog114.fc2.com/blog-entry-498.html

Ich habe FizzBuzz in Python mit der Support Vector Machine (Bibliothek LIVSVM) geschrieben. http://qiita.com/cof/items/e02ada0adb1106635ac9

Ich habe versucht, Daten mit LIBSVM vorherzusagen 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/

Einführung in Python zur Toto-Vorhersage [Teil 3] Verwenden von SVM mit Python (Teil 2) Schneiden Sie einen Artikel aus http://blogs.yahoo.co.jp/gdg00431/2211049.html

Installieren Sie libsvm mit 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

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

livSVM FAQ auch eins gegen eins. Es heißt, dass es sich um eine Implementierung von handelt.

Lernergebnisse speichern und laden svmutil.svm_save_model('libsvm.model', m) m = svmutil.svm_load_model('libsvm.model')

Mit libSVM ist es möglich, nicht nur das Urteilsergebnis, sondern auch die Wahrscheinlichkeit zum Zeitpunkt des Urteils zurückzugeben. Blog-Artikel Details der handschriftlichen MNIST-Nummernklassifizierungsergebnisse von SVM

** Artikel mit 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)

Soweit ich die Dokumentation gelesen habe, scheint sie auch die Klassifizierung mehrerer Klassen zu unterstützen. Tatsächlich habe ich ein späteres Beispiel ausgeführt, um es zu sehen. (Es gibt einen Ausdruck namens n-Klassen-Klassifikation.) OpenCV SVM ist sowohl in Python als auch in der C ++ - Sprache verfügbar. Mit Python können Sie mit matplotlib ganz einfach ein Diagramm erstellen, sodass Sie das Ergebnis leicht überprüfen können. Sobald Sie wissen, dass die Methode funktioniert, können Sie die grafische Darstellung überspringen und sich ausschließlich auf das individuelle Lernen und Identifizieren konzentrieren. Zu diesem Zeitpunkt wird die Implementierung in der C ++ - Sprache schlank sein und eine Hochgeschwindigkeitsverarbeitung wird möglich sein.

Schauen Sie sich die Beispiele an, die in der Standard-OpenCV-Distribution enthalten sind. Eine SVM-Klasse, die sich von cv2.SVM unterscheidet, ist definiert. (Dieselbe Schnittstelle erleichtert den Vergleich mit mehreren Methoden.) (opencv-Verzeichnis) \ sources \ samples \ python2 digits.py (opencv-Verzeichnis) \ 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)

Lassen Sie uns den Speicherort der Daten überprüfen, damit dieses Skript funktioniert.

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

Anwendungsbeispiel aus C ++ OpenCV-Tagebuch (9) Nichtlineare SVM mit Kernel-Methode

Mit OpenCV2 "train data must be floating-point matrix" Wenn der Fehler von Es scheint gut, die Array-Daten von numpy, die train () gegeben wurden, in float32 zu ändern. Blogartikel über SVM von OpenCV svm mit Python Schrieb auch das gleiche

Wenn Sie versuchen, es zu verwenden und eine Fehlermeldung erhalten, können Sie im ursprünglichen C ++ - Modul nach der Fehlermeldung suchen. Es kann der schnellste Weg sein, damit umzugehen. OpenCV-Rückgabewert von Predict () für die SVM-Klasse in Python

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

Die Form von numpy.array, die den Rückgabewert von Predict_all () der SVM-Klasse in OpenCV-Python darstellt, unterscheidet sich von Predict () von SVM von Scikit-Learn. Lernergebnisse speichern und laden Da es wie unten gezeigt als XML-Datei gespeichert wird, scheint es abhängig von der OpenCV-Version nur wenige Abhängigkeiten zu geben. Da es jedoch nicht geeignet ist, die Lernergebnisse zu verbergen, ist ein gewisser Einfallsreichtum erforderlich. Die save () - Ergebnisdatei für digits.py oben war 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/ SVM-Modell von OpenCV speichern und laden] (http://answers.opencv.org/question/5713/save-svm-in-python/) Es ist auch möglich, eine Instanz von SVM mit der Python-Bindung von OpenCV aufzunehmen.

python


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

Dies ist keine Verwendung von SVM allein In OpenCV wird ein Detektor von HOG + SVM vorbereitet. Es sind sowohl die CPU-Version als auch die GPU-Version verfügbar. Die Dokumentation finden Sie in der GPU und verwenden Sie die CPU-Version.

Object Detection gpu::HOGDescriptor

[Personenerkennung mit HOG + SVM [OpenCV & Python]] (http://yusuke1581.hatenablog.com/entry/2014/11/26/153901)

Ist OpenCV 3.1 freigegeben und schreitet der Übergang von OpenCV 2.x voran?

OpenCV3.1 Systemartikel? [Support Vector Machines (SVM)](http://wn55.web.fc2.com/cv2_SVM.html#Support Vector Machines (SVM, -Support-Vector-Machines))

** Tool zur Bewertung der Lernergebnisse (scikit-learn.metrics) **

・ Bewerten Sie die Lernergebnisse anhand von Daten, die nicht zum Lernen verwendet wurden. Maschinelles Lernen ohne Bewertung ist nicht möglich. Oft liefert es nur für die für das Training verwendeten Daten gute Ergebnisse. Für andere Ergebnisse ergibt sich ein brutales Ergebnis. Lesen Sie "Praktisches maschinelles Lernsystem". Sie können sehen, wie wichtig der Teil der Datenaufbereitung und -auswertung ist. Egal, ob Sie cv2 SVM, Ihren eigenen numpy Python-Code oder etwas anderes verwenden scikit-learn.metrics ist nützlich.

sklearn.metrics Classification metrics

Recognizing hand-written digits In sklearn.metrics.classification_report (erwartet, vorhergesagt) sklearn.metrics.confusion_matrix(expected, predicted) Es ist sinnvoll zu wissen, wie verwendet wird.

** Daten sind wichtig **

Im Bereich des maschinellen Lernens sind Daten nach wie vor wichtig. Bei der Klassifizierung mehrerer Klassen kann durch Fokussieren sowohl des Rückrufratenwerts als auch des Genauigkeitswerts in sklearn.metrics.classification_report festgestellt werden, welche Klassifizierung von Trainingsdaten fehlt. Durch die Ergänzung der Trainingsdaten der fehlenden Klassifizierung sollten der Rückrufratenwert und der Präzisionswert verbessert werden. Durch Wiederholen eines solchen Prozesses wird es zu einer Ebene, die für tatsächliche Probleme verwendet werden kann.

Referenzinformationen:

** Scikit-Lernäquivalentbibliothek in C ++ **

Als Antwort auf die Frage, ob es in C ++ eine Bibliothek gibt, die scicit-learn entspricht, wurde die folgende Bibliothek eingeführt. Wenn Sie eine Bibliothek benötigen, die Scicit-Learn in C ++ entspricht, lassen Sie uns dies untersuchen.

The Shogun Machine Learning Toolbox Japanischer Kommentarartikel Einführung in die Bibliothek für maschinelles Lernen SHOGUN Japanischer Kommentarartikel Verwendung von Shogun Shark – Machine Learning 3.0

** In Java Weka geschriebene Software für maschinelles Lernen **

Weka

** Hinweis: Korrelieren Sie keine Parameter **

Das Unkorrelieren der Parameter ist auch im Bereich der multivariaten Analyse üblich. Die Kombination von (Größe, BMI) ist weniger korreliert (oder kann ignoriert werden) als die Kombination von (Größe, Gewicht), sodass sie als erklärende Variable für die multivariate Analyse geeignet ist.

Verwenden Sie keine Variablen mit hoher Korrelation zwischen erklärenden Variablen

Wenn die Korrelation zwischen den erklärenden Variablen hoch ist, ist das Ergebnis möglicherweise nicht möglich.

Wenn die Korrelation zwischen den erklärenden Variablen sehr hoch ist, wird das Regressionsmodell sehr instabil.

Wenn die Korrelation zwischen den erklärenden Variablen sehr hoch ist, wird das Regressionsmodell sehr instabil. Dies ist eine Erklärung Dies bedeutet, dass zwischen den Variablen bereits eine weitere lineare Regressionsbeziehung besteht, und in diesem Sinne ist dies der Fall Ein solches Phänomen wird als "Multikolinearität" bezeichnet. Empirisch die Korrelation zwischen erklärenden Variablen Wenn es 0,7 oder mehr ist, wird es als gefährlich bezeichnet. Um die multiple Co-Linearität zu berücksichtigen, betrachten Sie bei der Durchführung einer Regressionsanalyse zunächst die Korrelationsmatrix zwischen den erklärenden Variablen. Wenn eine starke Korrelation besteht, muss eine von den erklärenden Variablen ausgeschlossen werden. Zu

** Hinweis: Freiheit beim Schreiben des Modells **

In Bezug darauf, wie viel Freiheit bei der Beschreibung eines Modells eingeräumt werden sollte, ist der als AIC (Akaike Information Amount Criteria) bezeichnete Betrag eine Richtlinie für die Bewertung. [Akaike Information Amount Criteria](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)

Mit zunehmender Anzahl und Reihenfolge der Parameter kann der Kompatibilitätsgrad mit den Messdaten verbessert werden. Andererseits passt es jedoch nicht zu der gleichen Art von Daten, da es gezwungen ist, zufälligen Schwankungen wie Rauschen (unabhängig von der zu messenden Struktur) zu entsprechen.

** Für diejenigen, die sich für Mathematik interessieren **

In SVM ist es wunderbar, dass es auf einen mehrdimensionalen Raum projiziert und trennbar gemacht wird und dass die Berechnung in diesem mehrdimensionalen Raum durch eine Technik namens Kernel-Trick realisiert wird, ohne den Rechenaufwand zu erhöhen. Apropos.

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

Nachtrag (2019.06.03)

"Praktisches maschinelles Lernen mit Scicit-Learn und TensorFlow" In der Tabelle von Kapitel 5 Support Vector Machine (SVM) Kapitel 8 Dimensionsreduzierung Es gibt. Der Standard für die Durchführung einer Dimensionsreduktion bei der Hauptkomponentenanalyse (PCA) und die Klassifizierung nach Support Vector Machine (SVM) wird erläutert.

Nachtrag: Warum SVM auch beim Deep Learning nützlich ist

Wenn wir bei der Feststellung, ob Lernen möglich war oder nicht, nur der Ansicht sind, dass es ausreicht, die für das Lernen und die Auswertung verwendeten Daten zu trennen, ist es in Ordnung, wenn sie getrennt werden können, egal wie nahe sie sind. Wenn Sie keinen Fehler machen, trägt dies nicht zur Korrektur bei. Das ist die Situation in den meisten Situationen des tiefen Lernens. Aus diesem Grund ist bekannt, dass die Klassifizierung durch Hinzufügen eines winzigen Geräusches, das vom Menschen nicht bemerkt wird, getäuscht werden kann. Angriffsmethode gegen Faltungsneurale Netze - Induktion von Fehlklassifizierungen

In SVM hingegen ein Mechanismus, der beim Klassifizieren einen großen Grenzbereich einnimmt ( Es gibt Marge maximieren. Wenn es mit SVM formuliert werden kann, ist es meiner Meinung nach besser, SVM zu verwenden.

Referenzartikel SVM-Implementierung mit Python

"Wie ist es dann mit anderen Methoden zu vergleichen?"

SlideShare [Einführung in maschinelles Lernen mit Python - Von den Grundlagen zum Deep Learning -] (http://www.slideshare.net/yasutomo57jp/pythondeep-learning-60544586?next_slideshow=1)

Recommended Posts

Informieren Sie sich über SVM
Informieren Sie sich über den Start von Anaconda Prompt
Informieren Sie sich über die Python-Umgebung von Cinema4D
Informieren wir uns über ROS (Robot Operating System)
Ich habe versucht, die Umrisse von Big Gorilla herauszufinden
Python-Anfänger versuchten es herauszufinden
Finden Sie die CentOS7 MAC-Adresse (HWADDR) heraus
Informieren Sie sich über Dateiberechtigungen und Superuser