Python: apprentissage non supervisé: principes de base

Qu'est-ce que l'apprentissage non supervisé?

En apprentissage supervisé (retour, classement), la réponse est connue Il s'agit de former l'IA à l'aide de données (un ensemble de valeurs d'entrée et de valeurs de sortie correspondantes).

Pour les ensembles de données sans réponse, par opposition à l'apprentissage supervisé Il y a un apprentissage non supervisé dans lequel l'IA décide elle-même de la réponse.

Vous en apprendrez davantage sur le «clustering» et «l'analyse des composants principaux», qui sont un apprentissage non supervisé.

Types d'apprentissage non supervisé

Clustering

Il existe une technique appelée «clustering» en tant que représentative de l'apprentissage non supervisé. Une opération qui divise les données en "clusters" En japonais, la division des données est parfois appelée «clustering».

Ce qui suit montre comment les données sont manipulées en utilisant la "méthode k-means" comme exemple de clustering.

image.png

image.png

Les points noirs sont l'état avant le regroupement. Le point violet est un paramètre appelé «centre de gravité» des données. La méthode k-means apprend la position optimale de ce centre de gravité à partir des données. Regroupez les données en utilisant le centre de gravité appris.

Il existe deux types de clustering: une estimation automatique du nombre de clusters et une méthode déterminée par l'homme.

k-La méthode des moyens est l'une des méthodes que les êtres humains utilisent pour décider du nombre de grappes.

Nombre de clusters

Le but de l'apprentissage non supervisé est de capturer et d'analyser mécaniquement les caractéristiques des données que vous souhaitez analyser. Pour cette raison, il y a aussi l'idée qu'il vaut mieux que les gens ne déterminent pas le nombre de grappes.

Une technique dite «hiérarchique» est une technique qui estime automatiquement le nombre de clusters. Cependant, la méthode hiérarchique nécessite une quantité relativement importante de calculs. Si vous avez beaucoup de données, une approche non hiérarchique peut être appropriée.

Analyse des composants principaux

«L'analyse des composants primaires» est une technique souvent utilisée pour «réduire les dimensions» des données sous forme de graphiques.

La réduction de dimension consiste à abaisser la dimension qui représente les données. Par exemple, vous pouvez créer un graphique à deux dimensions en réduisant un axe de coordonnées à partir de données en trois dimensions.

Prenons un exemple concret. Supposons que vous ayez beaucoup de données sur vos élèves, telles que les résultats des tests, les questions en classe, les arrivées tardives et le temps de sommeil. Comment pouvez-vous représenter graphiquement les caractéristiques des élèves à partir de ces données?

Vous pourrez peut-être créer un graphique pour chaque donnée. Cependant, il est difficile d'analyser la tendance de centaines ou de milliers d'élèves à partir de plusieurs graphiques. Avec l'analyse des composants principaux, vous pouvez combiner différents types de données pour créer un seul graphique, tel que 2D ou 3D, tout en préservant autant que possible les informations de chaque donnée.

image.png

Comme dans l'exemple ci-dessus, vous pouvez le convertir en données à l'aide de l'analyse des composants principaux. Tout d'abord, la machine apprend les axes (composants principaux) qui indiquent spécifiquement les caractéristiques des données. Si vous recréez le graphique avec les axes appris, vous pouvez facilement voir toutes les données dans un graphique comme indiqué ci-dessus, tout en conservant les informations autant que possible. La méthode de détermination de cet axe est le contour de l'analyse en composantes principales.

Connaissance préalable

Distance euclidienne

Étant donné les coordonnées x (x1, x2), y (y1, y2) des deux points La distance entre deux points peut être calculée à partir du théorème de Pitagolas.

image.png

Plus généralement, une extension de celle-ci entre deux points dans un espace à n dimensions

C'est ce qu'on appelle la distance euclidienne.

image.png

La «distance» dans un espace de n = 4 ou plus ne peut plus être imaginée par la reconnaissance spatiale intuitive humaine, mais dans la formule mathématique, la formule simplement étendue comme ci-dessus est définie comme la distance. .. La distance euclidienne est aussi parfois appelée la norme.

Vous pouvez également utiliser numpy pour trouver la distance euclidienne.

import numpy as np
vec_a = np.array([1, 2, 3])
vec_b = np.array([2, 3, 4])
print(np.linalg.norm(vec_a - vec_b))

Similitude cosinus

Lorsque le vecteur bidimensionnel a → = (a1, a2), b → = (b1, b2) est donné Je voudrais évaluer la similitude de ces deux vecteurs (en fait une sorte de données bidimensionnelles).

Les propriétés qui représentent un vecteur sont «longueur» et «direction». Ici, nous nous concentrons sur la «direction». Quelle est la similitude des «directions» auxquelles les deux vecteurs font face? Vous pouvez le considérer simplement comme correspondant à l'angle entre ces deux vecteurs.

Si l'angle entre les deux vecteurs est θ, plus θ est petit, plus les deux données seront similaires. Ici, la formule pour calculer le produit interne des vecteurs

image.png

Si vous calculez un peu

image.png

Ce sera. Plus le θ est petit, plus le cos θ est grand.

D'après ce qui précède, il a été constaté que cosθ représente la similitude entre les deux données. Le cos de l'angle ainsi formé est utilisé comme indice de la similitude des données.

C'est ce qu'on appelle la "similitude cosinus".

Étendez la "similarité cosinus" afin qu'elle puisse être utilisée pour des données à n dimensions ainsi que pour la distance euclidienne. Lorsque deux vecteurs à n dimensions a → = (a1, a2, ⋯, an), b → = (b1, b2, ⋯, bn) sont donnés La "similarité cosinus" est exprimée par la formule suivante.

image.png

De plus, la similitude cosinus peut être calculée avec le code suivant.

import numpy as np
vec_a = np.array([1, 2, 3])
vec_b = np.array([2, 3, 4])
print(np.dot(vec_a, vec_b) / (np.linalg.norm(vec_a) * np.linalg.norm(vec_b)))

Recommended Posts

Python: apprentissage non supervisé: principes de base
Apprendre sans enseignant 1 Principes de base
Les bases de Python ⑤
Les bases de Python
Les bases de Python ④
Les bases de Python ③
Les bases de Python
apprentissage de python
Les bases de Python
Les bases de Python
Les bases de Python ③
Les bases de Python ②
Les bases de Python ②
Python: apprentissage non supervisé: clustering non hiérarchique
Python: apprentissage non supervisé: analyse principale
(python) Principes de base du chaînage de la bibliothèque d'apprentissage en profondeur
bases de python: liste
[Python] Note d'apprentissage 1
Notes d'apprentissage Python
sortie d'apprentissage python
Les bases de #Python (#matplotlib)
Principes de base de Python CGI
bases de python: dictionnaire
Site d'apprentissage Python
Les bases de Python ①
Bases de python ①
Apprentissage Python jour 4
bases de la tranche de python
# Principes de base de Python (portée)
Les bases de #Python (#Numpy 1/2)
Apprentissage en profondeur Python
Les bases de #Python (#Numpy 2/2)
apprentissage python (supplément)
# Bases de Python (fonctions)
Apprentissage profond × Python
principes de base des tableaux python
Principes de base du profilage Python
Principes de base de Python #Numpy
bases de python: fonctions
notes d'apprentissage python
Les bases de #Python (classe)
Résumé des bases de Python
[Mémo d'apprentissage] Bases de la classe par python
Introduction aux bases de Python de l'apprentissage automatique (apprentissage non supervisé / analyse principale)
Apprendre Python avec ChemTHEATER 03
Module Python (mémo d'apprentissage Python ④)
Apprentissage amélioré 1 installation de Python
Bases de Python ② pour déclaration
Apprendre Python avec ChemTHEATER 05-1
Python: pratique du Deep Learning
Python ~ Apprentissage rapide de la grammaire ~
Principes de base du grattage Python
Test numpy Python Basic 8
Apprentissage non supervisé 2 clustering non hiérarchique
Errbot: les bases du chatbot Python
#Python DeepLearning Basics (Mathématiques 1/4)
Procédure d'apprentissage privée Python
Apprendre Python avec ChemTHEATER 02
Principes de base de Python: Socket, Dnspython
Python: apprentissage profond du traitement du langage naturel: principes de base