machine-learning - 查找模式并在一维中进行预测

标签 machine-learning pattern-recognition

enter image description here

第一行代表第 1 条时间线。小打击是数据点。

第二行代表线的聚类以及中心的中心线。

使用哪些方法来预测下一个星团撞击/质心将如第三张图片所示?

我发现了这些问题:

如果有帮助的话。我无法提供训练数据,只能提供历史数据,因为它可能会发生变化(也许历史数据可以用作训练数据?)

最佳答案

有趣的问题。

我会尝试两种方法,具体取决于我们计算出每个簇的质心的稳健程度。

方法 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% vs 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 个最小距离(用于测量簇内距离)

发挥你的想象力并继续。希望对您有所帮助。

关于machine-learning - 查找模式并在一维中进行预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29497475/

相关文章:

machine-learning - 使用 Keras 进行特征提取不包括类标签

python - KNeighborsClassifier 欧氏距离计算

tensorflow - 使用新类别重新训练模型

Python 字符串模式识别/压缩

algorithm - 特定对象/图像识别任务的最佳方法?

python - 线性回归和自动求导

python - AdaBoost ML算法python实现

email - 在 SAS SQL 中计算电子邮件地址中的连续辅音

pattern-recognition - 如何: Pattern Recognition

neural-network - 试验人工神经网络有哪些有趣的想法?