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

0. 前言

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

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

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

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

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

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 ​ co v ( 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}}} ∑ i = 1 n ​ ( X − X ) 2​ ∑ i = 1 n ​ ( Y − Y ) 2​ ∑ i = 1 n ​ ( X i ​ − X ) ( Y i ​ − Y ) ​

2.2. 复相关

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

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

多个变量同时与某个变量的相关关系不能直接测算,只能通过间接测算,复相关系数的计算:

设因变量 y y y

,自变量为

x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x 1 ​ , x 2 ​ , . . . , x n ​

,构造一个线性模型为:

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

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

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

记:

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

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

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})}} c o r r ( y , x 1 ​ , . . . , xn ​ ) = c o r r ( y , y ^ ​ ) = v a r ( y ) v a r ( y ^ ​ )​ c o v ( y , y ^ ​ ) ​

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

2.3. 偏相关

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

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} x 0 ​ , x 1 ​ , . . . , x n ​ ;

(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号),提出促进工业数据汇聚共享、深化数据融合创新、提升数据治理能力、加强数据安全管理,着力打造资源富集、应用繁荣、产业进步、治理有序的工业大数据生态体系。

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

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

猜你喜欢

转载自blog.csdn.net/weixin_43881394/article/details/109053226