[PYTHON] Super introduction à l'apprentissage automatique

Aperçu

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.

Apprentissage automatique = IA?

L'apprentissage automatique est un domaine de l'intelligence artificielle, et l'apprentissage profond est un domaine de l'apprentissage automatique.

Picture1.png

Base de règles

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.

Apprentissage automatique

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'apprentissage en profondeur

L'une des méthodes d'apprentissage automatique permettant de sélectionner automatiquement les éléments qui caractérisent les données

Renforcer l'apprentissage

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! ** **

Types d'apprentissage automatique

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

Que fait le machine learning?

flow.png

1. Décidez quoi faire

Décidez de ce que vous voulez juger et de la précision que vous voulez.

2. Collectez des données

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».

Rampant

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

image.png

Grattage

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'

image.png

Obtenez avec l'API

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']]

image.png

3. Formater les données

Formatez les données collectées. Le formatage dépend du type de données et du travail de modélisation ultérieur.

Interpolation des valeurs manquantes

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).

ffill.png

garniture

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.

Analyse morphologique

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.

exemple de Janome

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

4.Faites un modèle et apprenez

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.

procédure

À 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 image.png

Bibliothèque

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.)

Hyper paramètres

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

Autre

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

5. Prédire à partir des données de test

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

6. Vérification

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.

Échelle d'évaluation

Classification

Envoyez-les à scikit-learn precision_score et classification_report /stable/modules/generated/sklearn.metrics.classification_report.html).

Revenir

Envoyez-les dans scikit-learn mean_absolute_error et mean_squared_error /stable/modules/generated/sklearn.metrics.mean_squared_error.html).

Méthode de vérification

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()

ダウンロード.png

Rapports

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

7. Retour

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.

mot-clé

Superapprentissage

Il s'adapte excessivement aux données d'entraînement et la précision de la prédiction des données inconnues devient faible.

IA spécialisée / IA à usage général

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.

fin

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

Super introduction à l'apprentissage automatique
Introduction à l'apprentissage automatique
Une introduction à l'apprentissage automatique
[Super introduction à l'apprentissage automatique] Découvrez les didacticiels Pytorch
[Super introduction à l'apprentissage automatique] Découvrez les didacticiels Pytorch
Introduction à la rédaction de notes d'apprentissage automatique
Présentation de la bibliothèque d'apprentissage automatique SHOGUN
Introduction à l'apprentissage automatique: fonctionnement du modèle
Une introduction à Python pour l'apprentissage automatique
[Python] Introduction facile à l'apprentissage automatique avec python (SVM)
Une introduction à l'apprentissage automatique pour les développeurs de robots
[Pour les débutants] Introduction à la vectorisation dans l'apprentissage automatique
[Mémorandum d'apprentissage] Introduction à vim
Une super introduction à Linux
Introduction au Deep Learning ~ Règles d'apprentissage ~
Apprentissage par renforcement profond 1 Introduction au renforcement de l'apprentissage
Introduction au Deep Learning ~ Rétropropagation ~
Apprentissage automatique
Introduction à l'apprentissage automatique à partir de Simple Perceptron
[Super Introduction] Apprentissage automatique utilisant Python - De la construction d'environnement à l'implémentation de perceptron simple-
Introduction à l'apprentissage en profondeur ~ Approximation des fonctions ~
Introduction à l'apprentissage profond ~ Préparation au codage ~
Introduction au Deep Learning ~ Dropout Edition ~
Introduction au Deep Learning ~ Propagation vers l'avant ~
Introduction à l'apprentissage profond ~ Expérience CNN ~
Comment collecter des données d'apprentissage automatique
Introduction à l'apprentissage automatique avec scikit-learn - De l'acquisition de données à l'optimisation des paramètres
Super introduction à l'apprentissage automatique Modèle probabiliste et estimation la plus probable
Apprentissage automatique pour apprendre avec Nogisaka 46 et Keyakizaka 46 Partie 1 Introduction
Introduction à MQTT (Introduction)
Introduction à Scrapy (1)
Introduction à Scrapy (3)
[Introduction] Renforcer l'apprentissage
Premiers pas avec Supervisor
scikit-learn Comment utiliser le résumé (apprentissage automatique)
Introduction à Tkinter 1: Introduction
pytorch super introduction
Enregistrez les étapes pour comprendre l'apprentissage automatique
Super Introduction Arithmétique Bit Python
Introduction aux bases de Python de l'apprentissage automatique (apprentissage non supervisé / analyse principale)
J'ai installé Python 3.5.1 pour étudier l'apprentissage automatique
Introduction au Deep Learning ~ Pliage et mise en commun ~
Avant l'introduction à l'apprentissage automatique. ~ Technologie requise pour l'apprentissage automatique autre que l'apprentissage automatique ~
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 10 Introduction à Cupy
Introduction à PyQt
Introduction à Scrapy (2)
[Linux] Introduction à Linux
Introduction à Scrapy (4)
Introduction à discord.py (2)
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
Introduction à Machine Learning-Hard Margin SVM Edition-
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 9 Introduction à scikit-learn
Introduction à TensorFlow - Explication des termes et concepts d'apprentissage automatique
Exemple d'apprentissage automatique
Commandes Linux à retenir
Une super introduction à Linux
Rendre avec la syntaxe facile
Super introduction à l'apprentissage automatique
Prenons la version gratuite "Introduction à Python pour l'apprentissage automatique" en ligne jusqu'au 27/04
Les débutants en Python publient des applications Web à l'aide de l'apprentissage automatique [Partie 2] Introduction à Python explosif !!
Essayez de prédire la demande de puissance par l'apprentissage automatique