0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SparkMLlib GBDT算法工业大数据实战

格创东智 2019-04-28 14:11 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在格物汇之前发表的《工业大数据挖掘的利器——Spark MLlib》中提到,Spark 的MLlib组件能够对工业现场海量数据进行高效挖掘,快速呈现结果给业务分析人员。接下来将向大家介绍SparkMLlib 中的GBDT算法,并将应用该算法对工业数据进行代码实战。

1算法概念

GB(Gradient Boosting)梯度提升算法,GB 共需要进行M次迭代,通过采用梯度下降的方法,每次迭代向损失函数的负梯度方向进行移动,从而使损失函数越来越小,进而使模型越来越精确。算法伪代码如下:


图片 1.png


GB算法跟原始的Boosting算法相比较,还是有比较明显的区别。


Boosting算法开始的时候,是会给每个样本附上权重的,在每次迭代的时候就会增加错的样本的权重,减少对的样本的权重,经过N次迭代之后,会得到N个分类器,然后我们再将他们组合起来,得到最终模型。


GB算法与Boosting区别是,他的每一次迭代的目标都是减少上一次的残差,所以在残差减少的方向上建立一个新的模型。在GB算法框架上加入决策树,就是GBDT(GradientBoost Decision Tree)算法。

GBDT主要的优点有:

1) 可以灵活处理各种类型的数据,包括连续值和离散值。

2) 在相对少的调参时间情况下,预测的准备率也可以比较高。这个是相对SVM来说的。

3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

4) 很好的利用了弱分类器进行级联。

5) 充分考虑的每个分类器的权重。

6) 可以得到变量间的重要性排序。


GBDT的主要缺点有:

1)由于弱学习器之间存在依赖关系,难以并行训练数据,不过可以通过自采样的SGBT来达到部分并行。

1完整代码实例

工业生产中,产品在制程过程中会有很多特性值,如果能对产品的特性值及时进行预测,得到特性值的具体数值,那么就会帮组业务人员知晓产品的质量,实现产品的全检,并能防止异常产品后流,造成不必要的浪费。


本次实战代码的采用的数据是半导体制程中某一道工序的机台的制程参数值,通过采用SparkMLlib中的GBDT算法对工业现场机台的制程参数进行建模,预测出经过该机台生产之后产品的膜层厚度。

packageSparkML

importcommon.Logger
importorg.apache.spark.ml.Pipeline
importorg.apache.spark.ml.evaluation.{BinaryClassificationEvaluator,RegressionEvaluator}
importorg.apache.spark.ml.feature.VectorAssembler
importorg.apache.spark.ml.regression.GBTRegressor
importorg.apache.spark.ml.tuning.{CrossValidator,ParamGridBuilder}
importorg.apache.spark.sql.{Row,SparkSession}
importscala.collection.mutable.ArrayBuffer
/**
* Created by huanghuan01 on 2019/3/27.
*/
objectgbdtDemoextendsLogger{

defmain(args: Array[String]):Unit= {
valspark= SparkSession
.builder()
.enableHiveSupport()
.master(
"local[4]")
.appName(
"gbdtDemo")
.getOrCreate()

spark.sparkContext.setLogLevel(
"WARN")

varrawData= spark.read.format("csv")
.option(
"header","true")
.load(
"E:\\sampleData.csv")

valfieldNames= rawData.schema.map(f=>s"${f.name}").toArray

valcastBuffer:ArrayBuffer[String] = ArrayBuffer()
for(i<-0until fieldNames.length){
valcast_str="cast("+ fieldNames(i) +" as double) as "+ fieldNames(i)
castBuffer.append(cast_str)
}
valcastArr= castBuffer.toArray
valinputData = rawData.selectExpr(castArr:_*)
valfeatureFieldNames= fieldNames.filter(!_.contains("label"))

valfeatureIndexer=newVectorAssembler()
.setInputCols(featureFieldNames)
.setOutputCol(
"featureIndexer")


valgbt=newGBTRegressor()
.setLabelCol(
"label")
.setFeaturesCol(
"featureIndexer")


valArray(trainingData,testData) =inputData.randomSplit(Array(0.8,0.2))

valpipline =newPipeline()
.setStages(Array(featureIndexer
,gbt))

valparamGrid =newParamGridBuilder()

.addGrid(gbt.maxIter,Array(30,50,100,200))

.addGrid(gbt.maxDepth,Array(3,7,9))

.addGrid(gbt.stepSize,Array(0.01,0.05,0.1))

.build()

valcv =newCrossValidator()
.setEstimator(pipline)
.setEvaluator(
newRegressionEvaluator())
.setNumFolds(
5)
.setEstimatorParamMaps(paramGrid)
valmodel =cv.fit(trainingData)

valpredictions =model.transform(testData)

predictions.select(
"label","prediction").show(100,false)

valevaluator =newRegressionEvaluator()
.setLabelCol(
"label")
.setPredictionCol(
"prediction")
.setMetricName(
"mae")

val mae = evaluator.evaluate

(predictions)
log.warn(s"The mae is : ${mae}")


val predictionAndLabels =

predictions

.select("prediction",

"label")

.rdd

.map { case Row(prediction:

Double, label: Double) =>

(prediction, label) }

val mape = math.abs

(predictionAndLabels.map

{ x => math.abs((x._1 - x._2) /

x._1) }.mean())

log.warn(s"The mape is :

${mape}")

val pipLine = model.bestModel.

asInstanceOf[org.apache.spark.

ml.PipelineModel]

}
}


模型最后输出模型性能指标如下:

Mape(Mean Absolute Percentage Error):0.23%

图片 2.png


通过上图模型输出的预测值与实际值对比,发现预测出来的产品膜厚的数值走势跟实际数值走势基本符合,mape达到0.5%以内,拟合度相当可观,后续还可以通过样本筛选以及特征工程等手段对该模型进行进一步调优。


在模型达到业务需求的拟合度等指标后,通过该模型进行部署,实现产品的“实时全检”,从而实现产品质量的全面监控,杜绝异常产品后流;与工厂内的抽检系统结合后,降低产品的抽检率,提高工厂的效率。


GBDT算法的用途还是比较广泛的,它不仅可以处理分类问题,能对线性与非线性回归问题进行处理,还能通过输出变量间重要因子排序,方便业务人员快速定位异常变量。在工业现场的顽固异常分析还是产品特性预测等领域,GBDT算法确实是很值得数据分析人员考虑的一种算法。

本文作者:

格创东智大数据工程师黄欢(转载请注明作者及来源)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4761

    浏览量

    97148
  • 智能制造
    +关注

    关注

    48

    文章

    6141

    浏览量

    79474
  • 工业互联网
    +关注

    关注

    28

    文章

    4383

    浏览量

    95995
  • SPARK
    +关注

    关注

    1

    文章

    108

    浏览量

    21113
  • 工业大数据
    +关注

    关注

    0

    文章

    72

    浏览量

    8157
  • GBDT
    +关注

    关注

    0

    文章

    13

    浏览量

    4168
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AI时代大数据背后的网络力量-上海兆越100G核心工业交换机

    AI大数据与云计算的全球普及,让海量数据实时传输处理成为各行业数字化转型的核心挑战,工业通信网络面临巨大数据压力。工业交换机作为
    的头像 发表于 11-18 17:33 2269次阅读
    AI时代<b class='flag-5'>大数据</b>背后的网络力量-上海兆越100G核心<b class='flag-5'>工业</b>交换机

    北京工业大学开源鸿蒙技术俱乐部正式揭牌成立

    2025年10月29日上午,由OpenAtom OpenHarmony(以下简称“开源鸿蒙”)项目群技术指导委员会和北京工业大学计算机学院共同举办的“北京工业大学开源鸿蒙技术俱乐部成立大会暨智能物联
    的头像 发表于 11-04 09:23 644次阅读
    北京<b class='flag-5'>工业大</b>学开源鸿蒙技术俱乐部正式揭牌成立

    工业数据云平台有哪些好用的?

    )。 华为云:华为云工业互联平台专注于工业数字化转型,提供工业物联网、边缘计算和工业大数据分析等服务。其应用场景广泛,涵盖制造业、能源、交通等领域。华为云凭借强大的生态系统和持续的技术
    的头像 发表于 10-20 17:25 446次阅读
    <b class='flag-5'>工业</b><b class='flag-5'>数据</b>云平台有哪些好用的?

    工业大舵机和普通舵机的区别?

    ,支持闭环控制和误差修正,适用于精密机械臂、医疗设备等场景。 普通舵机 :精度通常在 ±1°-±2°,依赖简单电位器反馈,无复杂误差校正算法,仅能满足航模、玩具等基础定位需求。 负载能力 工业大舵机 :扭力范围 10kg.cm-120kg.cm,采用金属
    的头像 发表于 09-25 10:41 489次阅读

    【深圳站圆满收官】开发者线下实战,睿擎工业平台Workshop精彩回顾!|新闻速递

    9月18日,睿擎工业平台深度实战Workshop深圳站圆满收官!本次Workshop延续了上海站的技术深度与实战精神,吸引了华南地区数十家企业的工业控制、嵌入式开发领域的工程师与技术负
    的头像 发表于 09-23 20:19 571次阅读
    【深圳站圆满收官】开发者线下<b class='flag-5'>实战</b>,睿擎<b class='flag-5'>工业</b>平台Workshop精彩回顾!|新闻速递

    深圳站报名火热进行中!睿擎工业平台线下实战 Workshop,亲手实战4小时解锁工业级开发!|活动预告

    想一站式实战QT图形开发、EtherCAT通信、RPMSG多核交互?睿擎工业平台深度实战Workshop深圳站报名火热进行中!这是一场专为工业开发者打造的沉浸式
    的头像 发表于 09-14 10:04 1053次阅读
    深圳站报名火热进行中!睿擎<b class='flag-5'>工业</b>平台线下<b class='flag-5'>实战</b> Workshop,亲手<b class='flag-5'>实战</b>4小时解锁<b class='flag-5'>工业</b>级开发!|活动预告

    御控工业物联网大数据解决方案:排水设备远程监控与大数据统计系统

    御控工业物联网推出排水设备远程监控与大数据统计系统,通过物联网、大数据、云计算等技术构建“感知-传输-分析-决策”闭环管理体系,助力排水行业数字化转型。
    的头像 发表于 09-12 10:04 498次阅读

    最后召集!明日睿擎工业平台Workshop上海站开启!现场体验工业设备实战开发,最终席位即将关闭!

    明天(9月4日)下午1点,睿擎工业平台深度实战Workshop上海站将准时开启!所有技术设备已调试完毕,开发套件、全套资料均已就位,仅剩最后少量席位,报名通道将于今日24:00正式关闭。并非所有
    的头像 发表于 09-03 14:47 678次阅读
    最后召集!明日睿擎<b class='flag-5'>工业</b>平台Workshop上海站开启!现场体验<b class='flag-5'>工业</b>设备<b class='flag-5'>实战</b>开发,最终席位即将关闭!

    工业大模型利用全流程数据采集推动显示行业生产制造升级

      显示产业作为电子信息产业的核心支柱,其技术迭代速度快、生产工艺复杂、质量要求严苛,对制造升级的需求尤为迫切。工业大模型的出现,为显示生产制造升级提供了全新的技术路径。依托显示生产全流程数据的深度
    的头像 发表于 07-28 10:37 372次阅读

    欧菲光荣获第七届“深圳工业大奖” 深圳工业界最高荣誉

    近日,第七届“深圳工业大奖”名单公示,经深圳工业大奖独立评审团成员认真审议、记名投票,分别评选产生第七届“深圳工业大奖”企业10家、工业家10位、项目10个。其中,欧菲光集团股份有限公
    的头像 发表于 07-15 18:07 1077次阅读

    工业大数据管理平台是什么?有什么功能?

    PLC跨网段通信网关是一种用于解决工业自动化领域中不同网络段内PLC(可编程逻辑控制器)设备通信问题的关键设备,其核心作用是实现不同网络协议、IP网段之间的数据交互与信息传输,下面从多个方面详细介绍
    的头像 发表于 06-13 15:43 336次阅读

    边缘计算 + 工控一体机:如何实现工业数据实时处理与本地化决策?

    工业 4.0 和智能制造蓬勃发展的时代,工业数据的高效处理与决策的及时性成为提升企业竞争力的关键因素。边缘计算与工控一体机的结合,为实现工业数据实
    的头像 发表于 06-07 15:03 633次阅读
    边缘计算 + 工控一体机:如何实现<b class='flag-5'>工业</b><b class='flag-5'>数据实</b>时处理与本地化决策?

    京东工业大模型Joy industrial重磅发布

    京东工业多年深耕工业数智供应链领域形成的经验积累和数据沉淀,通过“工业大模型+供应链场景应用”双引擎,构建从底层算力、算法
    的头像 发表于 05-28 17:12 771次阅读

    工业现场数据实时采集:解锁工业智能化转型的关键

    在当今工业智能化转型的浪潮中,工业现场数据实时采集的重要性不言而喻。它犹如企业运营的 “慧眼”,为企业带来全方位的显著价值。
    的头像 发表于 01-20 13:24 851次阅读
    <b class='flag-5'>工业</b>现场<b class='flag-5'>数据实</b>时采集:解锁<b class='flag-5'>工业</b>智能化转型的关键

    工程大数据平台

    由于无人驾驶系统开发需要长期迭代优化,其过程需要大量的路试数据支撑,经纬恒润针对无人驾驶系统持续运营和持续迭代的需求,开发并在云端部署了车路云工程大数据平台,依托5G网络,具有远程数据采集、压缩、传输、解析、回放与
    的头像 发表于 01-10 17:00 936次阅读
    工程<b class='flag-5'>大数据</b>平台