基于Python实践工业大数据相关分析有什么用,能给出什么样的结论?

0. 前言

最近,在做成品油油库大数据产品研发过程中,我使用Person相关算法做分析[1],例如对发油系统中各项数据做相关分析,给出了“皮尔逊相关热力图”。

设计讨论会上,领导说:相关分析有什么用?能给出什么样的结论?在相关分析中,两两数据项关系意义不大,能否看到整体相关关系?

近些年来,“大数据”这个词早已为大众所熟悉,“大数据”也一直是以高冷的形象出现在大众面前,面对大数据,相信许多人都一头雾水。

大数据时代,“我们不再热衷于寻找因果关系,而应该寻找事物之间的相关关系。[3]”。关于大数据思想请参考[3],本文不再累述。

1. 背景

工业大数据是互联网、大数据和工业产业相结合的产物。它是2025年中国制造、工业互联网、工业4.0等国家战略的立足点。

德国工业已经完成了工业自动化的过程,在自动化的基础上,以工业数据为基础,引入云计算和人工智能技术来提高工业的智能化水平,以满足社会对大规模定制生产的需求。美国拥有强大的云计算、互联网和数据处理能力。在此基础上,提出了一种通过大数据将单个设备、一条生产线和一家工厂的数据连接起来的工业互联网策略。挖掘工业服务业在诊断、预测、售后服务等方面的价值。[4]

大数据在工业企业中的应用主要体现在三个方面:

  • 一种是基于数据的产品价值挖掘。通过对产品和相关数据进行二次挖掘,可以创建新的价值。
  • 二是提高服务型生产水平。提高以服务为导向的生产,就是要提高服务价值在生产(产品)中的比重。
  • 三是创新经营模式。

专业咨询机构给出“工业大数据的八大应用场景 ”,分别是:

  • 一、加速产品创新
  • 二、产品故障诊断与预测
  • 三、工业物联网生产线的大数据应用
  • 四、工业供应链的分析和优化
  • 五、产品销售预测与需求管理
  • 六、生产计划与排程
  • 七、产品质量管理与分析
  • 八、工业污染与环保检测

2. 什么是相关性

“万物皆有联”,是大数据一个最重要的核心思维。

所谓联,这里指的就是事物之间的相互影响、相互制约、相互印证的关系。而事物这种相互影响、相互关联的关系,就叫做相关关系,简称相关性。

数学变量相关关系。[6]

相关关系:当一个或几个相互联系的变量取一定的数值时,与之相对应的另一变量的值虽然不确定,但它仍按某种规律在一定的范围内变化。变量间的这种相互关系,称为具有不确定性的相关关系。

按程度分类
⑴完全相关:两个变量之间的关系,一个变量的数量变化由另一个变量的数量变化所惟一确定,即函数关系。
⑵不完全相关:两个变量之间的关系介于不相关和完全相关之间。
⑶不相关:如果两个变量彼此的数量变化互相独立,没有关系。

按方向分类
⑴正相关:两个变量的变化趋势相同,从散点图可以看出各点散布的位置是从左下角到右上角的区域,即一个变量的值由小变大时,另一个变量的值也由小变大。
⑵负相关:两个变量的变化趋势相反,从散点图可以看出各点散布的位置是从左上角到右下角的区域,即一个变量的值由小变大时,另一个变量的值由大变小。

按形式分类
⑴线性相关(直线相关):当相关关系的一个变量变动时,另一个变量也相应地发生均等的变动。
⑵非线性相关(曲线相关):当相关关系的一个变量变动时,另一个变量也相应地发生不均等的变动。

按变量数目分类
⑴单相关:只反映一个自变量和一个因变量的相关关系。
⑵复相关:反映两个及两个以上的自变量同一个因变量的相关关系。
⑶偏相关:当研究因变量与两个或多个自变量相关时,如果把其余的自变量看成不变(即当作常量),只研究因变量与其中一个自变量之间的相关关系,就称为偏相关。

大数据让很多以前听起来匪夷所思的事情都可以实现,因为过去我们做事都讲确定性,现在我们讲可能性。

在工业控制系统中,各个系统相关关系如何体现呢?本文重点探讨相关关系与因果关系,相关性与影响因素分析,以及实现算法方案。

2.1. 相关关系

相关分析与回归分析在实际应用中有密切关系。然而在回归分析中,所关心的是一个随机变量Y对另一个(或一组)随机变量X的依赖关系的函数形式。而在相关分析中 ,所讨论的变量的地位一样,分析侧重于随机变量之间的种种相关特征。例如,以 X X X Y Y Y分别记小学生的数学与语文成绩,感兴趣的是二者的关系如何,而不在于由 X X X去预测 Y Y Y

例如,皮尔逊相关系数( Pearson correlation coefficient),是用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间。
ρ X , Y = c o v ( X , Y ) σ X σ Y \rho_{X,Y}=\frac{cov(X,Y)}{\sigma _{X}\sigma_{Y}} ρX,Y=σXσYcov(X,Y)

ρ X , Y = ∑ i = 1 n ( X i − X ‾ ) ( Y i − Y ‾ ) ∑ i = 1 n ( X − X ‾ ) 2 ∑ i = 1 n ( Y − Y ‾ ) 2 \rho_{X,Y}=\frac{\sum_{i=1}^{n}(X_{i}-\overline{X})(Y_{i}-\overline{Y})}{\sqrt{\sum_{i=1}^{n}(X-\overline{X})^{2}}\sqrt{\sum_{i=1}^{n}(Y-\overline{Y})^{2}}} ρX,Y=i=1n(XX)2 i=1n(YY)2 i=1n(XiX)(YiY)

2.2. 复相关

研究一个变量 x 0 x_{0} x0与另一组变量 ( x 1 , x 2 , … , x n ) (x_{1},x_{2},…,x_{n}) (x1,x2,xn)之间的相关程度。例如,职业声望同时受到一系列因素(收入、文化、权力……)的影响,那么这一系列因素的总和与职业声望之间的关系,就是复相关。复相关系数 R 0 . 1 , 2 … n R_{0}._{1,2…n} R0.1,2n的测定,可先求出 x 0 x_{0} x0对一组变量 x 1 , x 2 , … , x n x_{1},x_{2},…,x_{n} x1x2xn的回归直线,再计算 x 0 x_{0} x0与用回归直线估计值悯之间的简单直线回归。复相关系数为:

R 0.12 … n R0.12…n R0.12n的取值范围为 0 ≤ R 0.12 … n ≤ 1 0≤R0.12…n≤1 0R0.12n1。复相关系数值愈大,变量间的关系愈密切。

多个变量同时与某个变量的相关关系不能直接测算,只能通过间接测算,复相关系数的计算:
设因变量 y y y,自变量为 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn ,构造一个线性模型为:

y = b 0 + b 1 x 1 + . . . + b n x n + ε y=b_{0} + b_{1} x_{1} + ... + b_{n} x_{n} + \varepsilon y=b0+b1x1+...+bnxn+ε

y ^ = b 0 + b 1 x 1 + . . . + b n x n \hat{y} =b_{0} + b_{1} x_{1} + ... + b_{n} x_{n} y^=b0+b1x1+...+bnxn

y y y x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn 作相关分析,就是对 y y y y ^ \hat{y} y^做简单相关分析

记:

  • r y . x 1 . . . x n r_{y.x_1...xn} ry.x1...xn y y y x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn 的复相关系数,
  • r y . y ^ r_{y.\hat{y}} ry.y^ y y y y ^ \hat{y} y^的简单相关系数

r y . x 1 . . . x n r_{y.x_1...xn} ry.x1...xn 的计算公式:

R = c o r r ( y , x 1 , . . . , x n ) = c o r r ( y , y ^ ) = c o v ( y , y ^ ) v a r ( y ) v a r ( y ^ ) R = corr(y,x_1,...,x_n)=corr(y,\hat{y})=\frac{cov(y,\hat{y})}{\sqrt{var(y)var(\hat{y})}} R=corr(y,x1,...,xn)=corr(y,y^)=var(y)var(y^) cov(y,y^)

复相关系数常用于多元线性回归分析中,我们希望知道因变量与一组自变量之间的相关程度,即复相关,复相关系数反映了一个变量与另一组变量的密切程度。

2.3. 偏相关

研究在多变量的情况下,当控制其他变量影响后,两个变量间的直线相关程度。又称净相关或部分相关。例如,偏相关系数 r 13.2 r13.2 r13.2表示控制变量 x 2 x_2 x2的影响之后,变量 x 1 x_1 x1和变量 x 3 x_3 x3之间的直线相关。偏相关系数较简单直线相关系数更能真实反映两变量间的联系。

3. 案例分析

3.1. 简化说明工业应用场景

在这里插入图片描述
油库发油过程中,我们工控系统记录如下数据,分析目标是提供发油工作效率,通过找出关键影响因素,优化发油工艺过程,以及相关操作流程。

相关分析得出如下结果:

3.1.1. 两两数据项相关

如下图所示,列举两个Person相关进行分析(相关程序代码详细说明见文档[1]):
(1)发油量与设定量正相关,而且是强相关;
(2)损溢量与月份负相关。
在这里插入图片描述

如果我们再深入分析,发现发油率与发油时长呈现弱负相关情况,也就是说,大吨位槽车在装油的过程中,将耗时更长些,为什么呢?
在这里插入图片描述
另外,矛盾多以两两存在,矛盾各方面权重与变量之间的关系,也可以用相关系数来衡量。

3.1.2. 每个数据项对于整体的复相关

以发油控制系统为例,由’时长’,‘鹤位’,‘设定量’,‘发油量’,‘发油率’,‘时间’,‘月份’,‘日期’,‘损溢量’,‘温度’,'密度’等数据项构成,假如我们分析时长与发油系统其他各个特征的关系,具体过程如下:
(1)“时长”设定为 y y y值,其他[‘鹤位’,‘设定量’,‘发油量’,‘发油率’,‘时间’,‘月份’,‘日期’,‘损溢量’,‘温度’,'密度‘]构成多元输入 x 0 , x 1 , . . . , x n {x_0,x_1,...,x_n} x0,x1,...,xn
(2)建立多元线性回归模型(LinearRegression),按上述 X , Y X,Y X,Y训练多元线性回归模型;
(3)通过模型预测 y y y值,也就这里的“时长”;
(4)“时长”的预测值与实际值做Person相关系数计算,得出相关度;
(5)重复上述步骤,逐个特性为 y y y,其他为 x x x
至此,可以形成如下图所示的相关度列表。
在这里插入图片描述

3.1.3. 相关度的使用,大数据分析的用法基础

由于上述举例,是在单个系统中,未能体现出相关分析的优势。不过,能与实际理论因果关系符合:
(1)设定量、发油量、损溢量三者对于发油系统来说是强正相关;
(2)同理,时长、温度、月份,与设定量、发油量、损溢量,对于发油来说都有较强的正相关;
(3)对于发油系统来说,日期和发油时间相关度不大,影响因素可以忽略。

根据发油系统业务特点,参照上述结果,我们可以做出如下假设:
(1)对发油时长,进行聚类分析,获取时长的规律,做为评价权重或指标设置的依据;
(2)针对发油效率分析,需要关联更多的数据项(含其他控制系统)再进行相关分析、趋势分析,并评价发油效率(发油率是实际发油量除以时长的计算值,但是呈现弱负相关,与发油系统相关度不是很高);

建议对槽车及所属公司进行发油效率评价。

(3)油库运营特点是中转油品,既上联炼化厂,下接销售终端加油站等;以存储量、周转吞吐量为运营宗旨。大数据分析就是限定存储量的基础上,关联市场(计划)因素,以安全和消防、环保为红线的为条件,评价油库运营情况,并分项分析。

3.1.4. 业务创新

在工业控制环境中,基于工业大数据谈创新很难,这里参照互联网思维,在数据分析上加强关联,加强内部与外部、不同系统间的相关关系分析,避开单独(小)系统固化因果关系思维。

例如本文案例中,从发油系统局部环境拓展到其他相关系统,把局部放到整体中分析,并展开到整体系统外部。

比如,模拟互联网某东自营进销存对标,提油人/车(客户)、油库(平台)、油品(货物),发油过程相当于网购过程,对于网购过程,大数据分析给出客户的爱好(什么时间来提油、提的油品)、客户的评价(槽车装油效率、操作水平、安全级别等)、提货/收货效率与安全(鹤位与油罐输油匹配度与安全等)。具体如下:

(1)内部与外部相关分析——槽车画像、发油岛/鹤位评价
发油系统与槽车,槽车相对于油库是外部系统,通过二者装车数据项相关分析,构建槽车画像,包括效率、安全评价,鹤位匹配度评价等(可以延伸到所对应到运输公司/分类),可以聚类分析;

用处:补充作业效率分析,实现槽车优选鹤位,达到装车效率高、损溢低、安全的目标。

(2)内部控制系统相关分析——鹤位与油罐匹配分析
发油系统、卸油系统中的鹤位和油罐存储系统,在输油过程中关联,通过鹤位与油罐数据项相关分析,构建输油效率模型、输油安全模型,在未知、不确定分析中,可以先采用无监督学习中聚类、受限玻尔兹曼机(RBM)等算法,分析出输油效率/能力类别、影响因素等。

用处:补充作业效率分析,实现鹤位与油罐匹配优选,达到高效、低损溢、安全的收发油目标。

(3)管理维度间的关系——管理维度重要程度分析
按某企业评价成品油油库高效运行保障、油库计划流程 、设备设施保障 、自动化和信息化 、现场管理、组织和管理 、健康安全环保等7个指标,可以通过复相关评价各项指标的与整体评价的相关度。
在这里插入图片描述
以数据驱动决策,让数据告诉我们哪个管理维度量化的重要程度,相互依存关系,并根据发展趋势为管理者提供决策依据。

3.2. 复相关实现Demo代码

3.2.1. 代码说明

源代码基于Win 10环境下Python 3.6.7版本开发,其中主要自定义函数有:

(1)feature_label_split
用于初始化数据集,做归一化处理(normalization=True),拆分出X和Y数据集。

(2)train_model
用于训练多元线性模型,使用sklearn.linear_model中的回归模型LinearRegression。

(3)multi_corr
用于计算Y与预测值间的Person相关系数,使用Pandas工具自带的方法:
data.corr(method=‘pearson’,min_periods=1)

3.2.2. 核心源代码


import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.externals import joblib
from sklearn.preprocessing import StandardScaler     #归一化
from sklearn.metrics import mean_squared_error
from pandas.core.frame import DataFrame

#拆分数据集为x,y
def feature_label_split(data,label_name,normalization=True):
    data.rename(columns={'OutletTotalTime':'时长','CraneP':'鹤位','SpecifiedL':'设定量','LCActualL':'发油量',
                   'Effi':'发油率','Time':'时间','Month':'月份','Day':'日期','LossL':'损溢量','OilTemperature':'温度','OilDensity':'密度'}, inplace=True)

    del_name = [label_name]
    
    #数据归一化处理
    if normalization:
        scaler = StandardScaler()
        columns = data.columns
        indexs_train = data.index
        data = pd.DataFrame(scaler.fit_transform(data),index = indexs_train, columns = columns)
        
    #拆分特征与标签
    y = data[label_name]
    x = data.drop(del_name,axis = 1)
    
    return x,y
# 训练多元线性回归模型
def train_model(train_x,train_y):   
    test_percent = 0.7
    x_train,x_test,y_train,y_test = train_test_split(train_x,train_y,test_size = test_percent)
        
    model = LinearRegression()
    model.fit(x_train, y_train) 
   
    score = model.score(x_train, y_train)   
    print("Training score: ", score) 
        
    ypred = model.predict(x_test)
    mse = mean_squared_error(y_test, ypred)
    print("MSE: %.2f" % mse)
    print("RMSE: %.2f" % (mse**(1/2.0)))
    
    return model
# 计算复相关
def multi_corr():
    df = pd.read_excel('e:/data1.xlsx')  # e:/data1.xlsx
    key_name = ['时长','鹤位','设定量','发油量','发油率','时间','月份','日期','损溢量','温度','密度']
    
    key_corr = []
    
    for key in key_name:
        train_x,train_y = feature_label_split(df,label_name=key,normalization=False)
        model = train_model(train_x,train_y)
        ypred = model.predict(train_x)
        fit_y = DataFrame(columns=['预测值'],data = ypred)

        data = pd.concat([train_y,fit_y],axis=1)
        print(data)
        corr = data.corr(method='pearson',min_periods=1)
        key_corr.append(corr.iat[0,1])
        
    print(key_corr)

if __name__ == '__main__':

    multi_corr()

3.2.3. 输出结果

某个特征实际值与预测值输出结果:

Training score:  0.5983131306423572
MSE: 0.00
RMSE: 0.02
         密度   预测值
0      0.7397  0.836339
1      0.7397  0.771213
2      0.7397  0.787371
3      0.7397  0.781056
4      0.7348  0.822460
...       ...       ...
67615  0.7479  0.760884
67616  0.7479  0.745060
67617  0.7526  0.742016
67618  0.8180  0.855769
67619  0.7526  0.778705

最后的相关度结果如下:
在这里插入图片描述

4. 总结

今年5月份,工业和信息化部发布《工业和信息化部关于工业大数据发展的指导意见》(工信部信发〔2020〕67号),提出促进工业数据汇聚共享、深化数据融合创新、提升数据治理能力、加强数据安全管理,着力打造资源富集、应用繁荣、产业进步、治理有序的工业大数据生态体系。

本文从油库业务域的大数据应用入手,以应用拉动数据治理,以数据模型、算法模型分析为切入点,在传统统计分析基础上,量化指标与权重依据,研发数据深度、广度应用,发挥工业大数据价值。例如本文中提到的槽车画像、鹤位与油罐匹配、以及数据驱动决策等。

由于作者水平有限,欢迎讨论。

参考:

[1].《基于Pandas实现皮尔逊相关与余弦相似度在工业大数据分析中的应用实践》 CSDN博客 , 肖永威 , 2020.08
[2].《一篇带你学会相关分析》 知乎,SPSSAU,2019.06
[3].《《大数据时代》读书笔记》 CSDN博客 , 肖永威 , 2016.06
[4].《想了解工业大数据,不得不看的一篇》 ITPUB博客 ,数据库安全专家 ,2019.05
[5].《工业大数据的八大应用场景》 搜狐 ,慧都智能制造 , 2019.12
[6]. 百度百科 .相关关系 百度百科 ,相关关系
[7].《Python Matplotlib绘制渐变色柱状图(bar)并加边框和配置渐变颜色条(colorbar)》 CSDN博客 ,肖永威 ,2020.09
[8].《多变量相关性分析(一个因变量与多个自变量)》 知乎.统计与统计机器学习 , 江子星 , 2019.06
[9].《油田大数据与创新之路的探究》 CSDN博客 , 肖永威 ,2017.01

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肖永威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值