吳恩達課程課件中關於協同過濾演算法的總結:
根據上述演算法總結,使用matlab,可以實現上述演算法。
測試用到的資料是我的作業中的資料:
該演算法實現起來不難,我使用的是最基本的gradient descent(當然可以使用其他更加高階的方法),那麼**主要就在於gradient descent的實現。
另外,初始化引數一定要記得隨機初始化。
完整的matlab**如下,各個步驟注釋均有說明:
clear;
%% input useful parameters
% 電影特徵維數
m= 4;
% 使用者數
nu= 8;
% 電影數
nm= 7;
y= [4,4,-1,-1,1,1,5,-1;5,5,-1,1,-1,-1,-1,-1;-1,4,1,-1,-1,1,5,4;5,-1,2,5,-1,1,2,-1;1,-1,5,4,5,-1,-1,1;1,-1,5,-1,-1,4,-1,-1;-1,1,-1,5,-1,5,1,-1];
r= ones(nm, nu);
index= find(y== -1);
r(index)= 0;
% 正則化引數
lambda= 0.1;
% 學習率
alpha= 0.01;
%% initialize
% random
x = randn(nm, m);
theta = randn(nu, m);
% not random which can't get right result
% c= 3;
% x = c* ones(nm, m);
% theta = c* ones(nu, m);
%% gradient descent
j = 0;
x_grad = zeros(size(x));
theta_grad = zeros(size(theta));
num_iter= 50000;
for k= 1:num_iter
predict=(x*theta') .* r;
j=1/2*sum(sum((predict-y) .^ 2))+lambda/2*sum(sum(theta .^ 2))+lambda/2*sum(sum(x .^ 2));
fprintf('j= %d\n', j);
fori= 1:nm
idx= find(r(i,:)==1);
thetatemp= theta(idx,:);
ytemp= y(i, idx);
x_grad(i,:)= (x(i,:)*thetatemp'- ytemp)* thetatemp+ lambda* x(i, :);
%x(i,:)= x(i,:)- alpha* x_grad(i,:);
end x= x-alpha* x_grad;
fori= 1:nu
idx= find(r(:,i)== 1);
xtemp= x(idx,:);
ytemp= y(idx,i);
theta_grad(i,:)=(xtemp*theta(i,:)'-ytemp)'*xtemp+lambda*theta(i,:);
%theta(i,:)= theta(i,:)- alpha* theta_grad(i,:);
end theta= theta-alpha*theta_grad;
end%% predict
y_pred= x* theta';
%% calculate the square error
idx= find(r== 1);
s_error_mat= (y_pred- y).^2;
s_error= sum(s_error_mat(idx));
%% code for calculate similarity
% msimi= zeros(7, 1);
% for i= 1:7
% msimi(i)= norm(x(i,:)- x(1,:));
% end
% msimi= zeros(7, 1);
% for i= 1:7
% msimi(i)= norm(x(i,:)- x(5,:));
% end
機器學習 推薦系統
在各類 軟體或各大購物 裡,通常會存在推薦系統。它可以根據每個使用者的個人喜好為使用者推薦相應的歌曲 商品 從而增加使用者體驗,並提高了產品的銷量。因此,推薦系統是乙個很值得學習的應用領域。如下圖所示,這是4個使用者對5部電影的評價,我們要求評價只能是0 5之間的數。可以看出,有一些已經打分了,有一...
機器學習2 推薦系統
問題 topk ctr步驟 feature recall 基於熱度,基於使用者興趣標籤,基於cf,基於fm sort lr,gbdt,gbdt lr,fm,dnn ad評價指標 accuracy 正確的樣本 總樣本 precision 為正類正確的樣本數 為正類的樣本數 recall 為正類正確的樣...
機器學習(10) 推薦系統
估計這章內容後面來的概率也比較低吧,學到一點思想,但畢竟現在推薦系統作為企業超看重的部分,發展較好,這些內容是不夠的,太入門了 推薦系統能領悟特徵學習的思想,不需要手動建立特徵 未防止後面看不懂,這裡做個說明 nu表示 使用者數量,nm表示電影數量,r i,j 1表示使用者j看過電影i,y i,j ...