我有一个包含不同值的数据集:查找相似
SET1 = {X1,X2,...,XN}
SET2 = {X1,X2,...,XN }
...
X值有不同的范围(这就是为什么我无法弄清楚需要算法来解决我的问题) - 有些是严格[0.0 - 1.0]值,其他人可能在不同/任何 范围。
我需要找出一种方法来“组”,这些设置,或者换句话说 - 找到“相似性”两个给定套之间。
很显然,我可以简单的写的长链“IF”语句的每个值与另一个比较,如果它们被一些DELTA量不同,我可以表明,两个给定集不是“同类”。问题是,我的集合非常庞大并且包含动态数据。因此,我需要一个通用函数来计算某种哈希值的每一套(至少这是我想的方式):
INT HASH1 =散列函数(集1)
INT HASH2 =散列函数(SET2)
如果(| HASH1 - HASH2 | < DELTA):回归 “设置类似于”
我真的很感激任何提示或想法如何实现它。
更新:
通过的意见,我意识到也许我应该改变我的问题有点以及阅读:什么是你有一个良好的“相似性”的建议指标?
通过“相似性”我的意思是表示“关闭”设置值怎么都是一些动态值。例如,如果我有一个测试集:组A {0.5,100},然后SETB {0.5,100}应产生1(或一些其它值表示完全匹配的)。在相同的比较SetA与SetC {0.1,300}应该返回很多较低的“匹配”值,而SetD {0.45,101}应返回类似于“完美匹配”的值。关键的一点需要注意,为0.45和0.5例如值“更类似于”比100和值300,因为:| 0.45 - 0.5 |/max(0.45,0.5)< | 100 - 300 |/max(100,300)。
如果我只是计算2组之间的差值总和,它将不会提供任何有意义的结果(因为两组数据可能包含完全不同的数字(从逻辑角度来看),但会相互抵消而给出不正确的结果)
您将不得不通过“类似”来显着提高您的意思,以获得有意义的答案。 – 2013-03-07 17:56:38
语言的选择会在一定程度上影响回应 - 您正在处理什么样的堆栈? – JerKimball 2013-03-07 17:57:44
你的设定元素是什么?号码?你有什么相似之处?例如,与{1.1; 1.9; 3.01}相比,{1; 2; 3}更接近{1; 2; 4}吗? – sds 2013-03-07 18:15:27