我想在matlab中实现相似性搜索。我想知道这可能吗?
我的计划是使用两种流行的相似性测量,即欧几里德距离和动态时间扭曲。这两者都将应用于时间序列数据集。我现在的问题是如何评估这两种测量性能和准确性?我看到一些文献说我应该使用K-NN算法。
然后,我计划对时间序列数据集应用降维。降低数据集的维数后。我需要使用 R 树或任何可用的索引技术来索引数据集。
但是我的问题是,要做到这一点,我需要 R-tree matlab 代码,我在互联网上几乎找不到任何代码......
我确实意识到相似性搜索的大部分实现都是用 C++、C 和 Java 编写的……但我对这些并不熟悉。我希望我可以在 Matlab 中实现这些......任何大师都可以帮助我吗?
我还可以进行什么样的评估来评估每种算法的性能。
谢谢
最佳答案
最近(我相信是 R2010a),MATLAB 添加了新函数 k-Nearest Neighbor (kNN)使用 KD-tree 进行搜索(类似于 R 树的 spatial indexing 方法)到统计工具箱。示例:
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);
引用this page以获得精彩的描述。
此外,如果您有图像处理工具箱,它包含(很长一段时间以来)kd 树和 kNN 搜索的实现。但它们是私有(private)函数:
[matlabroot '\images\images\private\kdtree.m']
[matlabroot '\images\images\private\nnsearch.m']
要比较两种方法( Dynamic Time Warping 和 Euclidean distance ),您可以设计一个经典的分类问题;给定一组带标签的训练/测试时间序列,任务是通过使用 kNN 查找最相似的序列来预测每个测试序列的标签,然后预测多数类。要评估性能,请使用任何标准的分类度量,例如准确性/错误等。
关于matlab - Matlab 中时间序列之间的相似性搜索。可能的 ?我在 matlab 中找不到 R 树实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326145/