[PYTHON] [Kaggle] Versuchen Sie es mit LGBM

1. Zweck

In Wettbewerben wie Kaggle wird häufig ein Gradienten-Boosting wie xgboost und LGBM verwendet. Ich hatte jedoch das Gefühl, dass es nur wenige Artikel und Websites gibt, die als Referenz für diese verwendet werden könnten. Ich hatte große Probleme, sie selbst zu implementieren. Daher möchte ich dieses Mal beschreiben, was ich über LGBM versucht habe und welche Bedeutung die einzelnen Parameter haben. Zweck.

2. Vorteile der Gradientenverstärkung

・ Fehlende Werte müssen nicht vervollständigt werden ・ Es gibt kein Problem, selbst wenn redundante Funktionen vorhanden sind (selbst wenn es erklärende Variablen mit hoher Korrelation gibt, können sie so verwendet werden, wie sie sind).

-Der Unterschied zum zufälligen Wald besteht darin, dass die Bäume in Reihe geschaltet werden.

Mit den oben genannten Merkmalen scheint häufig eine Gradientenverstärkung verwendet zu werden.

3. Versuchen Sie es mit LGBM

Dieses Mal werde ich versuchen, es mit Kaggles Hauspreis umzusetzen.

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

(1) Vorbehandlung

(I) Importieren

import numpy as np
import pandas as pd

#Zur Datenaufteilung
from sklearn.model_selection import train_test_split

#XGBoost
import xgboost as xgb

(Ii) Lesen / Kombinieren von Daten

#Daten gelesen
df_train = pd.read_csv("train.csv")
df_test = pd.read_csv("test.csv")

#Datenverbindung
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) Dummy-Variable

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

(Iv) Datenaufteilung

#df_Teilen Sie alles erneut in Trainingsdaten und Testdaten auf
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)
#Datenaufteilung
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) Versuchen Sie es mit LGBM

(I) LGBM-Datenerstellung

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

※wichtiger Punkt

-Um LGBM zu verwenden, müssen die Daten mit lgb.Dataset verarbeitet werden. -In xgboost musste df_test (ursprüngliche Testdaten) ebenfalls mit ".Dataset" verarbeitet werden, LGBM jedoch nicht. Bitte beachten Sie, dass sich die Verwendung der Daten hier zwischen xgboost und LGBM geringfügig unterscheidet.

(Ii) Parametereinstellung

params = {
        #Rückgabeproblem
        'random_state':1234, 'verbose':0,
        #Indikatoren für das Lernen(RMSE)
        'metrics': 'rmse',
    }
num_round = 100

* Kurze Erklärung der Parameter

Siehe unten für Details https://lightgbm.readthedocs.io/en/latest/Parameters.html

・ Ausführlich: Wie viele Informationen werden während des Lernens angezeigt? Der Standardwert ist 1. ・ Metriken: So messen Sie die Fehlberechnungsfunktion. -Num_round: Maximale Anzahl von Lernvorgängen.

(Iii) Modelltraining

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

(Iv) Prognose

#Prognose
prediction_LG = model.predict(df_test)

#Rundungsfraktionen
prediction_LG = np.round(prediction_LG)

(V) Erstellen einer Datei zur Einreichung

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

Das ist alles!

4. Fazit

Was haben Sie gedacht. Obwohl LGBM berühmt ist, scheinen sich Anfänger Zeit zu nehmen, um es umzusetzen.

Ich habe einen einfachen Code eingeführt, damit Sie verstehen, wie Sie ihn so einfach wie möglich implementieren können. Sie können es auch implementieren, indem Sie den Code kopieren. Ich halte es jedoch für sehr wichtig zu wissen, was jeder Code bedeutet, da es sich um eine grobe Idee handelt.

Ich hoffe, es wird Ihnen helfen, Ihr Verständnis zu vertiefen.

Recommended Posts

[Kaggle] Versuchen Sie es mit LGBM
[Kaggle] Versuchen Sie es mit xg boost
Versuchen Sie es mit Tkinter
Versuchen Sie es mit Docker-Py
Versuchen Sie es mit einem Ausstecher
Versuchen Sie es mit PDFMiner
Versuchen Sie es mit Geopandas
Versuchen Sie es mit scipy
Versuchen Sie es mit pandas.DataFrame
Versuchen Sie es mit Django-Swiftbrowser
Versuchen Sie es mit matplotlib
Versuchen Sie es mit tf.metrics
Versuchen Sie es mit PyODE
Versuchen Sie es mit virtualenv (virtualenvwrapper)
[Azure] Versuchen Sie, Azure-Funktionen zu verwenden
Versuchen Sie es jetzt mit virtualenv
Versuchen Sie es mit W & B.
Versuchen Sie es mit Django templates.html
Versuchen Sie es mit dem Feed-Parser von Python.
Versuchen Sie es mit Pythons Tkinter
Versuchen Sie es mit Tweepy [Python2.7]
Versuchen Sie es mit Pytorchs collate_fn
Versuchen Sie, PythonTex mit Texpad zu verwenden.
[Python] Versuchen Sie, Tkinters Leinwand zu verwenden
Versuchen Sie es mit Jupyters Docker-Image
Versuchen Sie die Funktionsoptimierung mit Hyperopt
Versuchen Sie es mit matplotlib mit PyCharm
Versuchen Sie es mit Azure Logic Apps
Versuchen Sie es mit Kubernetes Client -Python-
[Kaggle] Versuchen Sie, Future Engineering vorherzusagen
Versuchen Sie es mit der Twitter-API
Versuchen Sie es mit AWS SageMaker Studio
Versuchen Sie, automatisch mit Selen zu twittern.
Versuchen Sie es mit SQLAlchemy + MySQL (Teil 1)
Versuchen Sie es mit der Twitter-API
Versuchen Sie es mit SQLAlchemy + MySQL (Teil 2)
Versuchen Sie es mit der Vorlagenfunktion von Django
Versuchen Sie es mit der PeeringDB 2.0-API
Versuchen Sie es mit der Entwurfsfunktion von Pelican
Versuchen Sie es mit pytest-Overview und Samples-
Versuchen Sie es mit Kaggle leicht maschinell
Versuchen Sie es mit Folium mit Anakonda
Versuchen Sie es mit der Admin-API von Janus Gateway
[Statistik] [R] Versuchen Sie, die Teilungspunktregression zu verwenden.
Versuchen Sie es mit Spyder, das in Anaconda enthalten ist
Versuchen Sie es mit Designmustern (Exporter Edition)
Versuchen Sie es mit Pillow auf iPython (Teil 2)
Versuchen Sie es mit der Pleasant-API (Python / FastAPI).
Versuchen Sie es mit LevelDB mit Python (plyvel)
Versuchen Sie, Nagios mit pynag zu konfigurieren
Versuchen Sie, die Remote-Debugging-Funktion von PyCharm zu verwenden
Versuchen Sie es mit ArUco mit Raspberry Pi
Versuchen Sie es mit billigem LiDAR (Camsense X1)
Versuchen Sie es mit Pillow auf iPython (Teil 3).
Stärkung des Lernens 8 Versuchen Sie, die Chainer-Benutzeroberfläche zu verwenden
Versuchen Sie, Statistiken mit e-Stat abzurufen
Versuchen Sie es mit der Aktions-API von Python argparse
Versuchen Sie es mit dem Python Cmd-Modul
Versuchen Sie, Pythons networkx mit AtCoder zu verwenden
Versuchen Sie es mit LeapMotion mit Python
[Kaggle] Ich habe versucht, mit unausgeglichenem Lernen zu unterabtasten