實現協同過濾算法的第一步是:計算用戶或項目之間的類似度。接下來介紹pdist和squareform算法
用法:ide
D = pdist(X)
D = pdist(X,distance)
D = pdist(X)計算 X 中各對行向量的相互距離(X是一個m-by-n的矩陣). 這裏 D 要特別注意,D 是一個長爲m(m–1)/2的行向量.能夠這樣理解 D 的生成:首先生成一個 X 的距離方陣,因爲該方陣是對稱的,且對角線上的元素爲0,因此取此方陣的下三角元素,按照Matlab中矩陣的按列存儲原則,此下三角各元素的索引排列即爲(2,1), (3,1), ..., (m,1), (3,2), ..., (m,2), ..., (m,m–1).
D = pdist(X,distance) 使用指定的距離.distance能夠取下面圓括號中的值.在該算法中用到如下三種距離:
夾角餘弦距離Cosine distance('cosine')
改進夾角餘弦距離Adjust Cosine distance('adjustedcosine')
相關距離Correlation distance('correlation')
接下來命令 squareform(D) 將此行向量轉換爲原距離方陣.(squareform函數是專門幹這事的,其逆變換是也是squareform。)
pdist其餘距離參數:
歐幾里德距離Euclidean distance('euclidean')
標準歐幾里德距離Standardized Euclidean distance('seuclidean')
馬哈拉諾比斯距離Mahalanobis distance('mahalanobis')
曼哈頓距離(城市區塊距離)City block metric('cityblock')
閔可夫斯基距離Minkowski metric('minkowski')
切比雪夫距離Chebychev distance('chebychev')
夾角餘弦距離Cosine distance('cosine')
改進夾角餘弦距離Adjust Cosine distance('adjustedcosine')
相關距離Correlation distance('correlation')
漢明距離Hamming distance('hamming')
傑卡德距離Jaccard distance('jaccard')