我有一個包含不同值的數據集:查找相似
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