2

我想在matlab中实现相似度搜索。我想知道这可能吗?

我的计划是使用 2 种流行的相似度度量,即欧几里德距离和动态时间规整。这两个都将应用于时间序列数据集。我现在的问题是如何评估这两种测量性能和准确性?我看到一些文献说我应该使用 K-NN 算法。

然后,我计划在时间序列数据集上应用降维。降低数据集的维数后。我需要使用 R-tree 或任何可用的索引技术来索引数据集。

但是我的问题是,要做到这一点,我需要 R-tree matlab 代码,我在互联网上几乎找不到任何代码......

我确实意识到大多数相似性搜索的实现都是用 C++、C 和 Java 实现的……但我不熟悉这些。我希望我可以在 Matlab 中实现这些......任何大师都可以帮助我吗?

另外,我可以进行什么样的评估来评估每种算法的性能。

谢谢

4

2 回答 2

3

最近(我相信是 R2010a),MATLAB 在 Statistics Toolbox 中添加了使用KD-tree(一种类似于 R-tree的空间索引方法)进行k-Nearest Neighbor (kNN)搜索的新功能。例子:

load fisheriris                            % Iris dataset
Q = [6 3 4 1 ; 5 4 3 2];                   % query points

% build kd-tree
knnObj = createns(meas, 'NSMethod','kdtree', 'Distance','euclidean');

% find k=5 Nearest Neighbors to Q
[idx Dist] = knnsearch(knnObj, Q, 'K',5);

有关详细说明,请参阅此页面

此外,如果您有图像处理工具箱,它包含(很长一段时间以来)kd-tree 和 kNN 搜索的实现。它们是私有函数:

[matlabroot '\images\images\private\kdtree.m']
[matlabroot '\images\images\private\nnsearch.m']

为了比较您的两种方法(动态时间扭曲欧几里得距离),您可以设计一个经典的分类问题;给定一组标记的训练/测试时间序列,任务是通过使用 kNN 找到最相似的序列来预测每个测试序列的标签,然后预测多数类。要评估性能,请使用任何标准的分类度量,例如准确度/错误等。

于 2010-07-26T19:49:54.657 回答
0

事实证明,对于 ED 和 DTW,使用 UCR 套件进行顺序扫描要快得多。

观看此视频 https://www.youtube.com/watch?v=d_qLzMMuVQg

或这个

https://www.youtube.com/watch?v=c7xz9pVr05Q

代码是免费的 http://www.cs.ucr.edu/~eamonn/UCRsuite.html

于 2014-10-29T15:54:06.980 回答