我目前正在处理来自 IoT 设备的解析日志数据(日志条目每 15 分钟批处理一次)。所有info_*/err_*是相关日志事件的计数:
| machine_id | timestamp | os_ver | days_since_reboot | cpu_load | info_featA | info_featB | err_badrequests | err_timeoutrequests |
|------------|---------------------|--------|-------------------|----------|------------|------------|-----------------|---------------------|
| 1 | 2020-09-18 12:25:00 | 0.01 | 12 | 0.59 | 12 | 543 | 0 | 0 |
| 1 | 2020-09-18 12:40:00 | 0.01 | 12 | 0.83 | 1 | 23 | 1 | 0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2 | 2020-10-28 11:40:00 | 0.02 | 2 | 0.12 | 43 | 54 | 0 | 1 |
| 2 | 2020-10-28 11:55:00 | 0.02 | 2 | 0.43 | 32 | 54 | 3 | 5 |
| 2 | 2020-10-28 12:10:00 | 0.02 | 2 | 0.23 | 0 | 4 | 0 | 23 |
我的任务是找到一些可能导致错误事件的常见模式(例如,info_featA条目的增加先于 的正数err_badrequests)。出于这个原因,我曾考虑将错误列重新编码为布尔值(True如果err_*> 0),但我对进行序列分析或查找可能导致错误的条件的正确方法相当迷茫。
此外,错误类型对我的问题不是很重要,因为我只关心是否存在正错误计数(无论其类型如何):
| machine_id | timestamp | os_ver | days_since_reboot | cpu_load | info_featA | info_featB | has_err |
|------------|---------------------|--------|-------------------|----------|------------|------------|---------|
| 1 | 2020-09-18 12:25:00 | 0.01 | 12 | 0.59 | 12 | 543 | 0 |
| 1 | 2020-09-18 12:40:00 | 0.01 | 12 | 0.83 | 1 | 23 | 1 |
| ... | ... | ... | ... | ... | ... | ... | ... |
| 2 | 2020-10-28 11:40:00 | 0.02 | 2 | 0.12 | 43 | 54 | 0 |
| 2 | 2020-10-28 11:55:00 | 0.02 | 2 | 0.43 | 32 | 54 | 1 |
| 2 | 2020-10-28 12:10:00 | 0.02 | 2 | 0.23 | 0 | 4 | 0 |
目前,我已经创建了滞后变量(最多 2 小时前),以通过相关矩阵检查是否有任何滞后变量与错误计数有某种关联。我很确定这不是解决此类问题的方法。
主要目标是识别(如果有的话)观察到的指标中导致错误的一些常见模式。