时序数据的数据预处理

简介: 最近在读《数据挖掘》,其中关于数据预览和预处理(preprocessing)的内容没有介绍时序数据的处理,但这恰是很重要的应用场景。例如这道捕鱼题https://tianchi.aliyun.com/competition/entrance/231768/information我将根据书中和网络上找到的资料,尝试去清理其中的数据,并将思路记录下来,以备后查。

最近在读《数据挖掘》,其中关于数据预览和预处理(preprocessing)的内容没有介绍时序数据的处理,但这恰是很重要的应用场景。
例如这道捕鱼题https://tianchi.aliyun.com/competition/entrance/231768/information
我将根据书中和网络上找到的资料,尝试去清理其中的数据,并将思路记录下来,以备后查。

题目说明
*初赛
初赛提供11000条渔船北斗数据,数据包含脱敏后的渔船ID、经纬度坐标、上报时间、速度、航向信息,由于真实场景下海上环境复杂,经常出现信号丢失,设备故障等原因导致的上报坐标错误、上报数据丢失、甚至有些设备疯狂上报等。

数据示例:

渔船ID x y 速度 方向 time type
1102 6283649.656204367 5284013.963699763 3 12.1 0921 09:00 围网
渔船ID:渔船的唯一识别,结果文件以此ID为标示
x: 渔船在平面坐标系的x轴坐标
y: 渔船在平面坐标系的y轴坐标
速度:渔船当前时刻航速,单位节
方向:渔船当前时刻航首向,单位度
time:数据上报时刻,单位月日 时:分
type:渔船label,作业类型

原始数据经过脱敏处理,渔船信息被隐去,坐标等信息精度和位置被转换偏移。
选手可通过学习围网、刺网、拖网等专业知识辅助大赛数据处理。*

一,属性类型
属性(attribute)分为四种,二值属性(binary),标称属性(nominal),数值属性(numeric),序数属性(ordinal)。四种属性都可以使用数字,其中序数属性有先后,但没有大小之分;标称属性没有先后也没有大小含义;数值属性则具有先后和大小的含义。

机器学习方法中还会使用连续(continuous)和离散(discrete)来分类属性。

渔船ID(ordinal) x(numeric) y 速度(numeric) 方向(numeric) time(time) type(nominal)

因为原文中没有讨论时间,所以我将时间单独列为一类,它也确实不符合其他几种属性的含义。

数据描述(statistical description)
在数据预处理之前,先进行数据预览(overall picture of your data),可以对数据有个大体的了解。对非时序数据,主要观察数据的中心性质(central tendency)和分散性质(dispersion)。

中心性质包括平均数(mean),中位数(median),众数(mode)。标准对称数据(symmetric data)即为3M为同一值的分布(distribution),如正态分布。Positively skewed和Negatively skewed分别指Mean>Mode和Meanimage

分散性质包括四分位数(quartiles),百分位数(percentiles),方差(variance),标准差(standard deviation)等,描述数据的分散情况。还有五数(five-summary number)和箱图(boxplot)可以直观的看到数据分布。

常用图示包括四分位图(quantile plot)(1 attri),四分位四分位图(q-q plot)(1 attri in 2 branchs),直方图(histograms)(1 attri),散点图(scatter plots)(2 attri)等。他们各有各的作用和优势,就不在这里赘述了。

数据相似性(similarity)和不相似性(dissimilarity)暂时跳过,在时序数据上似乎也没有意义。

遗憾的是我发现时序数据没法适用上面的知识。对一条船一天内的行进坐标或速度求平均值没什么直观的意义,求方差也就更没有意义了。

在processing章节中我找到了一些相关的思路。

预处理(preprocess)
预处理的目的是检查数据的准确性(accuracy),完整性(completion)和一致性(consistency)。及时性(timeliness)和可解释性(interpretability)也会影响数据的质量。

针对这几个性质,我可以试着提出几个方法,衡量这批时序数据质量。
0.准确性:元数据检测
元数据(metadata)指的是对于该列数据我们已有的知识,例如日期的取值范围。(Use any knowledge you may already have regarding properties of the data, such knowledge or "data about data " is referred to as metadata)。渔船常规速度,方向取值,时间取值,类型取值等错误都是可以首先进行检测和转换(transformation)的。

1.准确性:坐标错误
根据r1和上一条记录(record)r0的时间间隔,速度和方向,检测当前坐标正确性。设置偏差阈值,如果偏差超过阈值,则标记并跳过此数据,从下一条数据重新检查。这里也可能是时间/速度等字段错误,看情况修正。

2.准确性:时间序列
考虑到是时间序列数据,数据顺序应该准确按照时间先后排列。如果顺序错误,应该根据时间调整排序。

3.完整性:数据重复
将数据按照时间长度分桶,特定桶内保留一定条数的数据,其他数据删除。或者,如果当前记录与前一条记录时间间隔小于1分钟,则删除该数据。

4.完整性:数据丢失
一段时间内没有记录。书中提出了6种填补缺失值的方法。忽略(ignore the tuple),手动填充(fill in the missing value manually),用特定值填充(global constant),根据中心趋势填充(central tendency),用均值填充(mean,median,mode),用最可能的值填充(most probable value)(regression,decision tree,Bayesian formalism)。
我把部分训练数据画出路线观察,缺失数据往往画出简单的几何图形,不同的label对应的几何图形常常相同,所以首先严重缺失的数据可以直接删除,例如低于10条的行船记录,或者间隔时间大于5小时的记录。对于其它确实的记录,可以用线性插值的方法,根据前后两条记录的坐标补全。因为这是行船路线,所以复杂的拟合似乎也没有必要。

5.综合:置信度
除了明显错误的数据外,每条数据的可信度也可以有所区分。例如间隔时间较长,移动速度过快的记录(record),包含有效记录条数少的行船日志,都应该有较低的置信度。在使用数据时,低置信度的数据对模型产生的影响应该更小。

清理(cleaning)过程
0.元数据检测
经过了解,渔船速度一般在20以下。数据中有一批30以上,甚至100的。我将20以上的速度用上下两条数据的平均速度替换掉。
方向没有[0,360]范围外的数据。
时间有相距较长的,都是跨天的数据,没有很大的问题。

1.准确性:坐标错误
根据(r0.position-r1.porsition)/(r0.time-r1.time)计算出移动速度(这里的两点距离使用曼哈顿距离,为了减少计算量和防止溢出)。发现有数条明显坐标偏移的数据,与前后记录的坐标的相距甚远。计划用前后记录生成合理值代替之。

2.准确性:时间序列
记录顺序没有问题。

3.完整性:数据重复
确实存在“疯狂上报坐标”的情况,例如持续几分钟内每秒都上报一条记录。大部分记录间隔为600,以此为标准,间隔100以下的记录可以进行合并。是否恢复这项转换将视测试结果而定。

4.完整性:数据丢失
如上所述,存在部分记录间隔时间远大于600s。在260万条记录之中,有60条记录间隔超过10小时,5条超过20小时,可以以手工的方式决定如何处理这些数据。对于间隔过大的数据可以以600s为标准生成补间值。

数据转换(transformation)
在错误数据清理完成后,还需要对数据进行加工,使他们更易于挖掘。书中提出了平滑(smoothing),属性构建(attribute construction),聚合(aggregation),正则化(normalization),离散化(discretization),标称概念构建(concept hierarchy generation for nominal)(例如身高180·200cm 替换为“高”)
根据本题数据和题意,我准备进行数据平滑和正则化两个加工。
1.平滑
平滑操作的对象是离群点,在本题中是坐标和速度数据的离群点,那些明显不正确的数据点可以用前后记录生成合理数值进行替换。

  1. 标准化(standardize/normalize)
    标准化的目的是缩小数据的范围(range)。目前坐标数据范围宽度是300W左右。使用的度量单位可能会影响数据分析。例如,将测量单位的高度从米更改为英寸,或者将重量的单位从千克更改为磅,可能会导致非常不同的结果。通常,以较小的单位表示属性会导致该属性的范围更大,因此倾向于赋予此类属性更大的效果或“权重”。为避免依赖于度量单位的选择,应将数据标准化或标准化。这涉及将数据转换为落入较小或常见的范围内,例如[-1,1]或[0.0,1.0]。在设计神经网络的挖掘方法中,标准化的数据有助于加快学习速度。

书中介绍了三种正则化方法
2.1 根据最大,最小值标准化Min-max normalization
2.2 根据均值,方差标准化 z-Score normalization(在最值是离群点的数据中非常有用)
2.3 根据最值绝对值,移动小数点 decimal normalization(例如最值是985,则所有数据除1000)
对于方法2和3需要保存所使用的参数,以便对后续数据统一标准化

3.时间标准化
根据和起始时间之间的秒数,将时间标准化到[0,1]的范围内,使用2.1方法。因为在不同渔船的记录序列之间,绝对时间没有意义。

4.时间对齐
不同船只上报数据的时间间隔不同,整理为RNN的训练数据输入时,

5.数据扩展(scaling)
在书中没有提到这步。因为原数据比较少,三个类别的序列数大概是(1500,4000,1500)。一方面不同类型之间数据不平衡,另一方面数据总量也比较少。因为应用场景是海上,不受到道路限制,所以我想到对坐标进行中心旋转,比如每0.1度生成一套新数据,看看训练效果如何。

使用RNN进行训练和测试

目录
相关文章
|
1月前
|
机器学习/深度学习 数据可视化 算法
数据处理方法—— 7 种数据降维操作 !!
数据处理方法—— 7 种数据降维操作 !!
40 0
|
机器学习/深度学习 存储 算法
时序数据特征工程浅析
内容摘要特征工程是指将原始数据标记处理为价值密度更高,更容易解释目标问题的工程化过程,在面向大量原始采集的数据集统计分析,尤其是对于高通量持续采集、且价值密度较低的时序数据更是如此。时序数据特征工程则是指利用有效方法,将原始时序数据转化为带有含义分类标签的序列数据片段或特征数值,例如,我们可以将指定时间窗口序列数据标识为特定异常关联数据,并保留平均、最大、最小值作为该序列的特征值。这样我们就可以围
2765 0
时序数据特征工程浅析
|
1月前
|
数据采集 监控 安全
数据预处理
【2月更文挑战第25天】
|
7天前
|
数据采集 机器学习/深度学习 算法
scikit-learn中的数据预处理:从清洗到转换
【4月更文挑战第17天】在机器学习中,scikit-learn是用于数据预处理的强大Python库,涵盖数据清洗和转换。数据清洗涉及处理缺失值(如使用SimpleImputer和IterativeImputer填充)和异常值,以及分类数据的编码(如标签编码和独热编码)。数据转换包括特征缩放(如StandardScaler和MinMaxScaler)和特征选择(过滤、包装和嵌入方法)。这些工具能提升数据质量,优化模型性能,但需根据具体问题选择合适方法。
|
1月前
|
数据采集 Python
数据清洗是数据预处理的重要步骤
数据清洗是数据预处理的重要步骤
19 0
|
7月前
|
机器学习/深度学习 数据采集 存储
【机器学习6】数据预处理(三)——处理类别数据(有序数据和标称数据)
【机器学习6】数据预处理(三)——处理类别数据(有序数据和标称数据)
185 0
|
6月前
|
机器学习/深度学习 数据挖掘 Serverless
时间序列数据处理:掌握基本技巧与实例
时间序列数据处理:掌握基本技巧与实例
213 0
|
7月前
|
机器学习/深度学习 算法 数据可视化
数据归一化:优化数据处理的必备技巧
数据归一化:优化数据处理的必备技巧
|
7月前
|
分布式计算 大数据 Hadoop
大数据预处理
大数据预处理
60 0
|
11月前
I2C时序简单分析
I2C时序简单分析
182 0

热门文章

最新文章