https://www.toutiao.com/a6709302135281943043/

5G的推出会大大加快物联网发展的速度,万物互联肯定会产生大量的信息,这些信息不同于互联网的交易数据,交互数据,而是哪些貌似不会说话的硬件产品。今天推荐一篇文章,我觉得这是机器学习在物联网发展的一个经典案例《利用贝叶斯推理做硬件故障率的准实时预测》。以下内容摘抄自“天池大数据科研平台”公众号。

导语:你可能已经不知不觉中在数据科学项中用上了贝叶斯相关技术!如果你还没用上,这个技术可以增强你的数据分析能力。本文会接着Data Science Central中这篇贝叶斯推理简介文章,展示这项技术在现实世界中的应用案例:通过传感器收集的流式数据预测硬件故障率。如果你对此感兴趣,请继续阅读!

1

用户案例

如果你可以检测数据中心的硬盘驱动器,获取包括驱动器型号和故障等信息。你应该想知道哪些硬盘型号的故障率最高。

ackblaze公司收集了近几年内数据中心硬盘运行记录,并公布了它们的故障数据。这些数据按单个驱动器和日期进行细分,并具有来自SMART传感器读数的丰富信息,但本文将仅仅使用驱动器的型号以及它在某一天是否发生故障了的信息。以2018年第二季度和第三季度数据为例,下载CSV文件的压缩包并解压缩到一个共享位置。

最直接的做法是按型号计算故障率,并将其作为实际故障率的最佳估计值。按故障率计算的前六类驱动器是(注意:此处的比例按年度计算为年的故障率,为便于阅读):

from pyspark.sql.functions import *
data_path = ...
agg_df = spark.read.option("header", True).option("inferSchema", True).csv(data_path + "/current/").select("model", "failure").groupBy("model").agg({"*": "count", "failure": "avg"}).filter("avg(failure) > 0").orderBy(desc("avg(failure)")).limit(6).cache()
display(agg_df.withColumn("pct_failure", col("avg(failure)") * 100.0))

(在Databricks平台,只需使用单元格输出中的绘图选项就可以将结果的表格视图切换到上面的直方图。) 型号 ST8000DM004 全年故障率是0.5%,看起来是一个很高的数值,但是,我们也无法确定它是否只是在第二季度和第三季度经历了高故障率而已。

假设有一个真实的故障率 λ,那么单位时间内的故障数目应遵循泊松分布Poisson(λ)(就像抛硬币实验中正面朝上的次数遵循二项分布)。如上所述,我们希望能理解故障率λ本身的概率分布,它遵循一个带两个参数ɑ和β的伽马分布(gamma distribution)。和贝塔分布(Beta distribution)一样,他们有一个简答的解释:在t天内观察到f次故障后,故障率λ的分布是Gamma(f,t)。

import numpy as np
import scipy.stats as stats
from pyspark.sql.types import *
to_gamma_schema = ArrayType(StructType([StructField("rates", DoubleType()), StructField("pdfs", DoubleType())]))
def build_gamma_udf(df, max_scale_factor=1):max_avg_failure = df.select(max("avg(failure)")).collect()[0][0]# Computes the PDF of the gamma distribution at points for each model's rate paramdef to_gamma_pdf(count, avgf):# k = alpha = number of failuresk = count * avgf# theta = 1/beta, where beta = total observationstheta = 1.0 / count# Pick rates to try with more samples at small ratesrates = np.geomspace(max_avg_failure / 1000, max_avg_failure * max_scale_factor, 100)# Calculate the probability distribution function at those pointspdfs = stats.gamma.pdf(rates, a=k, scale=theta)return list(zip(rates.tolist(), pdfs.tolist()))return udf(to_gamma_pdf, to_gamma_schema)
to_gamma_pdf_udf = build_gamma_udf(agg_df)
gamma_df = agg_df.withColumn("rates_pdfs", explode(to_gamma_pdf_udf("count(1)", "avg(failure)"))).select("model", col("rates_pdfs.rates").alias("rate"), col("rates_pdfs.pdfs").alias("pdf"))
display(gamma_df.withColumn("pct_rate", col("rate") * 100.0))

我们注意到不同型号硬盘的预估故障率分布是非常不一样的。型号ST8000DM004有着非常广的概率分布,同时,不得不承认它也有着更高的故障率;为了显示方便我们只截取了部分曲线,但它的很大一部分概率分布在大于每年0.4%的区间。这是因为相对而言这个型号硬盘的观察样本比较少,见下表:

放大左侧的两个峰值分布,分别是“ST500LM012 HN”和“WDC WD5000LPVX”:

有趣的是,WDC可能性最高的年故障率是比ST500低的(大概是0.015% 比 0.02%)。但是,因为WDC的观测样本较少,所以它的可能故障率分布会更广。如果我们的问题是哪种型号的故障率最有可能高于0.03%,基于当前的信息,WDC反而是更有可能的。类似的场景比如说:我们需要决定哪个型号的故障最有可能超出制造商的可容忍上限。此时,不仅仅是最大后验概率估计,概率分布也同样重要。

2

用先验概率分析数据流中的故障信息

实际上,这些观测数据并非一次性全部能获取到。数据是以流的形式到达,所以很自然的我们需要持续的运行这些计算程序。Apache Spark Structured Streaming非常适合用来处理这种数据,它可以几乎完全相同的形式运行上述代码。

当然,这类流式分析程序从第一天就开始运行时,并没有任何历史数据。甚至当积累了两个季度的数据之后,故障的案例相对而言还是太少,所以故障率的不确定性还非常高。

当一个组织或公司向把离线数据架构转换为在线流式处理模式,他们应该已经积累的不少历史数据。这只是关于故障率的先验信念,可以作为故障率的先验分布注入。

伽马分布可以方便的和泊松分布共轭(conjugate),所以我们可以使用伽马分布去代表先验概率,并且在观测到一些数据之后,可以很简答的计算得到后验伽马分布(不需要使用很复杂的数学计算)。因为伽马分布的 ɑ 和 β 两个参数可以分别被解释为故障数目和运行天数,所以这些值可以通过历史数据计算出来,并通过Spark Structured Streaming作业持续的计算和更新。请看示例:

priors_df = spark.read.option("header", True).option("inferSchema", True).csv(data_path + "/historical/").select("model", "failure").groupBy("model").agg({"*": "count", "failure": "avg"}).withColumn("alpha", col("count(1)") * col("avg(failure)")).withColumn("beta", col("count(1)")).select("model", "alpha", "beta").cache()
agg_stream = spark.readStream.schema(raw_df.schema).option("header", True).option("maxFilesPerTrigger", 1).csv(data_path + "/current/").select("model", "failure").groupBy("model").agg({"*": "count", "failure": "avg"}).filter("avg(failure) > 0").orderBy(desc("avg(failure)")).limit(6)
max_avg_failure = priors_df.select(avg(col("alpha") /
col("beta")).alias("failure_rate")).agg(max("failure_rate")).collect()[0][0]
def to_gamma_pdf(count, avgf, prior_alpha, prior_beta):# Note: priors are added belowk = prior_alpha + count * avgftheta = 1.0 / (prior_beta + count)rates = np.geomspace(max_avg_failure / 1000, max_avg_failure, 100)pdfs = stats.gamma.pdf(rates, a=k, scale=theta)return list(zip(rates.tolist(), pdfs.tolist()))
to_gamma_pdf_udf = udf(to_gamma_pdf, to_gamma_schema)
gamma_stream = agg_stream.join(priors_df, "model", how='left').fillna(0, subset=["alpha", "beta"]).withColumn("gamma", to_gamma_pdf_udf("count(1)", "avg(failure)", "alpha", "beta")).select("model", explode("gamma").alias("rates_pdfs")).select("model", col("rates_pdfs.rates").alias("rate"), col("rates_pdfs.pdfs").alias("pdf"))

通过历史数据计算产生了各个硬盘型号先验分布的ɑ和β参数,然后可以很方便的和流式数据进行Join(这里的流式数据是我们模拟得到的)

开始运行之后,程序生成了一个不断更新的图表来展示当前最高故障率的硬盘型号的故障率分布情况。它可以很容易地生成报警,或者根据概率分布的其他功能生成其他警报,并且可以使用几乎相同的代码生成简单的离线分析程序。

3

结语

当你在拟合一个分布曲线时,实际上发生的事情比你想象的更多。你可能已经在不知不觉中使用了“概率派”或“贝叶斯派”的推理方法。贝叶斯派观点有一些优点,因为在寻找答案过程中考虑了先验知识,并产生的是答案的一个概率分布而不只是一个估计值。通过Spark的Structured Streaming技术以及对先验和后验分布的理解,可以将贝叶斯方法论方便的应用到现实世界的实践中。

AI让硬件说话,这就是未来物联网相关推荐

  1. NEC:借助AI撬动未来物联网世界

    看过<碟中谍>系列大片的朋友,可能对特工们在火车站庞大的人流中借用人脸识别隐形眼镜迅速锁定目标的场景惊叹不已,而这一幕已被NEC从梦想带到了现实.近日,NEC在东京高大上的场所--东京国际 ...

  2. 以AI为支点NEC欲撬动未来物联网世界

    看过<谍中谍>系列大片的朋友,可能对特工们在火车站庞大的人流中借用人脸识别隐形眼镜迅速锁定目标的场景惊叹不已,而这一幕已被NEC从梦想带到了现实.近日,NEC在东京举办了全球用户论坛暨展览 ...

  3. AI突破难题才能预见未来

    https://www.toutiao.com/a6639291504139452932/ 2018-12-26 21:21:54 目前,人工智能AI算是一个最为热门的领域,AI被赋予强大的未来想象力 ...

  4. AI成为硬件增效“杀手锏”,百度输入法的「To B」探索

    以AI为引擎,立足B端,放眼产业,百度输入法toB发力的故事还很长. 作者|KIMIMA 出品|产业家 传统硬件行业发展陷入瓶颈,新的增长点在哪里? 可以肯定的是,消费者在寻求智能设备.从智能汽车到智 ...

  5. 听见丨孙宏斌欲数十亿元增资乐视影业和乐视致新 百度发布AI智能硬件Raven H

    孙宏斌欲数十亿元增资乐视影业和乐视致新 腾讯财经<棱镜>从多个独立信源处获悉,融创中国主席孙宏斌已于近期启动了对乐视致新以及乐视影业增资扩股的计划,涉及金额高达数十亿元.知情人士对腾讯财经 ...

  6. 华为鸿蒙发布会不选深圳,最高149999!华为一系列新品发布:不仅鸿蒙,这就是未来...

    TASTER发布会|华为全屋智能及智慧屏旗舰新品发布会 4月8日晚刚好是华为全屋智能及智慧屏旗舰新品发布会,华为发布了 一系列新品,虽然没有华为新款手机,但每样新品都很有看点.TASTER带你回顾整场 ...

  7. 科通联手中兴 共同制定未来物联网标准

    4月8日,科通芯城受邀正式加入"中国LoRa应用联盟"(CLAA),掀起物联网领域革命.科通芯城将与中兴共同推动LoRa产业链在中国的应用和发展,制定未来物联网标准,将低功耗广域网 ...

  8. 10万人参加过的公开课(大数据、AI、云计算、5G、物联网),你都学了吗?

    CSDN技术公开课有奖评选开始啦~~听过课的小伙伴们,哪位讲师的分享让你获益匪浅?记得给TA投票哦!投票后获取入群方式,参与抽奖,奖品很丰厚哦~~ 进入付费时代,如今我们看似只要招招手,一切知识随手可 ...

  9. MXC极域,被严重低估的未来物联网

    牛市即将起飞,当大趋势到来的时候应该关注哪些项目,具有爆发的增长潜力呢?可以关注一下MXC极域,一个用LPWAN与区块链技术构建未来物联网的靠谱项目. 低估原因之一,上海市杨浦区政府协议签署: 三月初 ...

最新文章

  1. 单片机找工作好找吗?不懂英语怎么学会单片机?
  2. mysql 清空表怎么恢复_mysql怎么恢复删除的表?mysql找回误删表的数据方法
  3. 00_python安装与配置(mac)
  4. 【JavaScript】鼠标单击核心价值观和线条变换实现
  5. 【Itext】7步制作Itext5页眉页脚pdf实现第几页共几页
  6. Django 07. django框架模型之增删改查基本操作
  7. 学会c语言开发出很多,学会了C语言可以开发出很多东西吗?
  8. 【移动GIS】室内导航算法设计
  9. C++ 捕获程序异常奔溃minidump
  10. 使用hightopo完成基本图元旋转和闪烁
  11. 计算机定时开机命令,如何设置定时开机 定时开机命令设置方法
  12. 吃鸡一直显示服务器,吃鸡一直显示服务器未连接 | 手游网游页游攻略大全
  13. C语言函数的简单书写规范和调用
  14. VUE实现页面局部刷新
  15. C语言——计算数组长度
  16. 攻心为上,俘获人心的商业推广软文这样写
  17. 两年内广州城中村全围闭 将施行“门禁”准则
  18. 微信运营|如何利用微信后台数据优化微信运营
  19. 超级计算机预测2月有雪寒潮,科学网—被证实的预测:寒潮影响马上结束,倒春寒要退场了! - 杨学祥的博文...
  20. 屡陷丑闻的 Facebook,试图靠 AI Bot 管住员工的嘴

热门文章

  1. SpringCloud断路器hystrix
  2. 北邮 JAVA教程 张海旸 讲义
  3. 那些年,我们一起学过的R语言
  4. “未卜先知”、“自学成才”:GANs奇思妙想TOP10
  5. TensorFlow练习18: 根据姓名判断性别
  6. 一个切割PDF文件的简单的方法 -只需要chrome浏览器
  7. 李茶:虎牙直播推荐系统架构详解
  8. 机器学习如何彻底改变游戏中的物理模拟
  9. 前沿技术 | 自动机器学习综述
  10. 独家 | 人工神经网络中发现了人类大脑拥有的多模态神经元(附链接)