在1d中找到模式并预测

时间:2015-04-07 17:26:14

标签: machine-learning pattern-recognition

enter image description here

第一行代表1d的时间线。小罢工是数据点。

第二行表示线的聚类,中心表示它们的中心位置。

用于预测下一个群集攻击/质心的方法将在第三张图片中看到?

我发现了这些问题:

如果它有帮助的话。我不能提供培训数据,只是历史可能会改变(也许历史数据可以用作培训数据?)

1 个答案:

答案 0 :(得分:0)

有趣的问题。

我会尝试两种方法,具体取决于我们能够找出每个群集的质心的强大程度。

Aprroach 1

如果如图所示,可以使用基于阈值的方法来聚类数据点。我们可以首先在c1c2c3找出质心,并将群集质心视为时间序列。然后使用一些exponential smoothing来预测质心c4的下一个位置应该不难。假设您的原始数据如下所示:

0 3 4 5     11 12 14     21 23 25     34 37 38       ???
(cluster1)  (cluster2)  (cluster3)   (cluster4)      

如果我们的阈值为5(任意两个连续数据点之间的最大距离),我们可以很容易地找出上面的4个聚类。然后我们可以获得低于质心的位置。 (例如,(21+23+25)/3=23)。

 3            12.33         23          36.33        42 (predicted)

假设在应用一些基本的指数平滑后,您将获得下一个质心位置c4=42

下一步是根据质心预测罢工的相对位置。我们可以使用以前群集中的所有先前打击作为我们的训练数据。我只是从历史数据中获取一些统计数据,看看它的工作情况。

群集中罢工之间的平均距离:

(3+1+1)+(1+2) + (2+2) + (3+1)
 ----------------------------  = 1.55
                9

% of times we have 4 strikes: 25%
% of times we have 3 strikes: 75%

然后我们可以进行抽奖(25%对75%)来决定我们是否会在c4进行4次罢工或3次罢工。可以使用平均距离统计来导出罢工的相对位置。例如,如果我们有3次打击且质心位于42:

strike1: 42-1.55 = 40.55
strike2: 42
strike3: 42+1.55 = 43.55

如果我们有4次罢工:

strike1: 42-1.55/2-1.55
strike2: 42-1.55/2
strike3: 42+1.55/2
strike4: 42+1.55/2+1.55

注意:我们会在c4观察实际数据点后更新统计数据,以便我们始终能够更正预测。我们将更新质心预测的指数平滑以及我们在c4中观察到实际数据点的同时。现在我们已准备好预测c5c5中的罢工等等。

方法2

如果我们没有强大的方法来进行群集,请尝试使用 功能工程 进行线性回归。目标变量将是下一次攻击的x位置。我们可以使用的功能包括:

  • 前一个k点
  • 每两个连续点之间的k-1距离
  • 最近3点的移动平均值
  • 最近5点的移动平均值
  • ...
  • 最近9点的移动平均值
  • 两个连续点之间的n个最大距离(以测量簇间距离)
  • 两个连续点之间的n个最小距离(以测量簇内距离)

发挥你的想象力并继续。希望能帮助到你。