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.
Dann ...
Und ...
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.
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.
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.
Alle drei Schritte sind erforderlich, um die obige Ein-Klick-Datenvorhersage durchzuführen.
Fügen Sie das Plug-In in die App ein, für die Sie die Vorhersagefunktion verwenden möchten.
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.
Geben Sie den Feldnamen ein, der mit "_prediction" endet, damit das Feld den vorhergesagten Wert eingibt.
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.
Nachdem Sie dies eingestellt haben, drücken Sie die Lerntaste.
Nach Abschluss des Trainings werden die Vorhersagegenauigkeit und Hinweise zur Verbesserung des Modells wie unten gezeigt angezeigt.
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.
Dieser Mechanismus, Karura, schneidet alle lästigen Teile des maschinellen Lernens ab.
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.
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.
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.
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.
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.
Recommended Posts