%svd chengxua = [5 5 0 5;5 0 3 4; 3 4 0 3; 0 0 5 3; 5 4 4 5; 5 4 5 5];
a = a';
[u s v] = svd(a);
u = u(:,1:4);
s = s(1:4,1:4);
v = v(:,1:4);
rea = u*s*v';
%give one new user
bob = [5 5 0 0 0 5];
uservector = bob*v*s;
for i = 1:1:size(a,1)
temp = u(i,:);
similarity = temp*uservector'/(sqrt(temp*temp')*sqrt(uservector*uservector'));
userlist(i) = similarity;
endrank = sort(userlist);
l = size(rank,2);
t = zeros(1,size(a,2));
for i=l:-1:l-1
indx = find(rank(i)==userlist);
sim = rank(i);
t = t + a(indx,:)*sim;
endindex = find(bob==0);
rank = t(index);
rank
matlab的**很簡單,因為有現場的svd函式可以使用
首先進行svd分解,之後我們會得到u,s,v三個矩陣
個人是這麼理解的
如果在最初的矩陣中:列代表item而行代表了user
那麼u則代表了user和中間量的關係,v代表了item與中間量的關係
s代表了不同中間量在期中所佔的比重,或者是貢獻。
這個中間量,我們可以理解為是item和類別,例如電影我們可以分為喜劇或者等等。
這就產生了乙個附帶產品
我們可以根據u和v對user和item進行聚類。這個以後再說
下面我們來了乙個新的使用者,我們知道它的一些資訊,
那麼,我們可以通過v和s把使用者的資訊對映到u相同的平面
然後計算新使用者和old user的相似度
通過老使用者對item的興趣,計算新使用者對沒有見過的item的興趣程度
對這個結果rank後,即使最終推薦的順序。
參看:
基於matlab的矩陣奇異值(SVD)分解
目錄 1 計算原理 1.1求解v 1.2求解d 1.3求解u 2 matlab程式 2.1 注意 3 設矩陣a的大小m n m n a ud 首先求出的特徵值及特徵值的特徵值從大到小按順序排列,對應的正交特徵向量也要按特徵值的順序排列。排列好的正交的特徵向量即為v v1,v2 其中v1為非零特徵值的...
Hog特徵的簡單實現 matlab
hog特徵的簡單實現 針對hog特徵不做過多的解釋 可參考其他博主的原理介紹。本文是matlab版本的實現。該版本的hog特徵將影象resize為64 128 首先將rgb轉灰度圖 再進行伽馬校正 對伽馬校正後的影象做歸一化處理 為什麼這樣做,請參看其他博主具體的原理介紹 伽馬校正使用的是 open...
SpringBoot實現ES簡單搜尋和推薦
es高階客戶端 public resthighlevelclient resthighlevelclient public list query add the list data.add sourcemap catch ioexception e return data title的型別是 typ...