Atitti knn實現的具體四個距離算法 歐氏距離、余弦距離、漢明距離、曼哈頓距離
1.1. 文本相似度計算在信息檢索、數據挖掘、機器翻譯、文檔復制檢測等領域有着廣泛的應用1
1. Knn算法實質就是相似度的關系
1.1. 文本相似度計算在信息檢索、數據挖掘、機器翻譯、文檔復制檢測等領域有着廣泛的應用
數據挖掘的過程中,只用用到了相似性(如物品之間的相似性、人之間的聚類等),就會涉及到距離的運用
2. 漢明距離
本詞條由“科普中國”百科科學詞條編寫與應用工作項目 審核 。
漢明距離是使用在數據傳輸差錯控制編碼里面的,漢明距離是一個概念,它表示兩個(相同長度)字對應位不同的數量,我們以d(x,y)表示兩個字x,y之間的漢明距離。對兩個字符串進行異或運算,並統計結果為1的個數,那么這個數就是漢明距離。
漢明距離是以理查德·衛斯里·漢明的名字命名的。在信息論中,兩個等長字符串之間的漢明距離是兩個字符串對應位置的不同字符的個數。換句話說,它就是將一個字符串變換成另外一個字符串所需要替換的字符個數。例如:
2.1. 歷史及應用
漢明距離是以理查德·衛斯里·漢明的名字命名的,漢明在誤差檢測與校正碼的基礎性論文中首次引入這個概念。在通信中累計定長二進制字中發生翻轉的錯誤數據位,所以它也被稱為信號距離。
漢明距離更多的用於信號處理,表明一個信號變成另一個信號需要的最小操作(替換位),實際中就是比較兩個比特串有多少個位不一樣,簡潔的操作時就是兩個比特串進行異或之后包含1的個數。漢明距在圖像處理領域也有這廣泛的應用,是比較二進制圖像非常有效的手段。計算一個數字的比特位包含1的個數有個小技巧:value &= value - 1這個運算的結果就是把value最后一個1去掉,循環進行運算直到value等於0(所有的1都被去掉)就可以知道vaule擁有多少個1了。其在包括信息論、編碼理論、密碼學等領域都有應用。但是,如果要比較兩個不同長度的字符串,不僅要進行替換,而且要進行插入與刪除的運算,在這種場合下,通常使用更加復雜的編輯距離等算法。
3. 曼哈頓距離
本詞條缺少名片圖,補充相關內容使詞條更完整,還能快速升級,趕緊來編輯吧!
是由十九世紀的赫爾曼·閔可夫斯基所創詞匯 ,是種使用在幾何度量空間的幾何學用語,用以標明兩個點在標准坐標系上的絕對軸距總和。
出租車幾何或曼哈頓距離(Manhattan Distance)是由十九世紀的赫爾曼·閔可夫斯基所創詞匯 ,是種使用在幾何度量空間的幾何學用語,用以標明兩個點在標准坐標系上的絕對軸距總和。圖中紅線代表曼哈頓距離,綠色代表歐氏距離,也就是直線距離,而藍色和黃色代表等價的曼哈頓距離。曼哈頓距離——兩點在南北方向上的距離加上在東西方向上的距離,即d(i,j)=|xi-xj|+|yi-yj|。對於一個具有正南正北、正東正西方向規則布局的城鎮街道,從一點到達另一點的距離正是在南北方向上旅行的距離加上在東西方向上旅行的距離,因此,曼哈頓距離又稱為出租車距離。曼哈頓距離不是距離不變量,當坐標軸變動時,點間的距離就會不同。曼哈頓距離示意圖在早期的計算機圖形學中,屏幕是由像素構成,是整數,點的坐標也一般是整數,原因是浮點運算很昂貴,很慢而且有誤差,如果直接使用AB的歐氏距離(歐幾里德距離:在二維和三維空間中的歐氏距離的就是兩點之間的距離),則必須要進行浮點運算,如果使用AC和CB,則只要計算加減法即可,這就大大提高了運算速度,而且不管累計運算多少次,都不會有誤差。
![]()

曼哈頓距離的命名原因是從規划為方型建築區塊的城市(如曼哈頓)間,最短的行車路徑而來(忽略曼哈頓的單向車道以及只存在於3、14大道的斜向車道)。任何往東三區塊、往北六區塊的的路徑一定最少要走九區塊,沒有其他捷徑。
3.1. SimHash + 漢明距離
simhash是谷歌發明的算法,據說很nb,可以將一個文檔轉換成64位的字節,然后我們可以通過判斷兩個字節的漢明距離就知道是否相似了。
5、Jaccard相似性系數
Jaccard 系數,又叫Jaccard相似性系數,用來比較樣本集中的相似性和分散性的一個概率。Jaccard系數等於樣本集交集與樣本集合集的比值,即J = |A∩B| ÷ |A∪B|。
說白了就是交集除以並集,兩個文檔的共同都有的詞除以兩個文檔所有的詞
6、歐幾里得距離
歐幾里得距離是用得非常廣的公式,設A(x1, y1),B(x2, y2)是平面上任意兩點那么兩點間的距離距離(A,B)=平方根((x1-x2...)^2+(y1-y2....)^2)
我們可以拿兩個文檔所有的詞(不重復)在A文檔的詞頻作為x,在B文檔的作為y進行計算。
同樣拿A=你是個壞人、B=小明是個壞人 這兩句話作為例子,詞頻分別為A={1 0 1 1} 、B={0 1 1 1}。
那么距離為根號2,≈ 1.414(余3位)
然后可以通過1 ÷ (1 + 歐幾里德距離)得到相似度。
3.2. 、簡單共有詞
通過計算兩篇文檔共有的詞的總字符數除以最長文檔字符數來評估他們的相似度。
假設有A、B兩句話,先取出這兩句話的共同都有的詞的字數然后看哪句話更長就除以哪句話的字數。
同樣是A、B兩句話,共有詞的字符長度為4,最長句子長度為6,那么4/6,≈0.667。
文本相識度算法(余弦相似性、簡單共有詞、編輯距離、SimHash、漢明距離、Jaccard相似性系數、歐幾里得距離、曼哈頓距離 ) - 飄過的春風2015 - 博客頻道 - CSDN.NET.html
文本相識度算法(余弦相似性、簡單共有詞、編輯距離、SimHash、漢明距離、Jaccard相似性系數、歐幾里得距離、曼哈頓距離 ) - 飄過的春風2015 - 博客頻道 - CSDN.NET.html
作者:: 綽號:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿爾 拉帕努伊 )
漢字名:艾提拉(艾龍), EMAIL:1466519819@qq.com
轉載請注明來源: http://www.cnblogs.com/attilax/
Atiend
