- lgb.dataset是常用的从pandas等加载数据的方法。
- lgb.booster是用于加载您之前训练的模型?(不确定)
- lgb.cvbooster与lgb.booster相同,除了一些细节?(不确定)
- lgb.sequence是类似DNN中使用的一维数据集吗?(不确定)
LightGBM模型训练始于将原始数据转换为Dataset
。要逐步构建这样的对象,您需要请求LightGBM迭代由Sequence
提供的数据块。
训练将生成一个称为Booster
的模型对象。该对象可以以文本或二进制形式保存,并且其predict()
方法可用于对新数据进行预测。
LightGBM的R和Python包都包含一个名为lgb.cv()
的函数,它执行k倍交叉验证。此功能生成一个CVBooster
,其中包含一个Booster
对象列表(每个折叠一个)。
Dataset
在训练之前,LightGBM会进行一次性的预处理,例如将连续特征分桶成直方图并删除无法拆分的特征。有关详细信息,请参见此答案。
Dataset
类管理该预处理。例如,在lightgbm
Python包中,您可以使用lgb.Dataset()
从numpy
数组、scipy
稀疏数组、pandas
DataFrame或CSV/TSV文件创建一个这些对象。
Python包中的lgb.train()
期望传递其中的一个对象。在scikit-learn API中的类期望传递原始数据,如numpy
数组,并为您内部创建Dataset
。
Booster
"LightGBM"中的"B"代表"Boosting"。 Booster
类是LightGBM的核心模型对象。它保存模型的当前状态,并具有执行诸如继续训练过程(.update()
)、在新数据上进行预测(.predict()
)等操作的方法。
使用Python包训练模型时,可以使用lgb.train()
生成这些Booster
对象。如果使用scikit-learn API,则生成的模型对象将包含一个Booster
。
CVBooster
CVBooster
类不在LightGBM C/C++核心库中存在。它是特定于包装器软件,例如R和Python包的。
CVBooster
中的"CV"表示“交叉验证”。它是由LightGBM Python和R包中的交叉验证函数lgb.cv()
产生的对象。
CVBooster
包含一个属性.boosters
,它是Booster
对象的列表(每个fold对应一个)。
Sequence
自LightGBM 3.3.0起,Sequence
对象是新的,并且截至该版本仅支持Python包。
Sequence
对象是一个Python类,允许LightGBM迭代原始数据块以逐步构建Dataset
对象。
当您的原始数据已经分成文件(例如收集的HDF5文件)或者您担心在Dataset
构建期间超出可用内存时,应使用此对象。