[PYTHON] [Kaggle] Essayez d'utiliser LGBM

1. Objet

Dans des compétitions comme Kaggle, le boosting de gradient comme xgboost et LGBM est souvent utilisé. Cependant, j'ai senti qu'il y avait peu d'articles et de sites qui pouvaient être utilisés comme référence pour ceux-ci / j'ai eu beaucoup de mal à l'implémenter moi-même, donc cette fois je voudrais décrire ce que j'ai essayé sur le LGBM et la signification de chaque paramètre. Objectif.

2. Avantages de l'augmentation de gradient

・ Pas besoin de compléter les valeurs manquantes ・ Il n'y a pas de problème même s'il y a des fonctionnalités redondantes (même s'il y a des variables explicatives avec une forte corrélation, elles peuvent être utilisées telles quelles)

-La différence avec la forêt aléatoire est que les arbres sont fabriqués en série.

Avec les fonctionnalités ci-dessus, le renforcement du gradient semble être souvent utilisé.

3. Essayez d'utiliser LGBM

Cette fois, je vais essayer de l'implémenter en utilisant le prix de la maison de Kaggle.

https://www.kaggle.com/c/house-prices-advanced-regression-techniques

(1) Prétraitement

(I) Importer

import numpy as np
import pandas as pd

#Pour la division des données
from sklearn.model_selection import train_test_split

#XGBoost
import xgboost as xgb

(Ii) Lecture / combinaison de données

#Lecture des données
df_train = pd.read_csv("train.csv")
df_test = pd.read_csv("test.csv")

#Jointure de données
df_train["TrainFlag"] = True
df_test["TrainFlag"] = False

df_all = df_train.append(df_test)
df_all.index = df_all["Id"]
df_all.drop("Id", axis = 1, inplace = True)

(Iii) Variable fictive

df_all = pd.get_dummies(df_all, drop_first=True)

(Iv) Division des données

#df_Divisez tout en données d'entraînement et testez à nouveau les données
df_train = df_all[df_all["TrainFlag"] == True]
df_train = df_train.drop(["TrainFlag"], axis = 1)

df_test = df_all[df_all["TrainFlag"] == False]
df_test = df_test.drop(["TrainFlag"], axis = 1)
df_test = df_test.drop(["SalePrice"], axis = 1)
#Répartition des données
y = df_train["SalePrice"].values
X = df_train.drop("SalePrice", axis=1).values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1234)

(2) Essayez d'utiliser LGBM

(I) Création de données LGBM

lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test)

※point important

-Pour utiliser LGBM, il est nécessaire de traiter les données avec lgb.Dataset. -Dans xgboost, df_test (données de test d'origine) devait également être traité avec ".Dataset", mais pas LGBM. Veuillez noter que l'utilisation des données ici est légèrement différente entre xgboost et LGBM.

(Ii) Réglage des paramètres

params = {
        #Problème de retour
        'random_state':1234, 'verbose':0,
        #Indicateurs d'apprentissage(RMSE)
        'metrics': 'rmse',
    }
num_round = 100

* Brève explication des paramètres

Voir ci-dessous pour plus de détails https://lightgbm.readthedocs.io/en/latest/Parameters.html

・ Verbose: la quantité d'informations affichées pendant l'apprentissage. La valeur par défaut est 1. ・ Métriques: comment mesurer la fonction d'erreur de calcul. -Num_round: Nombre maximum d'apprentissage.

(Iii) Formation sur modèle

model = lgb.train(params, lgb_train, num_boost_round = num_round)

(Iv) Prévision

#Prévoir
prediction_LG = model.predict(df_test)

#Arrondir les fractions
prediction_LG = np.round(prediction_LG)

(V) Création d'un fichier à soumettre

submission = pd.DataFrame({"id": df_test.index, "SalePrice": prediction_LG})

C'est tout!

4. Conclusion

Qu'as-tu pensé. Bien que le LGBM soit célèbre, il semble que les débutants prennent du temps pour le mettre en œuvre.

J'ai introduit un code simple afin que vous puissiez comprendre comment l'implémenter aussi facilement que possible. De plus, vous pouvez l'implémenter en copiant le code, mais je pense qu'il est très important de savoir ce que signifie chaque code car c'est une idée approximative.

J'espère que cela vous aidera à approfondir votre compréhension.

Recommended Posts

[Kaggle] Essayez d'utiliser LGBM
[Kaggle] Essayez d'utiliser xg boost
Essayez d'utiliser Tkinter
Essayez d'utiliser docker-py
Essayez d'utiliser Cookiecutter
Essayez d'utiliser PDFMiner
Essayez d'utiliser des géopandas
Essayez d'utiliser scipy
Essayez d'utiliser pandas.DataFrame
Essayez d'utiliser django-swiftbrowser
Essayez d'utiliser matplotlib
Essayez d'utiliser tf.metrics
Essayez d'utiliser PyODE
Essayez d'utiliser virtualenv (virtualenvwrapper)
[Azure] Essayez d'utiliser Azure Functions
Essayez d'utiliser virtualenv maintenant
Essayez d'utiliser W & B
Essayez d'utiliser Django templates.html
Essayez d'utiliser l'analyseur de flux de Python.
Essayez d'utiliser Tkinter de Python
Essayez d'utiliser Tweepy [Python2.7]
Essayez d'utiliser collate_fn de Pytorch
Essayez d'utiliser PythonTex avec Texpad.
[Python] Essayez d'utiliser le canevas de Tkinter
Essayez d'utiliser l'image Docker de Jupyter
Essayez l'optimisation des fonctions à l'aide d'Hyperopt
Essayez d'utiliser matplotlib avec PyCharm
Essayez d'utiliser Azure Logic Apps
Essayez d'utiliser Kubernetes Client -Python-
[Kaggle] Essayez Predict Future Engineering
Essayez d'utiliser l'API Twitter
Essayez d'utiliser AWS SageMaker Studio
Essayez de tweeter automatiquement en utilisant Selenium.
Essayez d'utiliser SQLAlchemy + MySQL (partie 1)
Essayez d'utiliser l'API Twitter
Essayez d'utiliser SQLAlchemy + MySQL (partie 2)
Essayez d'utiliser la fonction de modèle de Django
Essayez d'utiliser l'API PeeringDB 2.0
Essayez d'utiliser la fonction de brouillon de Pelican
Essayez d'utiliser pytest-Overview and Samples-
Essayez le machine learning à la légère avec Kaggle
Essayez d'utiliser le folium avec anaconda
Essayez d'utiliser l'API Admin de la passerelle Janus
[Statistiques] [R] Essayez d'utiliser la régression par points de division.
Essayez d'utiliser Spyder inclus dans Anaconda
Essayez d'utiliser des modèles de conception (édition exportateur)
Essayez d'utiliser Pillow sur iPython (partie 2)
Essayez d'utiliser l'API de Pleasant (python / FastAPI)
Essayez d'utiliser LevelDB avec Python (plyvel)
Essayez d'utiliser pynag pour configurer Nagios
Essayez d'utiliser la fonction de débogage à distance de PyCharm
Essayez d'utiliser ArUco avec Raspberry Pi
Essayez d'utiliser LiDAR bon marché (Camsense X1)
Essayez d'utiliser Pillow sur iPython (partie 3)
Renforcer l'apprentissage 8 Essayez d'utiliser l'interface utilisateur de Chainer
Essayez d'obtenir des statistiques en utilisant e-Stat
Essayez d'utiliser l'API d'action de Python argparse
Essayez d'utiliser le module Python Cmd
Essayez d'utiliser le networkx de Python avec AtCoder
Essayez d'utiliser LeapMotion avec Python
[Kaggle] J'ai essayé le sous-échantillonnage en utilisant un apprentissage déséquilibré