大数跨境
0
0

【R语言机器学习】使用lightgbm包和Graphviz包进行lightGBM模型相关分析及可视化

【R语言机器学习】使用lightgbm包和Graphviz包进行lightGBM模型相关分析及可视化 医学统计数据分析
2024-11-03
0
导读:【R语言机器学习】使用lightgbm包和Graphviz包进行lightGBM模型相关分析及可视化
LightGBM模型

LightGBM(Light Gradient Boosting Machine)是一种基于‌决策树的梯度提升框架,主要用于分类、回归和排序等多种机器学习任务。其核心原理是利用‌基分类器(决策树)进行训练,通过集成学习得到最优模型。LightGBM相比其他模型如‌XGBoost,在处理大规模数据集时具有更高的计算效率和可扩展性。


LightGBM模型的主要优化方法

直方图算法‌:LightGBM使用直方图算法来加速决策树的构建过程。它将连续的特征值离散化为k个整数,形成直方图,从而减少计算复杂度。

单边梯度采样算法(GOSS)‌:GOSS通过采样保留梯度大的样本并随机采样一些梯度小的样本,以减少计算复杂度,同时保持数据分布的准确性。

互斥特征捆绑算法(‌EFB)‌:EFB通过将互斥特征捆绑在一起,减少特征数量,进一步加速训练过程。

并行学习‌:LightGBM支持特征并行和数据并行,通过分散规则和直方图加速训练,减少通信和计算开销。

支持‌类别特征l‌ightGBM可以直接处理类别特征,无需转换为one-hot编码,大大提高了处理速度。

LightGBM模型的应用场景和优势

LightGBM以其高效率和准确性在多个领域得到广泛应用。由于其能够处理大规模数据集,适合于实时预测和大规模在线学习。此外,LightGBM在处理稀疏数据时表现出色,能够有效地减少特征维度,提高训练速度。




LightGBM(Light Gradient Boosting Machine)是一个实现GBDT算法的框架,支持高效率的并行训练,并且具有更快的训练速度、更低的内存消耗、更好的准确率、支持分布式可以快速处理海量数据等优点。

今天我们仍以Excel示例数据为例,简单演示一下LightGBM模型的基础操作。我们先用Rstudio打开示例数据。










#加载包

install.packages(lightgbm)

install.packages("Graphviz")

library(lightgbm)

library(Graphviz)






#准备数据 

Train$结局 <- as.factor(Train$结局)

Train.matrix<-as.matrix(Train[,-ncol(Train)])

Test.matrix<-as.matrix(Test[,-ncol(Test)])

Train.labels<-as.numeric(Train$结局)

lgb.Train<-lgb.Dataset(data=Train.matrix,label=Train.labels-1) #LightGBM需要0和1标签 






#设置LightGBM参数 

params <- list(

  objective="binary",

  num_leaves=31,

  learning_rate=0.1,

  nrounds=1000)

#训练模型

lgb.model<-lgb.train(params=params,data=lgb.Train,

               nrounds=params[['nrounds']],verbose=-1) 

summary(lgb.model)








#预测测试集 

pred <- predict(lgb.model, as.matrix(Test[, -ncol(Test)])) 

head(pred)

pred








#绘制ROC曲线

library(pROC)

roc.curve<-roc(Test$结局,pred)

plot(roc.curve,legacy.axes=TRUE,main="ROC Curve for Clinical Data") 

summary(roc.curve)








#真实值与预测值散点图

library(dplyr)

library(ggplot2)

library(tune)

# 整合预测值和真实值

lgb.res <- bind_cols(truevalue=Test$结局,estimator=pred)

ggplot(lgb.res,mapping=aes(truevalue,estimator))+

  geom_point(alpha=0.3,size=2)+

  geom_abline(intercept=0,slope=1,col="red")+

  labs(x = "observed", y = "predicted") +

  coord_obs_pred()








#模型解释

library(DALEX)

library(DALEXtra)

# 构建模型解释器

exp <- DALEXtra::explain_tidymodels(lgb.model,

                                    Test.matrix,

                                    y=Test.matrix,

                                    label = "LightGBM")

#变量重要性

lgb_mp <- model_parts(exp)          

plot(lgb_mp)








#模型诊断

plot(model_diagnostics(exp))








#waterfall图

library(shapviz)

shap <- shapviz(lgb.model,X_pred=Test.matrix)

# 每个变量对预测的贡献

sv_waterfall(shap,row_id = 1)








#基于SHAP值的变量重要性

sv_importance(shap,kind = "beeswarm")






医学统计数据分析分享交流SPSS、R语言、Python、ArcGis、Geoda、GraphPad、数据分析图表制作等心得。承接数据分析,论文修回,医学统计,空间分析,问卷分析业务。若有投稿和数据分析代做需求,可以直接联系我,谢谢!

【声明】内容源于网络
0
0
医学统计数据分析
分享交流SPSS、R语言、Python、ArcGis、Geoda、GraphPad、数据分析图表制作等心得。承接数据分析,论文返修,医学统计,空间分析,机器学习,生存分析,时间序列,时空面板,深度学习,问卷分析等业务。公众号右下角可联系作者
内容 323
粉丝 0
医学统计数据分析 分享交流SPSS、R语言、Python、ArcGis、Geoda、GraphPad、数据分析图表制作等心得。承接数据分析,论文返修,医学统计,空间分析,机器学习,生存分析,时间序列,时空面板,深度学习,问卷分析等业务。公众号右下角可联系作者
总阅读32
粉丝0
内容323