[PYTHON] Apprentissage non supervisé 2 clustering non hiérarchique

Aidemy 2020/10/29

introduction

Bonjour, c'est Yope! Je suis une école littéraire croustillante, mais j'étais intéressé par les possibilités de l'IA, alors je suis allé à l'école spécialisée en IA "Aidemy" pour étudier. Je voudrais partager les connaissances acquises ici avec vous, et je les ai résumées dans Qiita. Je suis très heureux que de nombreuses personnes aient lu l'article de synthèse précédent. Merci! Ceci est le deuxième poste de l'apprentissage non supervisé. Ravi de vous rencontrer.

Quoi apprendre cette fois ・ Types de clustering ・ Méthode K-means ・ Méthode DBSCAN

Clustering

Classification hiérarchique

-__ Le clustering hiérarchique __ est une méthode de clustering __ les données les plus similaires (les plus proches) parmi les données __. ・ Par exemple, s'il y a des données de a = 1, b = 2, c = 10, d = 15, e = 100 「(a,b),c,d,e」=>「(a,b),(c,d),e」=>「((a,b),(c,d)),e」=>「(((a,b),(c,d)),e)」 Il sera regroupé comme ceci, et lorsque toutes les données seront finalement collectées, cela se terminera. -A ce moment, une hiérarchie est formée pour chaque groupe, c'est ce qu'on appelle le regroupement hiérarchique.

Clustering non hiérarchique

-Le clustering non hiérarchique, comme le clustering hiérarchique, est une méthode de regroupement des données les plus similaires (proches), mais ne crée pas de structure hiérarchique. -Dans le clustering non hiérarchique, une personne décide du nombre de clusters à créer et les clusters sont générés en conséquence. -Le clustering non hiérarchique nécessite moins de calculs que le clustering hiérarchique, il est donc efficace lorsque la quantité de données est importante.

Structure des données utilisées pour le clustering

-En utilisant __make_blobs () __, vous pouvez générer des données en spécifiant le nombre de clusters. -De ces variables, X est le __ point de données (x, y) __, et Y est le __ étiquette du cluster __. ・ À propos de chaque argument n_samples: nombre total de données n_features: Caractéristiques (nombre de dimensions) centers: Nombre de clusters cluster_std: écart type au sein du cluster shuffle: s'il faut trier les données au hasard random_state: paramètre de départ

スクリーンショット 2020-10-28 23.10.58.png

méthode k-means

-La méthode __k-means __ est une méthode de clustering non hiérarchique. La méthode de clustering consiste à se diviser en clusters avec la même __ distribution __. ・ Pour la division, utilisez un index appelé SSE. SSE est la somme des carrés (= dispersion) de la différence entre __center of gravity (centroïde) __ et les points de données pour chaque cluster. (Les détails seront décrits plus tard) -Ensuite, apprenez et sélectionnez __centroid __ qui minimise cette dispersion (SSE).

・ Le flux spécifique de la méthode k_means est le suivant. (1) Extraire k données des données et les utiliser comme centre de gravité initial. (2) Attribuez tous les points de données au centre de gravité le plus proche. (3) Calculez le centre de gravité du groupe de données collecté dans chaque centroïde et définissez le centre de gravité comme un nouveau centroïde. ④ Calculez la distance entre le centroïde d'origine et le nouveau centroïde, et répétez ③ et ③ jusqu'à ce qu'ils se rapprochent. ⑤ Terminez lorsque la distance est suffisamment proche.

Exécution de la méthode k-means

-Utilisez __KMeans () __ pour exécuter la méthode k-means. Voir ci-dessous pour les arguments. n_clusters: Nombre de clusters (correspond aux "centres" dans make_blob) init: Comment définir le centre de gravité initial (défini aléatoirement avec "random") n_init: Combien de fois faire ① ci-dessus max_iter: Nombre maximum de répétitions de ② et ③ ci-dessus tol: Tolérance à considérer comme "convergée" random_state: graine initiale

·code スクリーンショット 2020-10-28 23.11.23.png

・ Résultat![Capture d'écran 2020-10-28 23.12.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/92537145-7ac3-9375- 7d4a-8e44988d9624.png)

À propos de SSE

・ SSE a expliqué qu'il s'agit de la somme des carrés (= variance) de la différence entre le centre de gravité (centroïde) et les points de données pour chaque cluster, mais cet indice peut également être utilisé pour évaluer les performances de __clustering. ça peut. -Comme ce que l'on peut voir de SSE est __ "combien le centre de gravité s'écarte de chaque donnée" __, on peut dire que plus la valeur est petite, meilleure est l'organisation du cluster.

・ Pour afficher la valeur SSE print("Distortion: %2f"% km.inertia)_ Ca devrait être fait. (Km est l'instance KMeans créée dans la section précédente)

Méthode du coude

-Dans la méthode k-means, il est nécessaire de déterminer vous-même le nombre de clusters, mais il existe une méthode qui peut être utilisée comme référence pour déterminer le nombre de clusters. C'est ce qu'on appelle la méthode __Elbow __. -La méthode du coude est une représentation schématique de __ "Valeur SSE lorsque le nombre de clusters est augmenté" __. -Dans cette figure, il y a un point où la valeur SSE se plie, et ce point est considéré comme le nombre optimal de clusters pour le calcul. Cette flexion est comme un coude, on l'appelle donc la méthode du coude.

・ Code![Capture d'écran 2020-10-28 23.15.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/7f5b536a-4646-4047- 72ee-50e1e3dad0bb.png)

・ Résultat![Capture d'écran 2020-10-28 23.15.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/c71006b5-f6c7-86dd- 1af1-2fce518018a7.png)

Autre clustering non hiérarchique

DBSCAN -Nous avons vu la méthode k-means comme un exemple de clustering non hiérarchique, mais la caractéristique est que les clusters ont une forme proche d'un cercle car les données se rassemblent autour du centre de gravité de chaque cluster. Par conséquent, lorsque la taille et la forme des __clusters ne sont pas biaisées, la précision de la classification a tendance à augmenter __, mais sinon, une bonne classification ne sera pas obtenue.

-Une méthode appelée DBSCAN peut être utilisée dans de tels cas. -DBSCAN est une méthode qui se concentre sur l'endroit où __ les données sont rassemblées plus d'un certain nombre, et sépare les données qui l'entourent des autres données __. -Spécifiquement, il est effectué à l'aide de deux index, __ "min_sample" __ et __ "eps" . La procédure est la suivante. (1) S'il y a plus de données "min_sample" dans le rayon de données "eps", ce point est considéré comme core point. (2) A partir du point central, les données dans le rayon "eps" sont considérées comme border point. (3) Les points qui ne sont ni des points centraux ni des points frontières sont considérés comme des __ points de bruit. ④ Considérez la collection de points principaux comme un groupe, intégrez les points de plaisance dans le groupe le plus proche et terminez.

-De cette façon, DBSCAN classe les données en trois types, de sorte que même les données biaisées peuvent être bien regroupées.

-Pour exécuter DBSCAN, utilisez __DBSCAN () __. (Le __metric = "euclidean" __ suivant déclare utiliser la distance euclidienne)

スクリーンショット 2020-10-28 23.17.16.png

Sommaire

-Il existe deux types de clustering: __ hiérarchique clustering__ et __ non hiérarchique clustering__. En raison de l'algorithme, le clustering non hiérarchique nécessite un réglage manuel du nombre de clusters. -L'un des regroupements non hiérarchiques est la méthode k-means . Dans la méthode k-means, les grappes sont générées en répétant le réglage du centre de gravité. - SSE peut être utilisé comme indice de performance pour la méthode k-means. On peut dire que plus la valeur est petite, meilleur est le clustering. -Le nombre optimal de clusters peut être calculé par la méthode __elbow __ qui trace la relation entre le nombre de clusters et SSE. -Une autre méthode de clustering non hiérarchique est DBSCAN. Étant donné que DBSCAN crée un cluster en se référant au nombre de données dans une certaine plage, le clustering est facile à utiliser même avec des données biaisées.

Cette fois, c'est fini. Merci d'avoir lu jusqu'au bout.

Recommended Posts

Apprentissage non supervisé 2 clustering non hiérarchique
Python: apprentissage non supervisé: clustering non hiérarchique
Apprendre sans enseignant 1 Principes de base
Python: apprentissage non supervisé: principes de base
Apprendre sans enseignant 3 Analyse des principales composantes
Apprenez mnist non supervisé avec l'encodeur automatique et le cluster et évaluez les variables latentes
Python: apprentissage non supervisé: analyse principale
Apprentissage non supervisé de mnist avec encodeur automatique variationnel, clustering et évaluation des variables latentes