機器學習 Matlab 推薦系統協同過濾演算法

2021-08-20 22:38:09 字數 2380 閱讀 8334

吳恩達課程課件中關於協同過濾演算法的總結:

根據上述演算法總結,使用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 ...