[PYTHON] Ein-Klick-Datenvorhersage für das Feld, realisiert durch vollautomatisches maschinelles Lernen

Ich bin der Meinung, dass die feldbasierte Nutzung von Daten, einschließlich maschinellem Lernen, besser funktioniert. Dies liegt daran, dass Sie von oben nach unten Folgendes tun.

m_dq.gif

Dann ...

Und ...

gd_test.gif

Ja.

Dieser Artikel ist eine Idee + Implementierung zum Üben der feldbasierten Nutzung des maschinellen Lernens. Insbesondere betonen wir die folgenden drei Punkte.

Mit anderen Worten, es kann leicht in das Geschäftssystem integriert werden, das Sie jeden Tag verwenden, und es ist einfach zu bedienen, und selbst wenn Sie einen Fehler machen, können Sie es viele Male wiederholen. Dieses Mal haben wir Kintone als Geschäftssystem verwendet und es durch Integration implementiert. Ich werde den Mechanismus und die Funktion unten erklären.

Dieser Artikel basiert auf Ankündigung bei Cybozu Days 2016 Kintone Hack. In diesem Artikel werde ich auf technische Punkte eingehen, die ich während der Präsentation nicht berühren konnte.

Anwendungsbild: Datenvorhersage mit einem Klick

Das Folgende ist die Kintone-Anwendung für die Immobilienverwaltung. Hier werden der Name der Unterkunft und verschiedene Merkmale (Gehzeit vom Bahnhof, Alter usw.) eingegeben. Wenn Sie sich fragen: "Wie hoch ist die Miete für eine solche Immobilie?", Klicken Sie auf die Schaltfläche "Vorhersagen". Dann wird der geschätzte Wert der Miete basierend auf dem erlernten Ergebnis eingegeben.

prediction.PNG

Alles was Sie tun müssen, ist diese Taste zu drücken. Wir haben einen Mechanismus entwickelt, um dies unter dem Namen Karura zu erreichen. Es sind nur 3 Schritte erforderlich, um die Vorhersagefunktion in Karura zu verwenden. Natürlich gibt es in diesem Schritt keine Berater.

Nutzung: Datennutzung in 3 Schritten

Alle drei Schritte sind erforderlich, um die obige Ein-Klick-Datenvorhersage durchzuführen.

Stecken Sie einen Kintone-Stecker ein

Fügen Sie das Plug-In in die App ein, für die Sie die Vorhersagefunktion verwenden möchten.

image

Bereiten Sie ein Feld vor, um den vorhergesagten Wert zu setzen

Bereiten Sie ein Feld vor, um den vorhergesagten Wert einzugeben. Dies wird separat vorbereitet, da davon ausgegangen wird, dass der von einer Person eingegebene Wert mit dem vorhergesagten Wert verglichen werden kann.

image

Geben Sie den Feldnamen ein, der mit "_prediction" endet, damit das Feld den vorhergesagten Wert eingibt.

Lernen

Von hier aus werden wir auf der Anwendungsseite (Karura) zum Lernen arbeiten. Geben Sie die Nummer der Immobilienverwaltungs-App ein, die die Vorhersagefunktion enthalten soll, und laden Sie die App-Informationen. Stellen Sie dann das "Feld für die Vorhersage" und das "Feld, das Sie vorhersagen möchten" ein.

image

Nachdem Sie dies eingestellt haben, drücken Sie die Lerntaste.

image

Nach Abschluss des Trainings werden die Vorhersagegenauigkeit und Hinweise zur Verbesserung des Modells wie unten gezeigt angezeigt.

image

Damit ist die Vorbereitung abgeschlossen. Die Vorhersagefunktion kann jetzt auf der Anwendungsseite verwendet werden. Diese Demo ist eine relativ einfache Wertvorhersage, unterstützt jedoch auch die Klassifizierung und nichtlineare Vorhersage. Und der Benutzer muss nicht unterstützen, ob es sich um eine Wertvorhersage oder eine Klassifizierung handelt. Modelle werden automatisch intern ermittelt und umgeschaltet.

Realisierungsmechanismus: Vollautomatisches maschinelles Lernen

Dieser Mechanismus, Karura, schneidet alle lästigen Teile des maschinellen Lernens ab.

image

Wie in der obigen Abbildung gezeigt, werden die folgenden Punkte automatisch ausgeführt.

"Automatisch" scheint etwas Großartiges zu tun, aber sie alle tun nur das, was sie normalerweise können. Im Einzelnen sieht es wie folgt aus.

Ein wenig Einfallsreichtum ist die Definition der Merkmalsmenge. Insbesondere werden die folgenden Operationen intern ausgeführt.

Im Folgenden möchte ich die Punkte für die Automatisierung einschließlich der oben genannten erläutern.

Beurteilung quantitativer / kategorialer Variablen

Einige der Funktionen, dh die Elemente der App auf Kintone, haben numerische Werte, während andere Kategorien wie Tage haben. Es ist nicht angebracht, die Elemente mit Klassifizierungen (Montag, Dienstag, Mittwoch usw. sonntags) einfach in numerische Werte umzuwandeln. Wenn beispielsweise 0 = Montag, 1 = Dienstag, 2 = Mittwoch, ist Mittwoch doppelt so viel wie Dienstag? Ist es Dienstag + Dienstag = Mittwoch? Es macht keinen Sinn. Daher muss jeder Wert unabhängig behandelt werden. Variablen, die diese Kategorien darstellen, werden als kategoriale Variablen bezeichnet. Jeder Wert wird als Element betrachtet, wenn er als Merkmalsmenge verwendet wird (Montag = Richtig / Falsch, Dienstag = Richtig / Falsch usw.), und jeder Wert ist ein Element. Machen). Im Gegenteil, diejenigen, die als numerische Werte behandelt werden können und kein Problem haben (Temperatur, Menge usw.), werden als quantitative Variablen bezeichnet.

Da es eine Belastung ist, den Benutzer zum Nachdenken zu bewegen, schätzen wir diesmal die quantitative Variable / kategoriale Variable nach der Art des Feldelements. Insbesondere wenn es sich um eine Dropdown-Liste oder ein Optionsfeld handelt, wird es als kategoriale Variable betrachtet. Dies ist die [Form Design API] von kintone (https://cybozudev.zendesk.com/hc/ja/articles/201941834-%E3%83%95%E3%82%A9%E3%83%BC%) E3% 83% A0% E8% A8% AD% E8% A8% 88% E6% 83% 85% E5% A0% B1% E5% 8F% 96% E5% BE% 97) Muss nicht angegeben werden.

In ähnlicher Weise ist das als vorherzusagender Wert angegebene Feld eine kategoriale Variable oder eine quantitative Variable, und es wird identifiziert, ob es sich um ein Klassifizierungsproblem oder ein Wertvorhersageproblem handelt.

Derzeit sind wir jedoch nicht in der Lage, Felder mit natürlicher Sprache zu verarbeiten (insbesondere Felder mit Text wie Kommentaren und Titeln). Ich denke, es wäre gut, wenn diese Felder mithilfe verteilter Darstellungen automatisch angezeigt würden.

Normalisierung für jedes Merkmal und Speicherung seiner Parameter

Es ist allgemein bekannt, dass Daten normalisiert werden müssen, aber wir speichern die Parameter (Mittelwert / Verteilung) für diese Normalisierung und Normalisierung. Der Grund für das Speichern der Parameter für die Normalisierung besteht darin, dass bei der Vorhersage auch eine Normalisierung erforderlich ist.

Auswahl der Merkmalsmenge

Mit Feature Selection von scikit-learn wird die Feature-Menge ausgewählt. Die Verwendung ist wie folgt.

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2

X, y = iris.data, iris.target

X_new = SelectKBest(chi2, k=2).fit_transform(X, y)  # choose best 2 feature
print(X_new.shape)

Kurz gesagt, dies dient dazu, jede Merkmalsmenge unabhängig zu klassifizieren / vorherzusagen, zu messen, wie genau sie ist, und dann den Beitrag jeder Merkmalsmenge zu betrachten. Dies entfernt unnötige Funktionen und macht es zu einem einfachen Modell. Gleichzeitig wird intern gespeichert, "welches Element wie viel funktioniert", damit es für die Beratung der Benutzer verwendet werden kann.

Da jedoch die maximale Anzahl von Merkmalsmengen und der Schwellenwert der zu schneidenden Merkmalsmenge jetzt entsprechend eingestellt sind (vorerst ist die Anzahl der Elemente in der Kintone-App ungefähr so), dort. Anpassung ist jedoch ein zukünftiges Problem.

Modellauswahl / Parametereinstellung

Scikit-learns GridSearchCV wird zur Modellauswahl und Parametereinstellung verwendet. Die Verwendung ist wie folgt.

from sklearn.grid_search import GridSearchCV
from sklearn.svm import SVC


candidates = [{'kernel': ['rbf'], 'gamma': [1e-3, 1e-4], 'C': [1, 10, 100]},
              {'kernel': ['linear'], 'C': [1, 10, 100]}]

clf = GridSearchCV(SVC(C=1), candidates, cv=5, scoring="f1")
clf.fit(digits.data, digits.target)

print(clf.best_estimator_)

for params, mean_score, scores in clf.grid_scores_:
    print("%0.3f (+/-%0.03f) for %r" % (mean_score, scores.std() / 2, params))

Wenn Sie hier ein Modell (Schätzer) und seinen Parameterbereich übergeben, wird der gesamte Bereich (Kombination) dieses Bereichs durchsucht (sehr praktisch). Jetzt können Sie ganz einfach die genaueste Kombination von Parametern erhalten. Führen Sie dies für jedes Kandidatenmodell aus und speichern Sie schließlich das genaueste Modell und seine Parameter.

Dieses Kandidatenmodell basiert auf Modellauswahlkarte von scikit-learn. Es ist nicht zu kompliziert, aber ich möchte ElasticNet und SVR für die Wertvorhersage und SVM für die Klassifizierung ausprobieren, während ich den Kernel ändere.

Auf diese Weise realisiert Karura vollautomatisches maschinelles Lernen, aber in der Vergangenheit gab es keine fortschrittliche Technologie. Alles ist die Anhäufung von vorhandenem Know-how und Funktionen. Hier gibt es kein tiefes Lernelement. Ich habe es mit einem Körper implementiert, der leise Arbeiten ausführt, die man als Eisenplatte bezeichnen kann. Wir glauben jedoch, dass es allein den größten Teil der sogenannten „Datenvorhersage“ abdecken kann.

Der sogenannte Bereich der künstlichen Intelligenz hat heutzutage den Geschmack, mit lächerlichem Einfallsreichtum um transzendentale Ramen (teuer) zu konkurrieren. Stattdessen denke ich, dass es auch wichtig ist, die Funktion "Oh ja, das ist in Ordnung" wie in einem Ramen-Laden in der Stadt fest zu übernehmen.

Die Implementierung von Karura wird auf GitHub veröffentlicht. Wenn Sie Kintone haben, können Sie es ausprobieren (wenn Sie es einzeln verwenden, müssen Sie den Inhalt des Plug-Ins und der JavaScript-Anpassung neu schreiben, was in Zukunft behoben wird ist). Wenn Sie interessiert sind, probieren Sie es bitte aus.

icoxfog417/karura

icon.PNG

Recommended Posts

Ein-Klick-Datenvorhersage für das Feld, realisiert durch vollautomatisches maschinelles Lernen
Vorhersage von Zeitreihendaten durch AutoML (automatisches maschinelles Lernen)
Python-Lernnotiz für maschinelles Lernen von Chainer bis zum Ende von Kapitel 2
Bestimmen Sie die Authentizität von veröffentlichten Artikeln durch maschinelles Lernen (Google Prediction API).
Maschinelles Lernen Aufteilung der Trainingsdaten und Lernen / Vorhersage / Verifizierung
Ich habe versucht, die Veränderung der Schneemenge für 2 Jahre durch maschinelles Lernen vorherzusagen
Ich habe versucht, das Bild zu verarbeiten und zu transformieren und die Daten für maschinelles Lernen zu erweitern
Richten Sie die Anzahl der Stichproben zwischen Datenklassen für maschinelles Lernen mit Python aus
Geschichte rund um die Datenanalyse durch maschinelles Lernen
Python-Lernnotiz für maschinelles Lernen von Chainer aus Kapitel 2
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 1 und 2
xgboost: Effektives Modell für maschinelles Lernen für Tabellendaten
Automatisches Round-Robin-Lernen (Regressionsanalyse) - Dies verkürzt die Zeit für die Parametereinstellung erheblich.
Ein Beispiel für einen Mechanismus, der eine Vorhersage von HTTP aus dem Ergebnis des maschinellen Lernens zurückgibt
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 2)
Ich habe die automatische maschinelle Lernbibliothek auto-sklearn auf centos7 installiert
Vorhersage des Vorhandenseins oder Nichtvorhandenseins von Untreue durch maschinelles Lernen
Die Verwendung von icrawler zum Sammeln von Daten zum maschinellen Lernen wurde vereinfacht
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 7 Regressionsanalyse
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 1)
Japanische Vorverarbeitung für maschinelles Lernen
4 [/] Vier Arithmetik durch maschinelles Lernen
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 8 Einführung in Numpy
Vor der Einführung in das maschinelle Lernen. ~ Techniken, die für anderes maschinelles Lernen als maschinelles Lernen erforderlich sind ~
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 10 Einführung in Cupy
Führen Sie eine morphologische Analyse in der von GCE gestarteten maschinellen Lernumgebung durch
Maschinelles Lernen mit Docker (42) Programmieren von PyTorch für Deep Learning Von Ian Pointer
Wie nutzt man maschinelles Lernen für die Arbeit? 01_ Den Zweck des maschinellen Lernens verstehen
kintone x Einfache Visitenkartenverwaltung durch maschinelles Lernen @kintone Café
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 9 Einführung in das Scikit-Lernen
Feature Engineering für maschinelles Lernen ab Teil 1 Google Colaboratory - Validierung und Diskriminierung von Zähldaten
Einführung in Deep Learning zum ersten Mal (Chainer) Japanische Zeichenerkennung Kapitel 2 [Modellgenerierung durch maschinelles Lernen]
Versuchen Sie, den Wert des Wasserstandsmessers durch maschinelles Lernen unter Verwendung der offenen Daten von Data City Sabae vorherzusagen