Le thème est "Qu'est-ce que l'apprentissage automatique? Comment l'utilisez-vous?" Pour les sessions d'étude en interne. J'espère que le contenu de cet article sera utile aux autres.
L'apprentissage automatique est un domaine de l'intelligence artificielle, et l'apprentissage profond est un domaine de l'apprentissage automatique.
Il est programmé pour couvrir divers modèles par plusieurs instructions If et l'exploration afin que la sortie appropriée puisse être obtenue même dans des conditions compliquées.
Apprend les modèles de données et les fonctionnalités et génère des prédictions pour les données inconnues en fonction de celles-ci
L'une des méthodes d'apprentissage automatique permettant de sélectionner automatiquement les éléments qui caractérisent les données
Dans un certain environnement, l'agent essaie à plusieurs reprises d'agir tout en observant la situation et apprend la décision optimale pour atteindre le but.
Point! Avec la base de règles, lorsqu'une exception se produit, il est nécessaire pour une personne de réécrire manuellement la règle, et il est difficile de répondre lorsque les données augmentent régulièrement. ** → En apprentissage automatique, laissez l'ordinateur le faire! ** **
L'apprentissage supervisé peut être globalement divisé en régression et classification. Régression: le résultat de la prédiction est numérique. Quel est le PIB du Japon en 2018? → Retour Classification: le résultat de la prédiction est une classe. Cette fleur est-elle un iris ou un jeune homme? → Classement
Décidez de ce que vous voulez juger et de la précision que vous voulez.
Collectez les données nécessaires à la prédiction et au jugement. Vous pouvez utiliser les données déjà stockées dans la base de données ou les obtenir à partir du WEB. Les données collectées sont divisées en «données d'apprentissage» et «données de test».
C'est une technologie pour télécharger des données de page WEB en fonction de l'URL. Exemple d'exploration à l'aide de requêtes python:
crawling.py
import requests
r = requests.get('https://ja.wikipedia.org/wiki/Python')
r.text
Technologie pour extraire et traiter les informations nécessaires à partir des pages WEB téléchargées Exemple de grattage utilisant Beautiful Soup de python:
scraping.py
from bs4 import BeautifulSoup
soup = BeautifulSoup(r.content, 'html.parser')
soup.find(class_='mw-redirect').string
>>> 'Multi-paradigme'
Obtenu à l'aide de l'API RESTful publiée par chaque service Exemple d'acquisition de données avec GitHub API et de traitement avec des 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']]
Formatez les données collectées. Le formatage dépend du type de données et du travail de modélisation ultérieur.
Les données manquantes dans le montant de la fonction sont remplies avec la valeur moyenne ou 0 et les données sont interpolées. Il effectue également des traitements tels que le remplacement des caractères répertoriés comme catégories par des indicateurs (conversion de variable factice).
Si vous souhaitez identifier un caractère spécifique à partir des données d'image, découpez ou créez des données d'annotation.
Les phrases, etc. sont converties en écriture séparée par analyse morphologique, et ensuite converties en vecteurs afin qu'elles puissent être traitées comme des valeurs numériques.
Installation
pip install janome
Partage
janome_test.py
# -*- coding: utf-8 -*-
from janome.tokenizer import Tokenizer
t = Tokenizer()
document = u'Ce sont des données de test'
tokens = t.tokenize(document)
for token in tokens:
print(token.surface)
production
cette
Est
tester
Les données
est
Un modèle sert à convertir les données d'entrée (facteurs de prédiction / jugement) en données de sortie (résultats de prédiction / jugement). En gros, c'est une fonction.
À partir des données acquises, organisez et analysez la structure et la corrélation des données susceptibles d'être des facteurs dans les résultats de la prédiction, et créez un modèle avec un certain degré de liberté. Créez un modèle de prédiction en déterminant les paramètres à partir des données d'entraînement.
image
C'est une partie qui nécessite des connaissances et une expérience spécialisées, mais il existe des bibliothèques qui peuvent être créées dans une certaine mesure facilement.
Exemple utilisant scikit-learn: Sélectionnez Model (cette fois régression linéaire) qui convient au problème, ajustez les données d'apprentissage au modèle et sélectionnez le modèle entraîné. Créé.
liner_reg_sample.py
import numpy as np
from sklearn import linear_model
#En supposant que les données collectées
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)
#Utiliser comme données d'entraînement
x_train = x_data[70:]
y_train = y_data[70:]
#Ajuster le modèle aux données d'entraînement
reg = linear_model.LinearRegression()
reg.fit(x_train, y_train)
Il existe un train_test_split pour séparer les données d'entraînement des données de test. (Je ne l'ai pas utilisé cette fois pour faciliter la lecture chapitre par chapitre.)
Selon le modèle, certains hyperparamètres doivent être déterminés manuellement. Ceci n'est pas déterminé par l'apprentissage. (Exemple: nombre de couches DL, nombre d'apprentissage, etc.)
Comment déterminer les hyper paramètres
J'ai précédemment publié un article qui résume approximativement les techniques d'apprentissage automatique. J'espère que ce sera un indice pour la construction de modèles. Organiser grossièrement les informations d'apprentissage automatique de Qiita centrées sur les méthodes
Utilisez le modèle créé et faites des prédictions avec des données de test.
Un exemple utilisant scikit-learn (suite du code ci-dessus):
liner_reg_sample.py
#données de test
x_test = x_data[:71]
y_test = y_data[:71]
#Prévoir
pred = reg.predict(x_test)
#Coefficient de décision
print('score:', reg.score(x_test, y_test))
>>> score: 0.714080213722
Vérifiez la précision des prédictions dans les données de test. Validez avec l'échelle d'évaluation adaptée à chaque modèle.
Envoyez-les à scikit-learn precision_score et classification_report /stable/modules/generated/sklearn.metrics.classification_report.html).
Envoyez-les dans scikit-learn mean_absolute_error et mean_squared_error /stable/modules/generated/sklearn.metrics.mean_squared_error.html).
Vérification Holdout: Comment diviser les données en données d'entraînement et tester les données à un certain ratio et vérifier image
Vérification de l'intersection K-Division: divisez les données en K morceaux, un pour les données de test et l'autre pour les données de formation. Il existe K façons de sélectionner les données de test, c'est donc une méthode pour vérifier toutes les combinaisons et évaluer avec une précision moyenne. Image (K = 3)
Un exemple utilisant scikit-learn (suite du code ci-dessus):
liner_reg_sample.py
from sklearn.metrics import mean_squared_error
from math import sqrt
#Coefficient de corrélation
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
S'il peut être visualisé, tracez-le et vérifiez-le visuellement.
liner_reg_sample.py
plt.scatter(x_test, y_test, color='blue')
plt.plot(x_test, pred, color='red')
plt.show()
Enregistrez le type de modélisation effectué, les données de test utilisées et leur précision. J'écris en python, donc je l'écris dans Markdown dans le notebook Jupyter.
Qiita: Divers résumé pour utiliser Jupyter Notebook plus facilement
Si la précision requise n'est pas obtenue lors de la vérification, triez ce qui n'a pas fonctionné et suivez la procédure «2. Collecter les données» ou «3. Façonner les données» ou «4. Créer un modèle et apprendre» Retourner à. Je vais faire le tour de ce cycle.
Il s'adapte excessivement aux données d'entraînement et la précision de la prédiction des données inconnues devient faible.
L'IA spécialisée est une IA qui peut être utilisée dans un domaine spécifique. L'IA à usage général est une IA qui peut être utilisée dans de nombreux domaines différents. (C'est comme Tetsuwan A * mu) La plupart des IA sont des IA spécialisées.
Comme la session d'étude n'était qu'un aperçu, j'ai posté Qiita dans l'espoir de pouvoir partager mes connaissances avec un peu d'informations ajoutées. Je vous serais reconnaissant de bien vouloir signaler toute erreur.
Recommended Posts