Bonjour à tous, je m'appelle Peter~
LightGBM est un algorithme d'apprentissage automatique classique. Son contexte, ses principes et ses caractéristiques méritent d'être étudiés. L'algorithme de LightGBM offre des fonctionnalités telles qu'une efficacité élevée, une évolutivité et une grande précision. Cet article présentera brièvement les caractéristiques et principes de LightGBM ainsi que quelques cas basés sur LightGBM et l'optimisation de la recherche aléatoire.
Algorithme LightGBM
Dans le domaine de l'apprentissage automatique, les machines à booster de gradient (GBM) sont une classe d'algorithmes d'apprentissage d'ensemble puissants qui minimisent les erreurs de prédiction en ajoutant progressivement des apprenants faibles (généralement des arbres de décision). Les GBM sont souvent utilisés pour minimiser l'erreur de prédiction et ainsi construire un modèle puissant, qui peut être obtenu en minimisant la fonction résiduelle ou de perte. Cet algorithme est largement utilisé et souvent utilisé pour minimiser l'erreur de prédiction des modèles forts construits avec des apprenants faibles tels que les arbres de décision.
À l'ère du Big Data, la taille des ensembles de données a considérablement augmenté et les GBM traditionnels sont difficiles à faire évoluer efficacement en raison de leurs coûts de calcul et de stockage élevés.
- Par exemple, pour la stratégie de croissance d'arbre de décision divisée horizontale, bien qu'elle puisse générer un arbre équilibré, elle entraîne souvent une diminution de la capacité de discrimination du modèle tandis que pour la stratégie de croissance basée sur les feuilles, bien qu'elle puisse s'améliorer ; la précision, il est facile de surajuster.
- De plus, la plupart des implémentations de GBM doivent parcourir l'intégralité de l'ensemble de données pour calculer les gradients à chaque itération, ce qui est inefficace lorsque la quantité de données est énorme. Par conséquent, un algorithme capable de traiter efficacement des données à grande échelle tout en maintenant la précision du modèle est nécessaire.
Afin de résoudre ces problèmes, Microsoft a lancé LightGBM (Light Gradient Boosting Machine) en 2017, un cadre d'amélioration de gradient plus rapide, moins gourmand en mémoire et plus performant.
Adresse d'apprentissage officielle : https://lightgbm.readthedocs.io/en/stable/
Principe de LightGBM
1. Algorithme d'arbre de décision basé sur l'histogramme :
- Principe : LightGBM utilise la technologie d'optimisation d'histogramme pour des valeurs de caractéristiques continues. sont discrétisés dans des compartiments spécifiques (c'est-à-dire des compartiments de l'histogramme), réduisant ainsi la quantité de données qui doivent être calculées lorsqu'un nœud est divisé.
- Avantages : Cette méthode peut augmenter la vitesse de calcul tout en réduisant l'utilisation de la mémoire.
- Détails de mise en œuvre : pour chaque fonctionnalité, l'algorithme maintient un histogramme pour enregistrer les informations statistiques de la fonctionnalité dans différents compartiments. Lors de la division des nœuds, les informations de ces histogrammes peuvent être directement utilisées sans parcourir toutes les données.
2. Stratégie de croissance des arbres par feuille avec restriction de profondeur :
- Principe : Différente de la division horizontale traditionnelle, la stratégie de croissance par feuille consiste à sélectionner à chaque fois le nœud avec le plus grand profit partagé parmi tous les nœuds de feuille actuels. Diviser.
- Avantages : Cette stratégie peut permettre à l'arbre de décision de se concentrer davantage sur les parties anormales des données, ce qui entraîne généralement une meilleure précision.
- Inconvénients : Cela peut facilement conduire à un surajustement, surtout lorsqu'il y a du bruit dans les données.
- Mesures d'amélioration : LightGBM empêche le surapprentissage en définissant une limite de profondeur maximale.
3. Échantillonnage de gradient unilatéral (GOSS) :
- Principe : Pour les échantillons à grand gradient dans l'ensemble de données, l'algorithme GOSS ne conserve qu'une partie des données (généralement des échantillons avec de grands gradients), réduisant ainsi la quantité de données. calcul tout en garantissant aucune perte Trop d'informations.
- Avantages : Cette méthode permet d'accélérer l'entraînement sans perte significative de précision.
- Scénarios d'application : particulièrement adaptés aux situations où l'asymétrie des données est grave.
4. Regroupement de fonctionnalités mutuellement exclusives (EFB) :
- Principe : EFB est une technologie qui réduit le nombre de fonctionnalités et améliore l'efficacité de calcul. Il combine des fonctionnalités mutuellement exclusives (c'est-à-dire des fonctionnalités qui ne sont jamais différentes de zéro en même temps) pour réduire la dimensionnalité des fonctionnalités.
- Avantages : amélioration de l'efficacité de l'utilisation de la mémoire et de la vitesse d'entraînement.
- Détails de mise en œuvre : grâce à l'exclusivité mutuelle des fonctionnalités, l'algorithme peut traiter plus de fonctionnalités en même temps, réduisant ainsi le nombre réel de fonctionnalités traitées.
5. Prise en charge de l'apprentissage parallèle et distribué :
- Principe : LightGBM prend en charge l'apprentissage multithread et peut utiliser plusieurs processeurs pour la formation en parallèle.
- Avantages : améliore considérablement la vitesse de formation sur les processeurs multicœurs.
- Évolutivité : il prend également en charge l'apprentissage distribué et peut utiliser plusieurs machines pour former conjointement des modèles.
6. Optimisation du cache :
- Principe : La manière de lire les données est optimisée et davantage de caches peuvent être utilisés pour accélérer l'échange de données.
- Avantages : En particulier sur les grands ensembles de données, l'optimisation du cache peut améliorer considérablement les performances.
7. Prend en charge plusieurs fonctions de perte :
- Caractéristiques : En plus des fonctions de perte de régression et de classification couramment utilisées, LightGBM prend également en charge des fonctions de perte personnalisées pour répondre aux différents besoins commerciaux.
8. Régularisation et élagage :
- Principe : des termes de régularisation L1 et L2 sont fournis pour contrôler la complexité du modèle et éviter le surajustement.
- Mise en œuvre : la stratégie d'élagage en arrière est mise en œuvre pour éviter davantage le surajustement.
9. Interprétabilité du modèle :
- Caractéristiques : Parce qu'il s'agit d'un modèle basé sur des arbres de décision, LightGBM a une bonne interprétabilité du modèle et peut comprendre la logique de décision du modèle grâce à l'importance des fonctionnalités et d'autres méthodes.
Caractéristiques de LightGBM
Efficacité
- Avantage de vitesse : grâce à l'optimisation de l'histogramme et à la stratégie de croissance par feuille, LightGBM améliore considérablement la vitesse d'entraînement tout en garantissant la précision.
- Utilisation de la mémoire : LightGBM nécessite moins de mémoire que les autres implémentations de GBM, ce qui lui permet de gérer des ensembles de données plus volumineux.
Précision
- Stratégie de croissance la meilleure d'abord : la stratégie de croissance par feuille adoptée par LightGBM peut s'adapter plus étroitement aux données et peut généralement atteindre une meilleure précision que la segmentation horizontale.
- Méthodes pour éviter le surajustement : en définissant une limite de profondeur maximale et un élagage vers l'arrière, LightGBM peut améliorer la précision du modèle tout en évitant le surajustement.
Évolutivité
- Apprentissage parallèle et distribué : LightGBM est conçu pour prendre en charge l'informatique multithread et distribuée, ce qui lui permet d'utiliser pleinement la puissance de calcul du matériel moderne.
- Prise en charge multiplateforme : LightGBM peut fonctionner sur plusieurs systèmes d'exploitation tels que Windows, macOS et Linux, et prend en charge plusieurs langages de programmation tels que Python, R et Java.
Facilité d'utilisation
- Réglage des paramètres : LightGBM offre une multitude d'options de paramètres pour permettre aux utilisateurs de s'ajuster en fonction de problèmes spécifiques.
- Modèle pré-entraîné : les utilisateurs peuvent partir d'un modèle pré-entraîné pour accélérer leur processus de modélisation.
- Outils d'interprétation du modèle : LightGBM fournit des outils d'évaluation de l'importance des fonctionnalités pour aider les utilisateurs à comprendre le processus de prise de décision du modèle.
Importer la bibliothèque
Dans [1]:
import numpy as npimport lightgbm as lgbfrom sklearn.model_selection import train_test_split, RandomizedSearchCVfrom sklearn.datasets import load_irisfrom sklearn.metrics import accuracy_scoreimport warningswarnings.filterwarnings("ignore")
Copier après la connexion
Charger les données
Charger l'ensemble de données public de l'iris:
Dans [2]:
# 加载数据集data = load_iris()X, y = data.data, data.targety = [int(i) for i in y]# 将标签转换为整数
Copier après la connexion
Dans [3]:
X[:3]
Copier après la connexion
Dehors [3] :
array([[5.1, 3.5, 1.4, 0.2], [4.9, 3. , 1.4, 0.2], [4.7, 3.2, 1.3, 0.2]])
Copier après la connexion
Dans [4] :
y[:10]
Copier après la connexion
Out[4] :
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Copier après la connexion
Diviser les données
Dans [5] :
# 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
Copier après la connexion
Créer simultanément un ensemble de données LightGBM :
Dans [6] :
lgb_train = lgb.Dataset(X_train, label=y_train)
Copier après la connexion
Paramètres
Dans [7] :
# 设置参数范围param_dist = {'boosting_type': ['gbdt', 'dart'],# 提升类型梯度提升决策树(gbdt)和Dropouts meet Multiple Additive Regression Trees(dart)'objective': ['binary', 'multiclass'],# 目标;二分类和多分类'num_leaves': range(20, 150),# 叶子节点数量'learning_rate': [0.01, 0.05, 0.1],# 学习率'feature_fraction': [0.6, 0.8, 1.0],# 特征采样比例'bagging_fraction': [0.6, 0.8, 1.0],# 数据采样比例'bagging_freq': range(0, 80),# 数据采样频率'verbose': [-1]# 是否显示训练过程中的详细信息,-1表示不显示}
Copier après la connexion
Recherche aléatoire pour le réglage des paramètres
Dans [8] :
# 初始化模型model = lgb.LGBMClassifier()# 使用随机搜索进行参数调优random_search = RandomizedSearchCV(estimator=model, param_distributinotallow=param_dist, # 参数组合 n_iter=100, cv=5, # 5折交叉验证 verbose=2, random_state=42, n_jobs=-1)# 模型训练random_search.fit(X_train, y_train)Fitting 5 folds for each of 100 candidates, totalling 500 fits
Copier après la connexion
Sortir la meilleure combinaison de paramètres :
Dans [9] :
# 输出最佳参数print("Best parameters found: ", random_search.best_params_)Best parameters found:{'verbose': -1, 'objective': 'multiclass', 'num_leaves': 87, 'learning_rate': 0.05, 'feature_fraction': 0.6, 'boosting_type': 'gbdt', 'bagging_freq': 22, 'bagging_fraction': 0.6}
Copier après la connexion
Modélisation à l'aide de paramètres optimaux
Dans [10] :
# 使用最佳参数训练模型best_model = random_search.best_estimator_best_model.fit(X_train, y_train)# 预测y_pred = best_model.predict(X_test)y_pred = [round(i) for i in y_pred]# 将概率转换为类别# 评估模型print('Accuracy: %.4f' % accuracy_score(y_test, y_pred))Accuracy: 0.9667
Copier après la connexion
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!