Rumah  >  Artikel  >  Peranti teknologi  >  Pertempuran sebenar LightGBM + pelarasan parameter carian rawak: kadar ketepatan 96.67%

Pertempuran sebenar LightGBM + pelarasan parameter carian rawak: kadar ketepatan 96.67%

PHPz
PHPzasal
2024-06-08 22:45:30673semak imbas

Pertempuran sebenar LightGBM + pelarasan parameter carian rawak: kadar ketepatan 96.67%

Hello semua, saya Peter~

LightGBM ialah algoritma pembelajaran mesin klasik Latar belakang, prinsip dan cirinya sangat wajar untuk dikaji. Algoritma LightGBM menghasilkan ciri seperti kecekapan, kebolehskalaan dan ketepatan yang tinggi. Artikel ini akan memperkenalkan secara ringkas ciri dan prinsip LightGBM serta beberapa kes berdasarkan LightGBM dan pengoptimuman carian rawak.

LightGBM Algorithm

Dalam bidang pembelajaran mesin, Gradient Boosting Machines (GBMs) ialah kelas algoritma pembelajaran ensemble berkuasa yang meminimumkan ralat ramalan dengan menambah pelajar lemah secara beransur-ansur (biasanya pepohon keputusan. GBM sering digunakan untuk meminimumkan ralat ramalan dan dengan itu membina model yang berkuasa, yang boleh dicapai dengan meminimumkan fungsi baki atau kehilangan. Algoritma ini digunakan secara meluas dan sering digunakan untuk meminimumkan ralat ramalan model kukuh yang dibina dengan pelajar lemah seperti pepohon keputusan.

Dalam era data besar, saiz set data telah berkembang secara mendadak, dan GBM tradisional sukar untuk skala dengan berkesan kerana kos pengkomputeran dan penyimpanan yang tinggi.

  • Sebagai contoh, untuk strategi pertumbuhan pokok keputusan split mendatar, walaupun ia boleh menjana pokok yang seimbang, ia sering membawa kepada penurunan keupayaan diskriminasi model manakala untuk strategi pertumbuhan berasaskan daun, walaupun ia boleh bertambah baik ketepatan, ia adalah mudah untuk overfit.
  • Selain itu, kebanyakan pelaksanaan GBM perlu merentasi keseluruhan set data untuk mengira kecerunan dalam setiap lelaran, yang tidak cekap apabila jumlah data adalah besar. Oleh itu, algoritma yang boleh memproses data berskala besar dengan cekap sambil mengekalkan ketepatan model diperlukan.

Untuk menyelesaikan masalah ini, Microsoft melancarkan LightGBM (Light Gradient Boosting Machine) pada tahun 2017, penggunaan memori yang lebih pantas, lebih rendah dan rangka kerja peningkatan kecerunan prestasi yang lebih tinggi.

Alamat pembelajaran rasmi: https://lightgbm.readthedocs.io/en/stable/

Prinsip LightGBM

1 Algoritma pepohon keputusan berdasarkan histogram:

  • Prinsip: LightGBM menggunakan teknologi pengoptimuman histogram untuk didiskrisikan ke dalam tong tertentu (iaitu baldi histogram), mengurangkan jumlah data yang perlu dikira apabila nod dipecahkan.
  • Kelebihan: Kaedah ini boleh meningkatkan kelajuan pengiraan sambil mengurangkan penggunaan memori.
  • Butiran pelaksanaan: Untuk setiap ciri, algoritma mengekalkan histogram untuk merekodkan maklumat statistik ciri tersebut dalam baldi yang berbeza. Apabila melakukan pemisahan nod, maklumat histogram ini boleh digunakan secara langsung tanpa merentasi semua data.

2. Strategi pertumbuhan pokok mengikut daun dengan sekatan kedalaman:

  • Prinsip: Berbeza daripada pembelahan mendatar tradisional, strategi pertumbuhan mengikut daun adalah untuk memilih nod dengan keuntungan pecahan terbesar dari semua nod daun semasa setiap kali. Berpisah.
  • Kelebihan: Strategi ini boleh menjadikan pepohon keputusan lebih fokus pada bahagian data yang tidak normal, biasanya menghasilkan ketepatan yang lebih baik.
  • Kelemahan: Ia boleh menyebabkan pemasangan berlebihan, terutamanya apabila terdapat bunyi bising dalam data.
  • Langkah penambahbaikan: LightGBM menghalang pemasangan berlebihan dengan menetapkan had kedalaman maksimum.

3. Persampelan kecerunan satu sisi (GOSS):

  • Prinsip: Untuk sampel kecerunan yang besar dalam set data, algoritma GOSS hanya mengekalkan sebahagian daripada data (biasanya sampel dengan kecerunan yang besar), mengurangkan jumlah pengiraan sambil memastikan tiada kerugian Terlalu banyak maklumat.
  • Kelebihan: Kaedah ini boleh mempercepatkan latihan tanpa kehilangan ketepatan yang ketara.
  • Senario aplikasi: Sangat sesuai untuk situasi di mana data condong adalah serius.

4. Himpunan ciri saling eksklusif (EFB):

  • Prinsip: EFB ialah teknologi yang mengurangkan bilangan ciri dan meningkatkan kecekapan pengiraan. Ia menggabungkan ciri yang saling eksklusif (iaitu ciri yang tidak pernah bukan sifar pada masa yang sama) untuk mengurangkan dimensi ciri.
  • Kelebihan: Meningkatkan kecekapan penggunaan memori dan kelajuan latihan.
  • Butiran pelaksanaan: Melalui ciri eksklusif bersama, algoritma boleh memproses lebih banyak ciri pada masa yang sama, sekali gus mengurangkan bilangan sebenar ciri yang diproses.

5. Menyokong pembelajaran selari dan teragih:

  • Prinsip: LightGBM menyokong pembelajaran berbilang benang dan boleh menggunakan berbilang CPU untuk latihan selari.
  • Kelebihan: Meningkatkan kelajuan latihan dengan ketara pada pemproses berbilang teras.
  • Skalabiliti: Ia juga menyokong pembelajaran teragih dan boleh menggunakan berbilang mesin untuk melatih model bersama.

6. Pengoptimuman cache:

  • Prinsip: Cara membaca data dioptimumkan, dan lebih banyak cache boleh digunakan untuk mempercepatkan pertukaran data.
  • Kelebihan: Terutama pada set data yang besar, pengoptimuman cache boleh meningkatkan prestasi dengan ketara.

7. Menyokong pelbagai fungsi kerugian:

  • Ciri-ciri: Selain fungsi regresi dan kehilangan klasifikasi yang biasa digunakan, LightGBM juga menyokong fungsi kerugian tersuai untuk memenuhi keperluan perniagaan yang berbeza.

8 Penyelarasan dan pemangkasan:

  • Prinsip: Terma penyelarasan L1 dan L2 disediakan untuk mengawal kerumitan model dan mengelakkan pemasangan berlebihan.
  • Pelaksanaan: Melaksanakan strategi pemangkasan ke belakang untuk mengelakkan lebihan pemasangan.

9. Kebolehtafsiran model:

  • Ciri: Oleh kerana ia adalah model berdasarkan pokok keputusan, LightGBM mempunyai kebolehtafsiran model yang baik dan boleh memahami logik keputusan model melalui kepentingan ciri dan kaedah lain.

Ciri LightGBM

Kecekapan

  • Kelebihan kelajuan: Melalui pengoptimuman histogram dan strategi pertumbuhan bijak daun, LightGBM meningkatkan kelajuan latihan sambil memastikan ketepatan.
  • Penggunaan memori: LightGBM memerlukan kurang memori berbanding pelaksanaan GBM lain, yang membolehkannya mengendalikan set data yang lebih besar.

Ketepatan

  • Strategi pertumbuhan didahulukan terbaik: Strategi pertumbuhan bijak daun yang diguna pakai oleh LightGBM boleh memuatkan data dengan lebih rapat dan biasanya boleh mencapai ketepatan yang lebih baik daripada pembahagian mendatar.
  • Kaedah untuk mengelak pemasangan berlebihan: Dengan menetapkan had kedalaman maksimum dan pemangkasan ke belakang, LightGBM boleh meningkatkan ketepatan model sambil mengelak daripada pemasangan berlebihan.

Skalabiliti

  • Pembelajaran selari dan teragih: LightGBM direka bentuk untuk menyokong pengkomputeran berbilang benang dan teragih, yang membolehkannya menggunakan sepenuhnya kuasa pengkomputeran perkakasan moden.
  • Sokongan berbilang platform: LightGBM boleh dijalankan pada berbilang sistem pengendalian seperti Windows, macOS dan Linux serta menyokong berbilang bahasa pengaturcaraan seperti Python, R dan Java.

Kemudahan penggunaan

  • Penalaan parameter: LightGBM menyediakan pelbagai pilihan parameter untuk memudahkan pengguna melaraskan mengikut masalah tertentu.
  • Model pra-latihan: Pengguna boleh bermula daripada model pra-latihan untuk mempercepatkan proses pemodelan mereka.
  • Alat tafsiran model: LightGBM menyediakan alat penilaian kepentingan ciri untuk membantu pengguna memahami proses membuat keputusan model.

Import perpustakaan

Dalam [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")

Muat data

Muatkan set data iris awam:

Dalam [2]:

# 加载数据集data = load_iris()X, y = data.data, data.targety = [int(i) for i in y]# 将标签转换为整数

X[: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]])

y[:10]
rreee

rreee

Keluar [3]:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Dalam [4]:
# 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

Keluar[4]:

lgb_train = lgb.Dataset(X_train, label=y_train)
Bahagikan data

Dalam [5]:

Serentak data

Dalam [6]:

# 设置参数范围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表示不显示}
Tetapan parameter

Dalam [7]:

# 初始化模型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
Carian rawak untuk pelarasan parameter

Dalam [8]:

Output parameter terbaik
Dalam [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}

Memodelkan menggunakan parameter optimum

Dalam [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
🎜🎜

Atas ialah kandungan terperinci Pertempuran sebenar LightGBM + pelarasan parameter carian rawak: kadar ketepatan 96.67%. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn