四川虹美智能科技有限公司 何 艳
随着家电的物联网化,原来仅能提供功能的家电设备,在拥有了物联网功能后,能将设备运行的状态上报到云端,对这些数据进行处理和分析后能用于设备健康状态的判定,对故障进行诊断甚至是预判。
在故障诊断和预判的领域,多数人都将重心放在了算法方面,忽略了数据采集对模型预测的影响。目前图像识别发展较快也相对比较成熟,但图像识别是基于图片清晰度和像素属性规范的数据输入的基础上做出来的,输入参数是丰富而完整的。而家电产品的故障自动诊断中,哪些参数与故障诊断相关性较强,这些数据又如何获取,这会是决定算法模型好坏的最根本因素。
本文主要讨论为做家电产品故障自动诊断而采集数据和处理数据的方法。
基于PHM思想,参考美国机械信息管理开放标准联盟提出的OSA/CBM体系结构,状态监测部分和故障预测部分是系统实现的关键。其中,状态监测子系统主要包括数据采集(Data Acquire)和数据处理(Data Processing)两个模块。
数据采集模块中,借助传感器、自动测试设备、传统测试工具或者人工目测,采集被测对相关的各种红参数和相关信息。
在家电产品中,由于产品数量多,且受硬件成本的限制,数据采集无法采用离线人工采集的方式,也无法应用传统测试工具或者专业自动测试设备采集相关数据,数据采集的来源范围受限制。
输入数据维度:家电设备运行过程中可采集的数据主要有三类:设备运行设定参数、设备运行状态数据、传感器采集的数据。在数据采集时,对这些数据加上设备ID、时间戳等一起上传到云端。
输入数据精度:对于每一维度的输入数据,最初都按照业务解释数据进行采集和上传,比如温度数据为两位整数和小数点后一位,状态数据则是0或者1。
输入数据采集频度:数据上报主要考虑设备运行过程的状态变化快慢,数据采集频度对故障诊断和预判的影响,考虑在线设备数量的多少,消息服务器的承载能力,存储服务器的需求,设备持续增加带来的服务器负载和容量的增加等因素,综合设定。
数据采集需要论证和验证。数据采集的论证是指根据设备运行状态的机理建立模型,分析健康设备运行的参数特征,在逐渐运行至发生故障的过程中参数的特征,直至故障导致设备无法正常运行的临界点数据的特征。
一般来说,设备运行机理的模型建立,需要对设备系统非常专业的人来建立,这对人员的专业性和经验有着相当高的要求,这时我们可以采取另外一种方式,验证方法。主要的原理是先采集目前可获取的数据,训练模型,再用同样的方法采集数据,但增加相应的采集维度,再训练模型,在不同的输入数据维度上训练模型的判断准确率有所不同,从而验证输入参数对于算法的影响程度。
原始采集的数据是不均衡数据集,即绝大部分数据都是健康设备正常工作的瞬时状态数据,很小部分数据是出现故障的状态数据,还有一部分是设备从正常状态逐步过渡到故障状态的状态数据。
从机器学习角度出发,对于不均衡数据集通常会进行一些数据处理,比如,从数据的角度出发,主要方法为采样,分为欠采样和过采样以及对应的一些改进方法。从算法角度出发,考虑不同误分类情况代价的差异性对算法进行优化,主要是基于代价敏感学习算法,代表的算法有adacost。另外可以将不平衡数据集的问题考虑为一分类(One Class Learning)或者异常检测(Novelty Detection)问题,代表的算法有One-class SVM。
在这里,我们从数据业务的角度出发,考虑故障机理,首先选取所有故障的数据,再从正常运行数据中抽取与故障数据一定比例的正常数据,组成数据样本。下面以空调数据处理为例,讨论数据处理过程:
(1)数据解析:对数据进行全状态数据解析。
(2)标签的标定:以特征‘室内机故障’的取值为依据,对样本进行分类。其中将存在室内机故障的样本标为‘0’类(反例),反之标为‘1’类(正例)。‘1’类样本共计1087个,‘0’类样本共计709个。
(3)数据预处理:
●对缺失值、异常值的处理。异常值采用当前特征列的3*(标准差)原则进行识别。特征‘空调实际运行温度’含有102个异常值,其中最大的异常值为29,最小的异常值为21(取整数部分)。对缺失严重的特征列及缺失严重的样本行、含有较多异常值的样本行进行删除操作;对于特征缺失数较少的样本行,采用样条插值法进行插值补充。
●对关键特征的筛选:因在所训练的深度神经网络中加入了对各个参数的L1正则惩罚项,所以在训练的过程中,模型会自动筛选关键特征。故在数据的预处理过程中可省略该步骤。
●对离散型特征的处理。该数据集中的离散特征含有有序型离散特征和无序型离散特征两种。对这两种特征均进行了独热编码。为防止在进行独热编码的过程中,测试集中的特征值在训练集中从未出现过,因此首先使用‘CategoricalDtype’模块将这些特征列转换为全状态的类型(即补充所有可能的取值),再对其进行编码。对于转化为全状态的无序型离散特征,例如‘开关机状态’、‘电加热实际状态’等,直接对其进行独热编码,处理为多维的二元哑变量。有序型离散特征列如‘空调当前设定风速’、‘滤网清洁程度’等,因特征值之间具有强弱关系,因此不同强度的特征值用不同大小的数字来表示强弱关系。例如特征‘空调污染程度’,取值有0级污染、1级污染、2级污染,三个取值由强到弱,分别用数字1,2,3来代替。原取值之间的强弱关系用数字的大小关系来传给模型
●对连续性特征的处理:对连续型特征列,例如‘当前室温’、‘空调运行电流’等,共做了两种处理,然后根据模型效果进行择优。其一是直接将连续型数据使用标准差法标准化;标准化的作用是,不同的连续性特征,其量纲是不同的,有的大有的小,例如要研究某地区居民的年龄与收入的关系,年龄量纲在1—100,收入量纲远大于年龄量纲,一般量纲较大的特征会导致模型在该特征的偏重增大,降低模型的精度。其二,首先使用聚类法确定对应连续型的特征的最优划分区间,根据最优划分区间将连续型特征进行离散化,并用不同大小的数字表示不同区间的权重。该方法存在的Bug是最优划分区间有时不能覆盖所有取值不为空的样本,用该区间离散化后,易增加当前列的空值。将这两种方法用于建模,实验显示用前者处理过的模型精度较高。
概括来说,不管是离散特征的独热编码还是连续特征的离散化,都实现了数据的数字化。
●数据集的划分:随机抽取70%的数据作为训练集、30%的数据集做为测试集建模。其中训练数据集的维度为(1257,139),测试数据集(539,139)(第二维度包括标签列)。训练集中0类样本数为499,占比为0.4;测试集中0类样本数为210,占比约为0.38。
方法介绍:
3*(标准差)原则:假定数据分布符合正态分布,计算出数据的均值与标准差,根据该原则,数值分布几乎全部集中在(均值-3*标准差,均值+3*标准差)区间,超出这个范围分布的概率不到0.3%,根据小概率原理,认为这是不可能发生的,因此分布在该区间外的数据即为异常值。
样条插值法:根据缺失值所在位置上下相邻的几个值进行预测。一般取值的数值分布不是线性关系,样条插值的拟合效果较好。
L1正则惩罚项:训练神经网络的过程就是在训练一系列的参数,每一轮训练的出的参数,有的比较有用,有的不太有用,L1正则的作用就是过滤掉那些不太有用的参数。拘役的实现方法是加大那些贡献值较大的参数的权重,而减小贡献值较小的参数的权重,甚至让这些参数的权重为0,这个参数也就不存在了。
将数据取值转为全状态、独热编码:独热编码简单说就是给某一特征的所有可能取值进行编码,所有可能取值有几个就有几维,每一维的取值不是1就是0。例如,特征‘当前运行模式’的所有可能取值有‘制冷’、‘制热’、‘除湿’、‘送风’四个值,那么编码后,这个特征的取值就变成了长度为4的数组,用这个数组的第一位表示制冷,……,以此类推。放到集合中,这四位对应的就是四个子特征,分别是‘当前运行模式-制热’,……以此类推。
最终会把数据集划分为训练集和测试集,在这两部分中,对于同一个特征,两部分内的数据的取值是不相同的,也就是说在测试集中的取值有可能在训练集中从未出现过,这会造成在独热编码后,训练集测试集的维度不一样。所以用这个模块,现将这两部分中的所有数据的取值都转换为全状态,统一了维度后再进行编码,即可避免维度不一的问题。
经过数据采集、数据处理以后再选择相应合适的算法模型进行训练和测试。
结束语:家电产品的数据采集策略会对故障诊断和预判产生重要影响,在实际工作中需要结合产品系统运行机理和数据采集分析实验,综合寻找最合适的数据采集和处理方案。