通过在线培训进行无监督的流分类

时间:2017-06-24 12:38:42

标签: machine-learning classification data-science unsupervised-learning

我有关于驾驶同一车辆的不同人的速度,加速度,油门和刹车的数据流。我想识别用户的不同类型的行为 - 例如急剧变化的速度或平静的统一运动或滥用车辆等。我将从有限的数据和一组预定义的行为开始。我希望我的程序在获取更多数据的同时识别新行为。

我应该使用哪种算法?如何从可变长度数据流中提取信息?

我的数据:

我正在采样加速度计(x,y,z)的值,车轮速度,绘制的电流(它是电动车辆),电池两端的电压,用户输入的分数(分数0到1),以及制动输入(0或1)。我可以每秒10次的速度进行采样。

示例行为: -

有些人喜欢以稳定的速度驾驶,而其他人则使用高油门,然后释放"图案。

此外,有些人喜欢减速,而其他人喜欢跳跃,虽然对车辆不利。

有些人同时使用刹车和油门。这种行为会损坏车辆。

这些是某种类型的模式(预定义的集合)。我想确定行为是否属于其中一种,或者是一种新模式。

1 个答案:

答案 0 :(得分:0)

这是一个示例方法:
我假设你正在不断收集速度。

减速度和加速度以速度/时间E.g:sqrt(Delta(x)^2+Delta(y)^2))/(seconds^2)测量,您可以计算它们。

您可以计算以下内容的分布:

  • 中位数速度范围(离散)
  • 中位数驱动器长度范围(小时)(离散)
  • 所有用户的减速度和加速度最大值,并将“危险区域”识别为96%的异常值,即平均加上减去2 *标准偏差。

假设您为每个驱动程序计算4个维度(不要挂断名称,它们只与指标有些相关):

  • 注意 - 驾驶员在减速时进入危险区域的次数
  • 风险 - 驾驶员在加速中进入危险区域的次数
  • Rush - 驾驶员在Velocity中进入危险区域的次数
  • 耐力 - 驾驶员在中间驾驶长度范围内越过(向右)进入危险区域的次数。

收集这些指标后(您可以推断更多,当然),您可以,例如,运行群集。

执行此操作后,您可以按行为聚集驱动程序,您可以覆盖实际数据(如果存在)并查看哪些群集由更多意外驾驶的驱动程序组成,或者循环返回并运行监督学习。或者评估群集特征(例如,极高的冲击和风险统计将描述不安全的行为)

您可以跳过一起计算分布和异常值,只需使用原始聚合(中位数,最大值)指标进行聚类。由于离散条件,您将避免失去灵敏度,但它可能会导致极端异常值的问题。也有一些方法可以解决这个问题。

我建议聚类自己处理聚类数量计算,例如分层聚类/亲和传播或k-means,使用elbow方法重新计算聚类。您应该根据您的表现要求选择一个。

相反或者另外,您可以运行异常值检测以识别行为极端的驱动程序: 按设定尺寸识别所有驾驶员的中心,然后计算距离分布。然后注意距离中心的距离超过阈值的驾驶员是否有意义。这将保证您将识别群集未捕获的行为。