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

    文章

    4452

    浏览量

    90746
  • 智能制造
    +关注

    关注

    48

    文章

    5108

    浏览量

    75546
  • 工业互联网
    +关注

    关注

    28

    文章

    4233

    浏览量

    93810
  • SPARK
    +关注

    关注

    1

    文章

    99

    浏览量

    19727
  • 工业大数据
    +关注

    关注

    0

    文章

    72

    浏览量

    7764
  • GBDT
    +关注

    关注

    0

    文章

    13

    浏览量

    3852
收藏 人收藏

    评论

    相关推荐

    工业大模型的五个基本问题

    工业业大模型是大模型为赋能工业应用所产生的产业新形态,是制造业数字化转型3.0的重要载体,是一个新质体。
    发表于 04-23 16:04 79次阅读
    <b class='flag-5'>工业大</b>模型的五个基本问题

    工业大数据发展面临的问题

    工业大数据作为工业与数字经济之间的桥梁纽带,对加快工业数字化转型、推进数实融合,支撑新型工业化建设意义重大。
    的头像 发表于 04-16 11:52 161次阅读

    基于工业大数据和物联网的智能工厂如何实现

    在中国制造2025及工业4.0技术的加持下,离散制造业的流程工业实现生产设备网络化、生产数据可视化、生产现场无人化等现金数据应用,做到横向与纵向的集成,实现边缘到云端的
    的头像 发表于 12-25 15:32 307次阅读

    诚邀报名|黄向东邀您共话开源工业物联网大数据

    2023 开放原子开发者大会 OPEN ATOM DEVELOPERS CONFERENCE 开源工业物联网大数据分论坛 2023.12.17 物联网与大数据技术的飞速进步,为工业数字
    的头像 发表于 12-20 16:54 186次阅读
    诚邀报名|黄向东邀您共话开源<b class='flag-5'>工业</b>物联网<b class='flag-5'>大数据</b>

    开源工业物联网大数据分论坛圆满举办

    物联网与大数据技术的快速发展,为工业数字化提供了技术支撑。推进新型工业化建设过程中,工业复杂场景离不开底层操作系统、物联网数据采集、
    的头像 发表于 12-20 09:40 348次阅读

    诚邀报名|黄向东邀您共话开源工业物联网大数据

    2023开放原子开发者大会 . OPEN ATOM DEVELOPERS CONFERENCE 开源工业物联网大数据分论坛 2023.12.17 物联网与大数据技术 的飞速进步,为工业
    的头像 发表于 12-05 19:35 356次阅读
    诚邀报名|黄向东邀您共话开源<b class='flag-5'>工业</b>物联网<b class='flag-5'>大数据</b>

    工业设备数据中台是什么?有什么功能?

    随着工业自动化和信息化的不断发展,企业对于数据的依赖性日益提高。机器设备的不间断运转和庞大的生产规模,使得工业大数据实时处理和分析需求越来越高。 通过工业设备
    的头像 发表于 10-07 15:48 253次阅读

    3项“工业大模型”测试床通过立项

    近年来,随着AI技术的不断发展和应用,工业生产和高端制造领域也开始逐渐实现智能化转型,工业智能与工业大模型受到越来越多的关注,为了探索工业大模型在
    的头像 发表于 09-22 15:38 379次阅读

    工业互联网中的标识解析技术

    工业互联网的核心是数据的价值发现问题,但由于历史原因,“信息孤岛”现象在企业内部、企业之间大量存在。标识解析技术是目前可见解决“信息孤岛”、完成工业大数据汇聚以及在此基础上形成信息融合理解的关键技术。分析了标识解析在
    发表于 09-19 06:07

    工业智能化背景下,大数据的应用与智能工厂的发展

    在近些年的不断发展中,工业大数据成为了新的服务业态与信息技术,主要涉及对各企业工业数据的采取、分析以及储存。通过这部分工作的开展,能够对数据当中所蕴含的知识进行挖掘,提取其中的有用信息
    的头像 发表于 08-22 16:37 600次阅读

    工信部围绕“工业大脑”“城市大脑”征集先进计算典型应用案例

    应用案例,并总结成功经验,加强在行业、地区推广,分享实施路径,推动先进计算在更多领域发挥作用。 工业大脑是企业全生命周期数据管理的神经中枢,将工业企业的各种数据进行布局和融合,在上层构
    的头像 发表于 08-16 16:21 251次阅读

    为什么GBDT用回归树不用分类树?CART决策树是怎么计算基尼值呢?

    集成学习Boosting一族将多个弱学习器(或称基学习器)提升为强学习器,像AdaBoost, GBDT等都属于“加性模型”(Additive Model),即基学习器的线性组合。
    的头像 发表于 07-28 15:00 1238次阅读
    为什么<b class='flag-5'>GBDT</b>用回归树不用分类树?CART决策树是怎么计算基尼值呢?

    智慧农业大数据

    智慧农业,作为未来农业的发展方向,其实现基于种植环境、生长管理、农机设备等数据。农业大数据核心在于技术,包括获取技术和处理数据技术。相比工业大数据技术,获取技术的多样性和复杂程度更高,
    的头像 发表于 07-10 16:18 572次阅读

    智慧农业大数据平台的“智慧”体现在哪些方面?

    看到农业两个字,我们先想起来的是什么?是耕种呢,还是灌溉? 其实,种植业只是狭义上的农业,从广义上讲,农业指包括种植业、林业、畜牧业、渔业、副业五种产业形式。所以,山东仁科智慧农业大数据平台不仅
    的头像 发表于 05-26 17:27 489次阅读
    智慧农<b class='flag-5'>业大数据</b>平台的“智慧”体现在哪些方面?

    大数据是什么 大数据存储的概念 大数据应用场景有哪些

    大数据的成功管理取决于几个方面,例如数据的收集、存储、处理、分析和可视化。在大数据的处理过程中,各种技术和算法也被不断地应用于解决各种问题。大数据
    发表于 05-03 09:23 2797次阅读