ANN和预测

数据挖掘 分类 matlab 预言
2022-02-17 06:43:08

我有一个对象列表。每个对象都包含经度、纬度和单词列表。

我想做的是根据对象中包含的文本来预测位置(相似的文本应该有相似的位置)。现在我正在使用余弦相似度来计算对象文本之间的相似度,但我不知道如何使用这些信息来训练我的神经网络。我有一个包含每个对象的矩阵以及每个单词在该对象中出现的次数。Fx 如果我有这两个对象

Obj C:   54.123, 10.123,   [This is a text for object C]
Obj B:   57.321, 11.113,   [This is a another text for object B]

然后我有类似下面的矩阵

       This is a text for object C another B
ObjC:   1   1  1   1   1    1    1   0     0
ObjB:   1   1  1   1   1    1    0   1     1

对于两个物体之间的距离,我也会有类似的东西(请注意,数字不是真实的)

        ObjC    ObjB
ObjC    1       0.25
ObjB    0.25    1

我研究了如何使用神经网络将事物分类(如 A、B、C)或预测房价之类的东西,但没有发现对我的问题有帮助。

如果它在某个距离 X 内,我会认为预测是正确的,因为我正在处理位置。这可能是一个愚蠢的问题,但有人指出我正确的方向。

1个回答

看起来您正在尝试使用相同的输入预测两个不同的事物(纬度和经度)。因此,这是一个预测多个输出的问题。但是,只有一个输出很容易理解基本原理。我会这样描述。

假设您的目标只是一个变量Y,即您的位置。转换后(可能是 TF-IDF),你有一个特征矩阵X,其中一行代表一个样本,一列代表一个特征。你现在需要做的是用 inputX和 target训练一个 ANN Y这是 ANN 训练的方式:

  1. 它将随机启动输入和网络外部的权重矩阵。如果您只有一个隐藏层,则权重矩阵的数量为 2。
  2. ANN 将通过某种激活函数传递您的输入,从中获取一些输出,然后将这些输出转发到输出层进行进一步处理。查找一些实际数学的教程。但这是直觉。
  3. 最后,基于权重和进一步处理,ANN 会产生一些输出。在大多数情况下,它们在第一次迭代中不在可接受的范围内。因此,ANN 需要细化那些随机选择的权重。这就是反向传播算法发挥作用的地方。它允许 ANN 学习最合适的权重以进行最佳预测。
  4. 这种反向传播算法需要一个成本函数,它试图最小化。这个成本函数通常是 RMS 误差函数。但是这个成本函数可以是任何根据你的选择。成本函数(大部分)采用两个输入。其中一个是您的真实位置(来自训练/验证数据),另一个是 ANN 在处理后得到的预测位置。当 ANN 试图最小化预测输出和真实输出之间的差异时,它会为网络找到合适的权重。
  5. 当成本函数的误差减小到所需值(或已通过预定义的迭代次数,或已达到容差水平)时,ANN 会停止训练并返回那些学习到的权重矩阵。
  6. 获得这些最终权重矩阵后,您可以将它们应用于任何新数据以获得预测。这些权重矩阵就是你的 ANN。

由于您有一个多输出问题,您需要一个支持同时最小化两个错误的 ANN 实现。这类似于多目标优化。Python 可以在这里为您提供帮助。有关使用的详细信息,请参阅此sknn.mlp 文档它将采用多个输出,每个输出在目标矩阵中的自己的列上。因此,你的Y意志是形状,你的数据集中的样本数量在n * 2哪里。n只需fit使用您现有的XY上述格式调用方法即可。培训完成后,您将获得最小可行 ANN。不过,如何优化 ANN 的性能是另一回事 :)