Apprentissage automatique Une histoire sur des personnes qui ne sont pas familiarisées avec GBDT utilisant GBDT en Python

Pour une raison quelconque, il n'y avait pas beaucoup de pages GBDT en japonais, alors je l'ai écrit. Comme le titre l'indique, je suis une personne qui ne comprend pas bien l'apprentissage automatique, donc je ne peux pas gérer les tsukkomi de personnes aptes. Notez s'il vous plaît. J'espère que cela aidera les gens comme moi qui "connaissent un peu l'apprentissage automatique mais ne savent rien en matière d'histoires avancées".

Qu'est-ce que GBDT

L'un de l'apprentissage automatique supervisé. Abréviation de l'arbre de décision d'amélioration du dégradé. Il regroupe sur la base des données des enseignants SVM. Cependant, contrairement à SVM, qui est une classification binaire de base, d'autres classes peuvent être classées. Les différences avec d'autres classifications telles que Randomforest sont sous-étudiées. Pardon. J'omettrai des histoires détaillées telles que la théorie parce qu'elles sont compilées par des personnes plus intelligentes. http://www.housecat442.com/?p=480 http://qiita.com/Quasi-quant2010/items/a30980bd650deff509b4

Je vais l'essayer pour le moment

Il y avait article résolvant un problème CodeIQ avec SVM, donc je vais essayer de l'imiter avec GBDT.

sample_gbdt.py


# -*- coding: utf-8 -*-
from sklearn.ensemble import GradientBoostingClassifier
import numpy as np

#Données d'entraînement
train_data = np.loadtxt('CodeIQ_auth.txt', delimiter=' ')
X_train = [[x[0], x[1]] for x in train_data]
y_train = [int(x[2]) for x in train_data]

#Données de test
X_test = np.loadtxt('CodeIQ_mycoins.txt', delimiter=' ')
y_test = np.array([1,0,0,1,1,0,1,1,1,0,0,1,1,0,0,1,0,0,0,1])

clf = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1,
        max_depth=1).fit(X_train, y_train)

print ("Predict ",clf.predict(X_test))
print ("Expected", y_test)
print clf.score(X_test, y_test)

J'utilisais SVM, mais je le fais simplement avec GBDT. Cette fois, il s'agit d'une classification binaire. Il semble que si vous augmentez les types d'étiquettes, ils les classeront en conséquence dans d'autres classes.

Cliquez ici pour les résultats

('Predict ', array([1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1]))
('Expected', array([1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1]))
0.85

Vous avez commis une erreur à trois endroits. .. ..

Réglage des paramètres

Jetons un coup d'œil à la page sklearn ici. Vous n'avez pas à le regarder séparément. http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html Beaucoup de paramètres. 15 pièces. De plus, je ne comprends pas bien l'anglais. Cependant, si vous regardez de plus près, la valeur par défaut de max_depth est 3. Le mien est 1. Pourquoi?

C'est pourquoi je l'ai réparé et essayé à nouveau.

('Predict ', array([1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1]))
('Expected', array([1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1]))
0.95

Il a augmenté. C'est en place. Cela a augmenté, mais après tout, j'ai fait une erreur au même endroit. Continuons et augmentons max_depth. Par exemple, 5

('Predict ', array([1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0]))
('Expected', array([1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1]))
0.9

Il est tombé ... Je savais que ce n'était pas quelque chose que je devrais donner, mais c'est vrai. Mais même pour des problèmes de cette ampleur, changer les paramètres changera les résultats. J'ai appris de première main à quel point l'ajustement des paramètres est important dans l'apprentissage automatique.

Et ce réglage des paramètres. Je sens que je ne peux pas bien faire sans un peu plus de connaissances spécialisées. Cela semble difficile de le déplacer un peu avec python et d'être heureux.

J'étudierai un peu plus sérieusement et recommencerai.

Recommended Posts

Apprentissage automatique Une histoire sur des personnes qui ne sont pas familiarisées avec GBDT utilisant GBDT en Python
Une histoire sur l'apprentissage automatique avec Kyasuket
Que diriez-vous d'Anaconda pour créer un environnement d'apprentissage automatique avec Python?
Une histoire sur l'automatisation du mahjong en ligne (Jakutama) avec OpenCV et l'apprentissage automatique
Impressions de personnes ayant de l'expérience dans d'autres langues apprenant Python à l'aide de PyQ
Touchons une partie de l'apprentissage automatique avec Python
Histoire de l'analyse de données par apprentissage automatique
Créer un environnement d'apprentissage automatique Python avec des conteneurs
[Résolu] J'ai une question pour ceux qui connaissent la mécanisation de Python.
Ce que j'ai appris sur l'IA / l'apprentissage automatique avec Python (1)
Une histoire de prédiction du taux de change avec Deep Learning
Exécutez un pipeline de machine learning avec Cloud Dataflow (Python)
Une histoire d'essayer un monorepo (Golang +) Python avec Bazel
Ce que j'ai appris sur l'IA / l'apprentissage automatique avec Python (3)
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Mémo de construction d'environnement d'apprentissage automatique par Python
Ce que j'ai appris sur l'IA / l'apprentissage automatique avec Python (2)
MALSS (introduction), un outil qui prend en charge l'apprentissage automatique en Python
Une histoire sur la façon de spécifier un chemin relatif en python.
(Remarque) Une histoire sur la création d'un système de questions et réponses à l'aide de Spring Boot et de l'apprentissage automatique (SVM).
Une histoire de compétition avec un ami dans Othello AI Preparation
Ce que j'ai appris sur l'IA / l'apprentissage automatique avec Python (4)
Apprentissage automatique avec Python! Préparation
Procédure de construction de l'environnement pour ceux qui ne sont pas familiarisés avec le système de gestion de version python
Une histoire sur un amateur faisant une rupture de bloc avec python (kivy) ②
[Note] Une histoire sur la tentative de remplacer une méthode de classe avec deux barres inférieures dans la série Python 3.
Une histoire sur un amateur faisant une rupture de bloc avec python (kivy) ①
Commencer avec l'apprentissage automatique Python
Une histoire sur la tentative d'implémentation de variables privées en Python.
Une histoire à propos d'un débutant en python coincé avec aucun module nommé'ttp.server '
Une histoire coincée avec l'installation de la bibliothèque de machine learning JAX
[Tutoriel] Créez un extracteur d'expressions unique en 30 minutes à l'aide de l'apprentissage automatique
Une histoire sur l'ajout d'une API REST à un démon créé avec Python
Création d'un environnement Windows 7 pour une introduction à l'apprentissage automatique avec Python
Les personnes familiarisées avec les programmes Android essaient le traitement multi-thread avec Python
Liens vers des personnes qui commencent tout juste l'analyse de données avec python
Une histoire sur le développement d'un type logiciel avec Firestore + Python + OpenAPI + Typescript
Enquête sur PYNQ - Faisons du Deep Learning avec FPGA en utilisant Python -
Python: prétraitement dans l'apprentissage automatique: présentation
L'histoire de l'utilisation de la réduction de Python
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Coursera Machine Learning Challenge en Python: ex7-1 (Compression d'image avec clustering K-means)
Vulkan compute avec Python avec VkInline et pense à l'apprentissage automatique GPU et plus
Créer un enregistrement avec des pièces jointes dans KINTONE à l'aide du module de requêtes Python
J'ai écrit FizzBuzz en python en utilisant la machine à vecteurs de support (bibliothèque LIVSVM).
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Amplifiez les images pour l'apprentissage automatique avec Python
Apprentissage automatique avec python (2) Analyse de régression simple
[python] Techniques souvent utilisées dans l'apprentissage automatique
Python: prétraitement en machine learning: acquisition de données
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
Scraping de sites Web à l'aide de JavaScript en Python
Ce que j'ai appris de "Mentionnez aux personnes qui n'ont pas pressé de réagir en utilisant l'API slack" [Principalement à propos de json]
Une histoire sur Python pop and append
Dessinez une structure arborescente en Python 3 à l'aide de graphviz
[Python] Enregistrement des résultats d'apprentissage (modèles) dans l'apprentissage automatique