[PYTHON] Apprentissage supervisé 3 hyper paramètres et réglage (2)

Aidemy 2020/9/27

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. Je vous remercie! Ceci est le troisième poste de l'apprentissage supervisé. Ravi de vous rencontrer.

Quoi apprendre cette fois ・ Hyper paramètres pour l'arbre de décision, la forêt aléatoire et k-NN ・ Automatisation du réglage (réglage des paramètres)

Hyper paramètres de l'arbre de décision

Paramètre max_depth

-__ Max_depth__ indique la profondeur de l'arbre que le modèle __ apprend. Si cette valeur n'est pas définie ou si la valeur est trop grande, elle sera trop proche des données de l'enseignant et ne sera pas généralisée, limitez donc max_depth pour la généraliser. C'est ce qu'on appelle "l'élagage de l'arbre de décision".

Paramètre random_state

-Comme l'arbre de décision a une structure hiérarchique, le rapport des données extraites au début à l'ensemble est plus grand. Par conséquent, l'effet sur le résultat de __random_state qui spécifie l'ordre de récupération des données est plus important que celui des autres modèles. __

Hyperparamètres de forêt aléatoires

Paramètre n_estimators

-La forêt aléatoire est un modèle qui "crée plusieurs arbres de décision pour des données aléatoires et génère la classe avec le plus grand nombre de résultats de classification en conséquence", mais n_estimators est créé à ce moment __ " Le nombre d'arbres déterminés "__ est affiché.

Paramètre max_depth

-Bien que la profondeur de l'arbre de décision puisse être définie même dans la forêt aléatoire, il est préférable de ne pas approfondir chacun d'eux car il existe plusieurs arbres de décision. Par conséquent, la valeur doit être inférieure à l'arbre de décision normal. __

Paramètre random_state

-Dans Random Forest, des nombres aléatoires sont également utilisés pour extraire des données, comme dans "Créer plusieurs arbres de détermination de données aléatoires", donc si la valeur de __random_state change, les résultats de l'analyse différeront considérablement. __

Hyperparamètres k-NN

Paramètre n_neighbors

-K-NN est un modèle qui "extrait k données d'enseignant similaires aux données de prédiction et produit la classe la plus courante comme résultat de prédiction", mais n_neighbours indique la valeur __ de ce __k. .. Autrement dit, "le nombre de données d'enseignant à comparer pour la prédiction par rapport à une donnée".

Automatisation du réglage (réglage des paramètres)

・ Il est très difficile de régler tous les paramètres tout en modifiant leurs valeurs. Par conséquent, vous pouvez gagner du temps en spécifiant la plage de paramètres __ et en demandant à l'ordinateur de trouver le jeu de paramètres avec les meilleurs résultats. -Il existe deux types d'automatisation: __ "recherche de grille" et "recherche aléatoire" __.

Recherche de grille

-La recherche de grille est une méthode __ dans laquelle plusieurs candidats pour les valeurs de paramètre __ sont spécifiés à l'avance, chaque ensemble est évalué et l'ensemble avec les meilleurs résultats est adopté. -Souvent utilisé lorsque la valeur est "chaîne de caractères", "entier", "Vrai / Faux", etc. (car il est facile de spécifier explicitement). -Effectuez une recherche de grille avec un SVM non linéaire. La méthode consiste à transmettre chaque paramètre en tant que clé de dictionnaire et les valeurs sous forme de liste lors de la création du modèle __. __

from sklearn.model_selection import GridSearchCV
#Paramètres candidats (le noyau est autre que précalculé, C est-5~10 à la i-ème puissance avec jusqu'à 5 comme index)
set_grid = {SVC():{"kernel":["linear","poly","rbf","sigmoid"],"C":[10**i for i in range(-5,5)],"decision_function_shape":["ovr","ovo"],"random_state":[0]}}
#Définissez le "taux de réponse correct" et le "paramètre utilisé" avec les meilleurs résultats à stocker ultérieurement
max_score = 0
best_param = None
#set_Effectuer une recherche de grille avec "SVC ()" de grille comme "modèle" et "paramètre (candidat)" comme "param".
for model,param in set_grid.items():
    search_model = GridSearchCV(model, param)
    search_model.fit(train_X, train_y)
#Calculez le taux de réponse correct et enregistrez le jeu de paramètres avec les meilleurs résultats et le taux de réponse correct.
    pred_y = search_model.predict(test_X)
    score = f1_score(test_y,pred_y,average="micro")
    if max_score<score:
        max_score = score
        best_model = model.class.name
        best_param = searchmodel.best_param

Recherche aléatoire

-La recherche aléatoire est une méthode __ qui spécifie une plage de __ valeurs de paramètre, définit les valeurs de manière aléatoire à partir de cette plage, évalue le modèle et adopte l'ensemble de paramètres avec les meilleurs résultats. -Utilisez la fonction __probability __ pour spécifier la plage. Ceci est importé du module scipy.stats. -Effectuez une recherche de grille avec un SVM non linéaire. La méthode est la même que la recherche de grille.

import scipy.stats as sc
from sklearn.model_selection import RandomizedSearchCV
#Paramètres candidats (C est 0 en moyenne).00001,Distribution uniforme avec un écart type de 1000, aléatoire_l'état prend une valeur entière de 0 à 100 au hasard)
set_rondom = {SVC():{"kernel":["linear","poly","rbf","sigmoid"],"C":sc.uniform(0.00001,1000),"decision_function_shape":["ovr","ovo"],"random_state":sc.randint(0,100)}}
#Définissez le "taux de réponse correct" et le "paramètre utilisé" avec les meilleurs résultats à stocker ultérieurement(Ce qui suit est presque le même que la grille)
max_score = 0
best_param = None
#set_Effectuez une recherche aléatoire avec "SVC ()" dans la grille comme "modèle" et "paramètre (candidat)" comme "param".
for model,param in set_random.items():
    search_model = RandomizedSearchCV(model, param)
    search_model.fit(train_X, train_y)
#Calculez le taux de réponse correct et enregistrez le jeu de paramètres avec les meilleurs résultats et le taux de réponse correct.
    pred_y = search_model.predict(test_X)
    score = f1_score(test_y,pred_y,average="micro")
    if max_score<score:
        max_score = score
        best_model = model.__class__.__name__
        best_param = search_model.best_params_

Difficulté de réglage des hyper paramètres

-Le réglage automatique des paramètres utilise essentiellement une méthode appelée la méthode du gradient, dans laquelle la valeur est déplacée de manière à réduire la fonction de perte. Dans cette méthode de gradient, il existe une pseudo solution __ point de selle __, et si vous êtes accro à cela, vous ne pourrez pas atteindre la solution d'origine. ・ Cependant, comme cette fonction de perte change selon le cas, il est nécessaire de décider du réglage __ en essayant. __

Résumé

-L'hyper paramètre de l'arbre de décision inclut "random_state" en plus de __ "max_depth" __ qui limite la profondeur de l'arbre. -Les hyperparamètres de forêt aléatoire incluent "max_depth" et "random_state" en plus de __ "n_estimators" __ qui spécifient le nombre d'arbres déterminés. -L'hyper paramètre de k-NN a __ "n_neighbors" __ qui spécifie le nombre de données de l'enseignant à comparer pour la prédiction. -Tuning peut être automatisé avec __ "recherche de grille" "recherche aléatoire" __.

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

Recommended Posts

Apprentissage supervisé 3 hyper paramètres et réglage (2)
Apprentissage supervisé 2 Hyper paramètres et réglage (1)
Python: apprentissage supervisé: Hyper Paramètre partie 2
Apprentissage supervisé (classification)
Apprentissage automatique: supervisé - AdaBoost
Python: réglage du Deep Learning
Apprendre avec un enseignant (retour) 1 Bases
Python: apprentissage supervisé (retour)
Python: apprentissage supervisé (classification)
Hyper réglage des paramètres avec LightGBM Tuner
Apprentissage d'ensemble et analyse de paniers
Machine Learning: Supervision - Régression linéaire
Deep running 2 Réglage de l'apprentissage profond
Apprentissage automatique: forêt supervisée - aléatoire
Apprendre avec l'enseignant 1 Principes de base de l'apprentissage avec l'enseignant (classification)
Apprendre avec l'enseignant (retour) 2 édition avancée
Apprentissage automatique et optimisation mathématique
Machine Learning: Supervisé - Support Vector Machine
Machine learning supervisé (classification / régression)
Création, apprentissage et raisonnement de modèles d'apprentissage
Machine Learning: Supervisé - Arbre de décision
Importance de l'apprentissage automatique et de l'apprentissage par mini-lots
Python: Application de l'apprentissage supervisé (retour)
Forêt aléatoire (classification) et réglage des hyperparamètres
Classification et régression dans l'apprentissage automatique
Organisez des plateformes d'apprentissage automatique et d'apprentissage en profondeur
Apprentissage automatique: analyse discriminante linéaire supervisée