Das Thema lautet "Was ist maschinelles Lernen? Wie verwenden Sie es?" Für interne Lernsitzungen. Ich hoffe, der Inhalt dieses Artikels ist für andere nützlich.
Maschinelles Lernen ist ein Feld der künstlichen Intelligenz, und tiefes Lernen ist ein Feld des maschinellen Lernens.
Es ist so programmiert, dass es verschiedene Muster durch mehrere If-Anweisungen und Erkundungen abdeckt, sodass auch unter komplizierten Bedingungen eine angemessene Ausgabe erzielt werden kann.
Lernt Datenmuster und -funktionen und gibt darauf basierend einige Vorhersagen für unbekannte Daten aus
Eine der Methoden des maschinellen Lernens, mit denen die Elemente, die die Daten charakterisieren, automatisch ausgewählt werden können
In einer bestimmten Umgebung versucht der Agent wiederholt zu handeln, während er die Situation beobachtet, und lernt die optimale Entscheidung, um den Zweck zu erreichen.
Point! Wenn bei einer Regelbasis eine Ausnahme auftritt, muss eine Person die Regel manuell neu schreiben, und es ist schwierig zu reagieren, wenn die Daten stetig zunehmen. ** → Lassen Sie den Computer beim maschinellen Lernen dies tun! ** ** **
Überwachtes Lernen kann grob in Regression und Klassifizierung unterteilt werden. Regression: Das Vorhersageergebnis ist numerisch. Was ist Japans BIP im Jahr 2018? → Zurück Klassifizierung: Das Ergebnis der Vorhersage ist eine Klasse. Ist diese Blume eine Iris oder ein junger Mann? → Klassifizierung
Entscheiden Sie, was Sie beurteilen möchten und wie genau es sein soll.
Sammeln Sie die Daten, die für die Vorhersage und Beurteilung erforderlich sind. Sie können die bereits in der DB gespeicherten Daten verwenden oder aus dem WEB abrufen. Die gesammelten Daten werden in "Lerndaten" und "Testdaten" unterteilt.
Es ist eine Technologie zum Herunterladen von WEB-Seitendaten basierend auf der URL. Crawling-Beispiel mit Python-Anforderungen:
crawling.py
import requests
r = requests.get('https://ja.wikipedia.org/wiki/Python')
r.text
Technologie zum Extrahieren und Verarbeiten der erforderlichen Informationen von heruntergeladenen WEB-Seiten Scraping-Beispiel mit Pythons BeautifulSoup:
scraping.py
from bs4 import BeautifulSoup
soup = BeautifulSoup(r.content, 'html.parser')
soup.find(class_='mw-redirect').string
>>> 'Multi-Paradigma'
Wird mithilfe der von jedem Service veröffentlichten RESTful-API abgerufen Beispiel für das Erfassen von Daten mit der GitHub-API und deren Verarbeitung mit Pandas:
get_github_data.py
import requests
import pandas as pd
git_res = requests.get('https://api.github.com/search/repositories?q=language:python+created:2017-07-28&per_page=3')
pd.DataFrame(git_res.json()['items'])[:][['language', 'stargazers_count', 'git_url', 'updated_at', 'created_at']]
Formatieren Sie die gesammelten Daten. Wie es formatiert wird, hängt von der Art der Daten und den nachfolgenden Modellierungsarbeiten ab.
Die Daten, die in der Merkmalsmenge fehlen, werden mit dem Durchschnittswert oder 0 gefüllt und die Daten werden interpoliert. Es führt auch eine Verarbeitung durch, z. B. das Ersetzen der als Kategorien aufgelisteten Zeichen durch Flags (Dummy-Variablenkonvertierung).
Wenn Sie ein bestimmtes Zeichen aus den Bilddaten identifizieren möchten, schneiden Sie Anmerkungsdaten zu oder erstellen Sie sie.
Sätze usw. werden durch morphologische Analyse in separate Schrift umgewandelt und weiter vektorkonvertiert, so dass sie als numerische Werte behandelt werden können.
Installation
pip install janome
Teilen
janome_test.py
# -*- coding: utf-8 -*-
from janome.tokenizer import Tokenizer
t = Tokenizer()
document = u'Dies sind Testdaten'
tokens = t.tokenize(document)
for token in tokens:
print(token.surface)
Ausgabe
Dies
Ist
Prüfung
Daten
ist
Ein Modell dient zur Umwandlung von Eingabedaten (Vorhersage- / Beurteilungsfaktoren) in Ausgabedaten (Vorhersage- / Beurteilungsergebnisse). Grob gesagt ist es eine Funktion.
Organisieren und analysieren Sie aus den erfassten Daten die Struktur und Korrelation von Daten, die wahrscheinlich Faktoren für die Vorhersageergebnisse sind, und erstellen Sie ein Modell mit einem bestimmten Freiheitsgrad. Erstellen Sie ein Vorhersagemodell, indem Sie Parameter aus den Trainingsdaten ermitteln.
Bild
Dies ist ein Teil, der spezielle Kenntnisse und Erfahrungen erfordert, aber es gibt Bibliotheken, die zum Teil leicht erstellt werden können.
Beispiel mit scikit-learn: Wählen Sie Modell (diesmal lineare Regression), das für das Problem geeignet ist, passen Sie die Trainingsdaten an das Modell an und wählen Sie das trainierte Modell aus. Erstellt.
liner_reg_sample.py
import numpy as np
from sklearn import linear_model
#Angenommene gesammelte Daten
x_data = np.arange(-3, 10, 0.1).reshape(-1, 1)
y_data = (1/2) * x_data + np.random.normal(0.0, 0.5, len(x_data)).reshape(-1, 1)
#Verwendung als Trainingsdaten
x_train = x_data[70:]
y_train = y_data[70:]
#Passen Sie das Modell an die Trainingsdaten an
reg = linear_model.LinearRegression()
reg.fit(x_train, y_train)
Es gibt einen train_test_split, um die Trainingsdaten von den Testdaten zu trennen. (Ich habe es diesmal nicht benutzt, um es einfacher zu machen, Kapitel für Kapitel zu lesen.)
Je nach Modell müssen Hyperparameter manuell ermittelt werden. Dies wird nicht durch Lernen bestimmt. (Beispiel: Anzahl der DL-Schichten, Anzahl der Lernvorgänge usw.)
So bestimmen Sie Hyperparameter
Ich habe zuvor einen Artikel veröffentlicht, der die Techniken des maschinellen Lernens grob zusammenfasst. Ich hoffe, es wird ein Hinweis für den Modellbau sein. Organisieren Sie die Informationen zum maschinellen Lernen in Qiita grob nach Methoden
Verwenden Sie das erstellte Modell und machen Sie Vorhersagen mit Testdaten.
Ein Beispiel mit scikit-learn (Fortsetzung des obigen Codes):
liner_reg_sample.py
#Testdaten
x_test = x_data[:71]
y_test = y_data[:71]
#Prognose
pred = reg.predict(x_test)
#Entscheidungskoeffizient
print('score:', reg.score(x_test, y_test))
>>> score: 0.714080213722
Überprüfen Sie, wie genau die Vorhersagen in den Testdaten sind. Validieren Sie mit der für jedes Modell geeigneten Bewertungsskala.
Geben Sie diese in scikit-learn Genauigkeitscore und Klassifizierungsbericht aus. /stable/modules/generated/sklearn.metrics.classification_report.html).
Geben Sie diese an scikit-learn mean_absolute_error und mean_squared_error aus. /stable/modules/generated/sklearn.metrics.mean_squared_error.html).
Holdout-Überprüfung: Eine Methode zum Teilen und Überprüfen von Daten durch ein bestimmtes Verhältnis zwischen Trainingsdaten und Testdaten. Bild
K-Division Kreuzungsüberprüfung: Teilen Sie die Daten in K Teile, eines für Testdaten und das andere für Trainingsdaten. Es gibt K Möglichkeiten, Testdaten auszuwählen. Daher können alle Kombinationen überprüft und mit durchschnittlicher Genauigkeit bewertet werden. Bild (K = 3)
Ein Beispiel mit scikit-learn (Fortsetzung des obigen Codes):
liner_reg_sample.py
from sklearn.metrics import mean_squared_error
from math import sqrt
#Korrelationskoeffizient
print('corr:', np.corrcoef(y_test.reshape(1, -1), pred.reshape(1, -1))[0, 1])
# RMSE
print('RMSE:', sqrt(mean_squared_error(y_test, pred)))
>>> corr: 0.895912443712
>>> RMSE: 0.6605862235679646
Wenn es visualisiert werden kann, zeichnen Sie es grafisch auf und überprüfen Sie es visuell.
liner_reg_sample.py
plt.scatter(x_test, y_test, color='blue')
plt.plot(x_test, pred, color='red')
plt.show()
Notieren Sie, welche Art von Modellierung Sie durchgeführt haben, welche Testdaten Sie verwendet haben und wie genau sie waren. Ich schreibe in Python, also schreibe ich es in Markdown im Jupyter-Notizbuch.
Qiita: Verschiedene Zusammenfassungen zur bequemeren Verwendung von Jupyter Notebook
Wenn bei der Überprüfung nicht die erforderliche Genauigkeit erreicht wird, sortieren Sie den Fehler aus und befolgen Sie die Anweisungen unter "2. Daten sammeln" oder "3. Daten formen" oder "4. Modell erstellen und lernen". Zurücksenden an. Drehen Sie diesen Zyklus um.
Es passt sich übermäßig an die Trainingsdaten an und die Genauigkeit der Vorhersage für unbekannte Daten wird gering.
Spezialisierte KI ist KI, die in einem bestimmten Bereich eingesetzt werden kann. Allzweck-KI ist KI, die in vielen verschiedenen Bereichen eingesetzt werden kann. (Es ist wie bei Tetsuwan A * mu) Die meisten AIs sind spezialisierte AIs.
Da die Lernsitzung nur eine Übersicht war, habe ich Qiita in der Hoffnung gepostet, dass ich Wissen mit ein paar zusätzlichen Informationen teilen kann. Ich wäre Ihnen dankbar, wenn Sie auf Fehler hinweisen könnten.
Recommended Posts