[PYTHON] Maschinelles Lernen, verdammter Amateur, habe ich in 2 Monaten gelernt, bis das Produkt veröffentlicht wurde

Ein wenig maschinelles Lernen mit Scikit-Learn ist einfacher als das Erstellen einer kleinen Web-App mit LAMP. Unten finden Sie eine Zusammenfassung dessen, was ich in den zwei Monaten seit meinem Start gelernt habe.

Markieren

  1. Drei Dinge, die ich für wichtig hielt
  2. Überblick über maschinelles Lernen
  3. Über Scikit lernen
  4. Ein Wort zu Google Prediction API, Mahout, Spark, Cython

3 Dinge, die ich für wichtig hielt

1. Haben Sie Freunde, die gut im maschinellen Lernen sind

Wie bei jeder Technologie können Sie sicher vorgehen, indem Sie zuerst einen Freund fragen und sich einen Überblick verschaffen. Dieses Vertrauen macht es Ihnen schwerer, Ihr Herz zu brechen. @Fukkyy sagte mir, dass "Einführungsseiten schwierige Begriffe verwenden, um mich zu erschrecken, aber wenn ich eine Bibliothek benutze, ist maschinelles Lernen nicht beängstigend", und ich ignorierte die Einführungsseiten auf den Straßen und fing an, die Bibliothek zu betreten, so dass es einfach war, sie zu betreten. .. Wir haben von @ ysks3n verschiedene Ratschläge erhalten, z. B. das Löschen von Dimensionen und die ordnungsgemäße Verwendung jedes Algorithmus. Wenn Ihnen die Grundlagen nichts ausmachen, kann ich Ihnen praktische Übungen beibringen. Rufen Sie mich an, wenn Sie interessiert sind (http://qiita.com/puriketu99/items/7370901978887fe59a49).

\ # Danke euch beiden!

2. Reduzieren Sie die vertikale und horizontale Größe der Trainingsdaten

Wenn es vertikal und horizontal ist, gibt es ein Gradproblem, aber es ist oft besser, die Horizontale zu schneiden, um zur Leistung beizutragen.

Die Datenmenge, die nach Belieben in die Bibliothek geworfen werden konnte, war viel geringer als ich erwartet hatte. Es bestand die unbegründete Annahme, dass bei einer Datenmenge von etwa 30 GB auf eine Verarbeitung verzichtet werden könnte. In scikit-learn gibt es eine Bibliothek, die eine Dimensionskomprimierung (horizontale Größenreduzierung) durchführt. Daher ist es gut, sie zu verwenden. Ich habe im folgenden Beispielcode geschrieben, wie die Abmessungen komprimiert werden. Wenn Sie von einer kleinen Anzahl von Dimensionen ausgehen und diese erhöhen, kann sich die richtige Antwortrate erhöhen. Es ist daher besser, an diesem Punkt anzuhalten. Vertikale Daten sollten auch gelöscht werden, wenn sie nicht mit dem Lernen zusammenhängen.

3. Das Schreiben von Code ist schneller als das Studium der Theorie

Wie ich oben geschrieben habe, gibt es einige schwierige Einführungsseiten auf den Straßen, aber ich denke, dass Anfänger den Beispielcode verwenden können, bevor sie die Theorie studieren. Beim maschinellen Lernen werden je nach Bedarf verschiedene Modelle verwendet. Wenn Sie jedoch jedes Modell im Detail untersuchen, wird geschrieben, dass es schwierig ist und dazu neigt, Wärme zu verschwenden. Wenn Sie also Scikit-Learn verwenden, können Sie das Modell verwenden. Ich denke, Sie sollten alle ausprobieren und die mit der höchsten Genauigkeitsrate verwenden. Sie können Modelle wechseln, indem Sie nur eine Zeile neu schreiben. Ich habe den Beispielcode unten geschrieben. Wenn Sie mehr Präzision benötigen und es sich leisten können, studieren Sie.

Übersicht über maschinelles Lernen

Es gibt zwei Hauptarten des maschinellen Lernens (mit einem Lehrer).

1. Zurück

Es ist eine Methode zur Vorhersage numerischer Werte aus Daten. Sie können es beispielsweise verwenden, um die Beziehung zur Temperatur aus dem vergangenen Wetter, dem Ort und dem Datum zu lernen und dann die Temperatur bei der nächsten Eingabe von Wetter und Ort vorherzusagen, wie unten gezeigt.

Lernen Sie zunächst die folgenden Daten und die Beziehung zwischen Merkmalen (Wetter, Ort, Datum) und Temperatur.

Temperatur Wetter Ort Zeit
19 Fein Tokio 111
29 Regen Osaka 311
19 Wolkig Fukuoka 121
29 Fein Kumamoto 11
39 Regen Kyoto 311
29 Wolkig Aichi 131
19 Fein Nara 211
9 Regen Ishikawa 141
49 Wolkig Hölle 151

Verwenden Sie als Nächstes die Lernergebnisse, um die Temperatur vorherzusagen, wenn die Funktion bereitgestellt wird.

Temperatur Wetter Ort Datum
? Regen Tokio 111

2. Klassifizierung

Eine Methode zur Vorhersage der Klassifizierung anhand von Daten. Sie können beispielsweise die Beziehung zwischen dem von Ihnen gelesenen Buch und der Klassifizierung von Männern und Frauen lernen und damit das Geschlecht der Person klassifizieren, wenn Sie das nächste Mal die Informationen des von Ihnen gelesenen Buches eingeben.

Lernen Sie zunächst die folgenden Daten und die Beziehung zwischen den Merkmalen (unabhängig davon, ob Sie jeden Cartoon lesen oder nicht) und dem Geschlecht.

Sex Die stärkste Legende Kurosawa Jäger Jäger Glasmaske
Mann lesen lesen Nicht lesen
Mann Nicht lesen lesen Nicht lesen
Frau Nicht lesen lesen lesen
Mann Nicht lesen lesen Nicht lesen
Frau Nicht lesen lesen lesen
Mann lesen lesen Nicht lesen
Mann lesen lesen lesen
Frau Nicht lesen lesen lesen
Mann lesen lesen Nicht lesen

Verwenden Sie als Nächstes die erlernten Ergebnisse, um das Geschlecht vorherzusagen, wenn die Funktion angegeben wird.

Sex Die stärkste Legende Kurosawa Jäger Jäger Glasmaske
? lesen lesen lesen

\ # Es gibt auch Cluster von unbeaufsichtigtem Lernen, aber ich behandle es nicht, deshalb werde ich es dieses Mal ausschließen

Über Scikit lernen

Es ist eine traumhafte Bibliothek, in der jeder maschinell lernen kann.

sk_learn_sample.py


# -*- coding: utf-8 -*-
from sklearn.svm import LinearSVC
from sklearn.ensemble import AdaBoostClassifier,ExtraTreesClassifier ,GradientBoostingClassifier, RandomForestClassifier
from sklearn.decomposition import TruncatedSVD
from sklearn import datasets
from sklearn.cross_validation import cross_val_score


#Trainingsdaten vorbereiten
iris     = datasets.load_iris() #An die Bibliothek angehängte Beispieldaten
features = iris.data            #Funktionsdaten
                                #Im obigen Klassifizierungsbeispiel entspricht es dem Wetter, dem Ort, dem Datum und ob Sie jeden Manga gelesen haben oder nicht.
labels   = iris.target          #Richtige Antwortdaten für die Merkmalsmenge
                                #Im obigen Klassifizierungsbeispiel entspricht es Temperatur und Geschlecht.

#Komprimieren Sie die Bemaßungsmengenabmessung
#Behandeln Sie Merkmale ähnlicher Art als gleich
lsa = TruncatedSVD(2)
reduced_features = lsa.fit_transform(features)

#Ich bin mir nicht sicher, welches Modell ich verwenden soll, also habe ich es im Auge behalten. Töte vorerst alle mit den Standardeinstellungen.
clf_names = ["LinearSVC","AdaBoostClassifier","ExtraTreesClassifier" ,"GradientBoostingClassifier","RandomForestClassifier"]
for clf_name in clf_names:
  clf    = eval("%s()" % clf_name) 
  scores = cross_val_score(clf,reduced_features, labels,cv=5)
  score  = sum(scores) / len(scores)  #Messen Sie die richtige Antwortrate des Modells
  print "%s Punktzahl:%s" % (clf_name,score)

#LinearSVC-Punktzahl:0.973333333333
#AdaBoost Classifier Punktzahl:0.973333333333
#ExtraTrees Classifier Punktzahl:0.973333333333
#GradientBoostingClassifier-Punktzahl:0.966666666667
#RandomForestClassifier-Punktzahl:0.933333333333

Ein Wort zu Google Prediction API, Mahout, Spark, Cython

Google Prediction API Die Einführung kostet weniger als Sk-Learn, aber der Nachteil ist, dass die Datenmenge, die verarbeitet werden kann, gering ist.

Mahout Es scheint ein Werkzeug zu sein, das verteiltes maschinelles Lernen mit Hadoop durchführen kann, aber die Person, die die Mahout-Serie auf Japanisch geschrieben hat, hat Spark Mahout empfohlen. Dies ist ein Apache-Projekt.

Spark Ich weiß nicht viel über den Unterschied zu Mahout, aber eine großartige Person hat diesen empfohlen. Das Scikit-Lernen hat ziemlich gut funktioniert, also habe ich es einfach berührt und sofort aufgehört. Es ist auch ein Apache-Projekt.

Cython Es ist explosiv, aber manchmal funktioniert der Code, der in Python funktioniert hat, in Cython nicht, oder der Prozess, der parallel verarbeitet wurde, ist noch am Leben. Wenn Sie ein Problem auf niedriger Ebene haben, können Sie versuchen, es normal in Python auszuführen.

Zusammenfassung

Wenn Sie einen detaillierten Freund haben, fragen Sie diese Person. Frag mich, ob du keine Freunde hast. Lassen Sie uns Technologie austauschen. Vorerst möchte ich, dass Sie scicit-learn installieren, den obigen Beispielcode einfügen und ausführen.

\ # Das Produkt, das ich dieses Mal hergestellt habe, ist ausgelagert, daher habe ich es nicht geöffnet. Nicht schlecht. Es war eine Webanwendung, die \ # [Probleme wie dieses] löste (http://qiita.com/puriketu99/items/3c6325673f876bb49370).

Recommended Posts

Maschinelles Lernen, verdammter Amateur, habe ich in 2 Monaten gelernt, bis das Produkt veröffentlicht wurde
Was ich vor einem Systemingenieur gelernt habe, der den Liefertermin nicht einhalten konnte, war ohne Verzögerung ein wenig zuverlässig
Was ich über KI / maschinelles Lernen mit Python gelernt habe (1)
Was ich über KI / maschinelles Lernen mit Python gelernt habe (3)
Was ich durch die Teilnahme am ISUCON10-Qualifying gelernt habe
Was ich über KI / maschinelles Lernen mit Python gelernt habe (2)
Ich habe versucht, die Genauigkeit von Modellen für maschinelles Lernen mit Kaggle als Thema zu vergleichen.
Eine Geschichte, nach der ich süchtig war, als ich in Go nil als Funktionsargument angab
Wörter, die mich als Programmieranfänger interessiert haben
Ich habe ein Skript geschrieben, das das Bild in zwei Teile teilt
Was ich in Python gelernt habe
Was ich im letzten Jahr als ältere Person gelernt habe (für mein Alter ungeeignet)
Was ich durch das Schreiben einer Python Pull-Anfrage zum ersten Mal in meinem Leben gelernt habe
Obwohl ich wusste, dass der Kurs für maschinelles Lernen im Beispiel gut war, habe ich ihn zwei Jahre lang durchlaufen, aber er war immer noch gut
Menschen merken sich gelerntes Wissen im Gehirn, wie man gelerntes Wissen im maschinellen Lernen auswendig lernt
(Maschinelles Lernen) Ich habe versucht, den EM-Algorithmus in der gemischten Gaußschen Verteilung sorgfältig mit der Implementierung zu verstehen.