% clear; % close all; % clc; % Data=load('YM20.mat').YM20; % EOverall=Data.O; % EStory=Data.S; % EActing=Data.A; % EDirection=Data.D; % EVisual=Data.V; % [satir, sutun]=size(EOverall); % Overall=EOverall; % Story=EStory; % Acting=EActing; % Direction=EDirection; % Visual=EVisual; % DatasetAll={Story,Acting,Direction,Visual,Overall}; % Overall'ı da DatasetAll'a ekle % [satir, sutun]=size(Overall); % % indices=load('indices_YM20.mat').indices; % indices = crossvalind('Kfold', satir, 10); % % Değişkenler % M=250; % %DUoR % Dataset=Overall; % **Overall-based Senaryo: Dataset olarak SADECE Overall kullanılıyor** % % Preference Skor % [ Preference_data ] = convert_Preference( Story, Acting,Direction,Visual,Overall,'user'); % PrefScore=Preference_data{5}; % **Overall-based Senaryo: Preference Score olarak SADECE Overall kullanılıyor** % % % mean_Criteria = cell(1,1); % Hücre dizisini başlat (Sadece 1 kriter - Overall) % % % Dataset=Overall; % PrefScore=Preference_data{5}; % [Pop_users] = kullanici_populerlikEgilimi(Dataset,'prefscore',PrefScore); %//bta_rpi, bta_apri,rpi,apri,prefscore % [Pop_users_S] = kullanici_populerlikEgilimi(DatasetAll{1},'prefscore',PrefScore); % [Pop_users_A] = kullanici_populerlikEgilimi(DatasetAll{2},'prefscore',PrefScore); % [Pop_users_D] = kullanici_populerlikEgilimi(DatasetAll{3},'prefscore',PrefScore); % [Pop_users_V] = kullanici_populerlikEgilimi(DatasetAll{4},'prefscore',PrefScore); % Pop_users_ALL={Pop_users_S,Pop_users_A,Pop_users_D,Pop_users_V}; % Precision_All_Users=zeros(size(Dataset,1)-1,6,size(Dataset,1)-1); % Tüm kullanıcıların precision değerleri için 3 boyutlu dizi % Recall_All_Users=zeros(size(Dataset,1)-1,6,size(Dataset,1)-1); % F1Score_All_Users=zeros(size(Dataset,1)-1,6,size(Dataset,1)-1); % Novelty_All_Users=zeros(size(Dataset,1)-1,6,size(Dataset,1)-1); % APLT_All_Users=zeros(size(Dataset,1)-1,6,size(Dataset,1)-1); % LTC_All_Users=zeros(size(Dataset,1)-1,6,size(Dataset,1)-1); % % Precision=zeros(size(Dataset,1)-1,6); % Recall=zeros(size(Dataset,1)-1,6); % F1Score=zeros(size(Dataset,1)-1,6); % Novelty=zeros(size(Dataset,1)-1,6); % APLT=zeros(size(Dataset,1)-1,6); % LTC=zeros(size(Dataset,1)-1,6); % User_Results = zeros(size(Dataset,1)-1, 6*6); % Her kullanıcı için tüm metrikler ve yöntemler % % for i=1:size(Dataset,1)-1 % i % Test_dataset=PrefScore(i,:); % Test_S=Story(i,:); % Test_A=Acting(i,:); % Test_V=Visual(i,:); % Test_D=Direction(i,:); % Test_O=Overall(i,:); % test_All={Test_S,Test_A,Test_V,Test_D,Test_O}; % % Test_prefScore=PrefScore(i,:); % Train_S = Story([1:i-1, i+1:size(Story,1)], :); % Train_A = Acting([1:i-1, i+1:size(Acting,1)], :); % Train_D = Direction([1:i-1, i+1:size(Direction,1)], :); % Train_V = Visual([1:i-1, i+1:size(Visual,1)], :); % Train_O = Overall([1:i-1, i+1:size(Overall,1)], :); % train_All={Train_S,Train_A,Train_D,Train_V,Train_O}; % Train_dataset = Dataset([1:i-1, i+1:size(Dataset,1)], :); % Train_prefScore = PrefScore([1:i-1, i+1:size(PrefScore,1)], :); % Train_prefScore_S = Preference_data{1,1}([1:i-1, i+1:size(Preference_data{1,1},1)], :); % Train_prefScore_A = Preference_data{1,2}([1:i-1, i+1:size(Preference_data{1,2},1)], :); % Train_prefScore_D = Preference_data{1,3}([1:i-1, i+1:size(Preference_data{1,3},1)], :); % Train_prefScore_V = Preference_data{1,4}([1:i-1, i+1:size(Preference_data{1,4},1)], :); % Train_prefScore_ALL={Train_prefScore_S,Train_prefScore_A,Train_prefScore_D,Train_prefScore_V}; % %% ******* Regresyon Train ****** % [~, sutun_test]=size(Test_dataset); % alltest_kriter_pre=[]; % for hh=1:sutun_test % if Test_O(1,hh)>0 % [satir_t, sutun_t]=size(alltest_kriter_pre); % alltest_kriter_pre=[alltest_kriter_pre((1:satir_t),:);Test_S(1,hh),Test_A(1,hh),Test_D(1,hh),Test_V(1,hh),Test_O(1,hh)]; % end % end % x=alltest_kriter_pre(:,1:4); % y=alltest_kriter_pre(:,5); % betaTest=regress(y,x); % [valuE, ordeR]=sort(betaTest,'descend'); % S,A,D,V % %[Pop_users] = kullanici_populerlikEgilimi(Train_dataset,'prefscore',Train_prefScore); %//bta_rpi, bta_apri,rpi,apri,prefscore % %% Kriter açısından % [Bas_urunler_S] = pareto(Train_S,'item'); % Kuyruk_urunler_S=find(~ismember(1:size(Train_S,2), Bas_urunler_S)); % [Bas_urunler_A] = pareto(Train_A,'item'); % Kuyruk_urunler_A=find(~ismember(1:size(Train_A,2), Bas_urunler_A)); % [Bas_urunler_D] = pareto(Train_D,'item'); % Kuyruk_urunler_D=find(~ismember(1:size(Train_D,2), Bas_urunler_D)); % [Bas_urunler_V] = pareto(Train_V,'item'); % Kuyruk_urunler_V=find(~ismember(1:size(Train_V,2), Bas_urunler_V)); % bas_urunler_ALL={Bas_urunler_S,Bas_urunler_A,Bas_urunler_V,Bas_urunler_D}; % kuyruk_urunler_ALL={Kuyruk_urunler_S,Kuyruk_urunler_A,Kuyruk_urunler_D,Kuyruk_urunler_V}; % [Bas_urunler] = pareto(Train_dataset,'item'); % **Overall Dataset kullanılıyor** % Kuyruk_urunler=find(~ismember(1:size(Train_dataset,2), Bas_urunler)); % PopRecList=0; % topN=10; % % RecList=zeros(topN,1); % user_ortalama=sum(Test_dataset)/nnz(Test_dataset); % E_user=find(Test_dataset>=user_ortalama); % pop_u=Pop_users(i);%size(intersect(E_user,Bas_urunler),1)/size(E_user,2); % tahmini_puanlar=collaborative_filtering(Dataset, i); % **Overall Dataset kullanılıyor** % [sirali_tahmini_puanlar,sirali_tahmini_indisler]=sort(tahmini_puanlar,'descend'); % pop_u_Priority=Pop_users_ALL{ordeR(1)};%size(intersect(E_user,Bas_urunler),1)/size(E_user,2); % tahmini_puanlar_Priority=collaborative_filtering(train_All{ordeR(1)}, i); % [sirali_tahmini_puanlar_Priority,sirali_tahmini_indisler_Priority]=sort(tahmini_puanlar_Priority,'descend'); % %% %%%%***** Priority DUoR ******%%%%%%%%%%%%%% % [RecList_DUoR] = DUoR_Priority(sirali_tahmini_puanlar_Priority,sirali_tahmini_indisler_Priority,bas_urunler_ALL{ordeR(1)},kuyruk_urunler_ALL{ordeR(4)},PopRecList,topN,pop_u_Priority,M,Train_prefScore_ALL{ordeR(1)},i); % % Değerlendirme Metrikleri % [precision_DUoR_Pr,recall_DUoR_Pr,F1Score_DUoR_Pr,novelty_DUoR_Pr,APLT_DUoR_Pr,LTC_DUoR_Pr] = performanceCalc(Dataset(i,:),RecList_DUoR,topN,Kuyruk_urunler); % %% %%%%***** New DUoR ******%%%%%%%%%%%%%% % % C --> aday ürünler kümesi % [RecList_DUoR] = DUoR_New_Method(sirali_tahmini_puanlar,sirali_tahmini_indisler,Bas_urunler,Kuyruk_urunler,PopRecList,topN,pop_u,M,Train_prefScore,i); % **Overall PrefScore kullanılıyor** % % Değerlendirme Metrikleri % [precision_DUoR_new,recall_DUoR_new,F1Score_DUoR_new,novelty_DUoR_new,APLT_DUoR_new,LTC_DUoR_new] = performanceCalc(Dataset(i,:),RecList_DUoR,topN,Kuyruk_urunler); % %% %%%%***** DUoR ******%%%%%%%%%%%%%% % % C --> aday ürünler kümesi % [RecList_DUoR] = DUoR_Method(sirali_tahmini_puanlar,sirali_tahmini_indisler,Bas_urunler,Kuyruk_urunler,PopRecList,topN,pop_u,M); % % Değerlendirme Metrikleri % [precision_DUoR,recall_DUoR,F1Score_DUoR,novelty_DUoR,APLT_DUoR,LTC_DUoR] = performanceCalc(Dataset(i,:),RecList_DUoR,topN,Kuyruk_urunler); % %% %%%******* Popularity-aware item weighting (Paiw) ********%%% % [paiw_puanlar,paiw_indisler] = paiw(Dataset,tahmini_puanlar); % **Overall Dataset ve tahminler kullanılıyor** % RecList_paiw=paiw_indisler(1:topN); % % Değerlendirme Metrikleri % [precision_paiw,recall_paiw,F1Score_paiw,novelty_paiw,APLT_paiw,LTC_paiw] = performanceCalc(Dataset(i,:),RecList_paiw,topN,Kuyruk_urunler); % %% %%%********** MUL *************** %%%% % [mul_puanlar,mul_indisler] = mul(Dataset,tahmini_puanlar); % **Overall Dataset ve tahminler kullanılıyor** % RecList_mul=mul_indisler(1:topN); % % Değerlendirme Metrikleri % [precision_mul,recall_mul,F1Score_mul,novelty_mul,APLT_mul,LTC_mul] = performanceCalc(Dataset(i,:),RecList_mul,topN,Kuyruk_urunler); % %% %%%********** AUG *************** %%%% % [aug_puanlar,aug_indisler] = aug(Dataset,tahmini_puanlar); % **Overall Dataset ve tahminler kullanılıyor** % RecList_aug=aug_indisler(1:topN); % % Değerlendirme Metrikleri % [precision_aug,recall_aug,F1Score_aug,novelty_aug,APLT_aug,LTC_aug] = performanceCalc(Dataset(i,:),RecList_aug,topN,Kuyruk_urunler); % %% %%%******** MC_PopBias *********** %%%% % Precision(i,:)=[precision_DUoR,precision_DUoR_new,precision_paiw,precision_mul,precision_aug,precision_DUoR_Pr]; % Recall(i,:)=[recall_DUoR,recall_DUoR_new,recall_paiw,recall_mul,recall_aug,recall_DUoR_Pr]; % F1Score(i,:)=[F1Score_DUoR,F1Score_DUoR_new,F1Score_paiw,F1Score_mul,F1Score_aug,F1Score_DUoR_Pr]; % Novelty(i,:)=[novelty_DUoR,novelty_DUoR_new,novelty_paiw,novelty_mul,novelty_aug,novelty_DUoR_Pr]; % APLT(i,:)=[APLT_DUoR,APLT_DUoR_new,APLT_paiw,APLT_mul,APLT_aug,APLT_DUoR_Pr]; % LTC(i,:)=[LTC_DUoR,LTC_DUoR_new,LTC_paiw,LTC_mul,LTC_aug,LTC_DUoR_Pr]; % % User_Results(i,:) = [Precision(i,:), Recall(i,:), F1Score(i,:), Novelty(i,:), APLT(i,:), LTC(i,:)]; % Kullanıcı sonuçları bir satırda toplandı % % Precision_All_Users(:,:,i)=Precision; % Tüm kullanıcıların precision değerleri saklanıyor % Recall_All_Users(:,:,i)=Recall; % F1Score_All_Users(:,:,i)=F1Score; % Novelty_All_Users(:,:,i)=Novelty; % APLT_All_Users(:,:,i)=APLT; % LTC_All_Users(:,:,i)=LTC; % end % mean_Criteria{1}=[mean(Precision);mean(Recall);mean(F1Score);mean(Novelty);mean(APLT);mean(LTC)]; % Sadece 1 ortalama değer var artık % % % Ortalama değerleri hesapla % ortalama_degerler = mean(mean_Criteria{1}, 2)'; % Sadece 1 ortalama değer var artık % % % Excel için tablo oluştur (Satırlar kullanıcılar, sütunlar metrikler ve yöntemler) % MethodNames = {'DUoR', 'DUoR_new', 'Paiw', 'Mul', 'Aug', 'DUoR_Pr'}; % MetricNames = {'Precision', 'Recall', 'F1Score', 'Novelty', 'APLT', 'LTC'}; % VariableNames_Excel = cell(1, length(MethodNames) * length(MetricNames)); % Initialize as cell array % % v_idx = 1; % for method_idx = 1:length(MethodNames) % method_name = MethodNames{method_idx}; % for m_idx = 1:length(MetricNames) % metric_name = MetricNames{m_idx}; % VariableNames_Excel{v_idx} = sprintf('%s_%s', metric_name, method_name); % Populate as cell array of strings % v_idx = v_idx + 1; % end % end % % UserRowNames = cell(1,size(Dataset,1)-1); % for k=1:size(Dataset,1)-1 % UserRowNames{k} = sprintf('User%d', k); % end % % % disp(['Size of User_Results: ', num2str(size(User_Results))]); % disp(['Length of VariableNames_Excel: ', num2str(length(VariableNames_Excel))]); % if isempty(VariableNames_Excel) % disp('VariableNames_Excel is empty!'); % end % if isempty(User_Results) % disp('User_Results is empty!'); % end % % T = array2table(User_Results, 'VariableNames', VariableNames_Excel, 'RowNames', UserRowNames); % % % Excel dosyasına yaz % filename = 'results_YM20_OverallBased.xlsx'; % sheetname = 'Overall_Based_YM20'; % writetable(T, filename, 'Sheet', sheetname, 'WriteRowNames', true); clear; close all; clc; Data=load('YM10.mat').YM10; EOverall=Data.O; EStory=Data.S; EActing=Data.A; EDirection=Data.D; EVisual=Data.V; [satir, sutun]=size(EOverall); Overall=EOverall; Story=EStory; Acting=EActing; Direction=EDirection; Visual=EVisual; DatasetAll={Story,Acting,Direction,Visual,Overall}; % Overall'ı da DatasetAll'a ekle [satir, sutun]=size(Overall); % indices=load('indices_YM20.mat').indices; indices = crossvalind('Kfold', satir, 10); % Değişkenler M=250; %DUoR Dataset=Overall; % **Overall-based Senaryo: Dataset olarak SADECE Overall kullanılıyor** % Preference Skor [ Preference_data ] = convert_Preference( Story, Acting,Direction,Visual,Overall,'user'); PrefScore=Preference_data{5}; % **Overall-based Senaryo: Preference Score olarak SADECE Overall kullanılıyor** mean_Criteria = cell(1,1); % Hücre dizisini başlat (Sadece 1 kriter - Overall) Dataset=Overall; % [Pop_usersPref] = kullanici_populerlikEgilimi(Dataset,'prefscore',PrefScore); %//bta_rpi, bta_apri,rpi,apri,prefscore % [Pop_usersBTAR] = kullanici_populerlikEgilimi(Dataset,'bta_rpi',PrefScore); %//bta_rpi, bta_apri,rpi,apri,prefscore % [Pop_usersBTAA] = kullanici_populerlikEgilimi(Dataset,'bta_apri',PrefScore); %//bta_rpi, bta_apri,rpi,apri,prefscore % [Pop_usersRPI] = kullanici_populerlikEgilimi(Dataset,'rpi',PrefScore); %//bta_rpi, bta_apri,rpi,apri,prefscore % [Pop_usersAPRI] = kullanici_populerlikEgilimi(Dataset,'apri',PrefScore); %//bta_rpi, bta_apri,rpi,apri,prefscore % DPI=(Pop_usersBTAR-Pop_usersRPI)./Pop_usersRPI % ARC=abs((Pop_usersBTAR-Pop_usersRPI)./Pop_usersRPI); Precision_All_Users=zeros(size(Dataset,1)-1,6,size(Dataset,1)-1); % Tüm kullanıcıların precision değerleri için 3 boyutlu dizi Recall_All_Users=zeros(size(Dataset,1)-1,6,size(Dataset,1)-1); F1Score_All_Users=zeros(size(Dataset,1)-1,6,size(Dataset,1)-1); Novelty_All_Users=zeros(size(Dataset,1)-1,6,size(Dataset,1)-1); APLT_All_Users=zeros(size(Dataset,1)-1,6,size(Dataset,1)-1); LTC_All_Users=zeros(size(Dataset,1)-1,6,size(Dataset,1)-1); Precision=zeros(size(Dataset,1)-1,6); Recall=zeros(size(Dataset,1)-1,6); F1Score=zeros(size(Dataset,1)-1,6); Novelty=zeros(size(Dataset,1)-1,6); APLT=zeros(size(Dataset,1)-1,6); LTC=zeros(size(Dataset,1)-1,6); User_Results = zeros(size(Dataset,1)-1, 6*6); % Her kullanıcı için tüm metrikler ve yöntemler DuorPri=[]; DuorNew=[]; DuOR=[]; PAIW=[]; MUL=[]; AUG=[]; pop_select={'bta_rpi','bta_apri','rpi','apri','prefscore'}; for secim=5 for kriter=1:4 PrefScore=Preference_data{kriter}; Dataset=DatasetAll{kriter}; DuorPri=[]; DuorNew=[]; DuOR=[]; PAIW=[]; MUL=[]; AUG=[]; secim secimVal=pop_select{1,secim}; [Pop_users] = kullanici_populerlikEgilimi(Dataset,secimVal,PrefScore); %//bta_rpi, bta_apri,rpi,apri,prefscore [Pop_users_S] = kullanici_populerlikEgilimi(DatasetAll{1},secimVal,PrefScore); [Pop_users_A] = kullanici_populerlikEgilimi(DatasetAll{2},secimVal,PrefScore); [Pop_users_D] = kullanici_populerlikEgilimi(DatasetAll{3},secimVal,PrefScore); [Pop_users_V] = kullanici_populerlikEgilimi(DatasetAll{4},secimVal,PrefScore); Pop_users_ALL={Pop_users_S,Pop_users_A,Pop_users_D,Pop_users_V}; for i=1:size(Dataset,1)-1 secim kriter i Test_dataset=PrefScore(i,:); Test_S=Story(i,:); Test_A=Acting(i,:); Test_V=Visual(i,:); Test_D=Direction(i,:); Test_O=Overall(i,:); test_All={Test_S,Test_A,Test_V,Test_D,Test_O}; Test_prefScore=PrefScore(i,:); Train_S = Story([1:i-1, i+1:size(Story,1)], :); Train_A = Acting([1:i-1, i+1:size(Acting,1)], :); Train_D = Direction([1:i-1, i+1:size(Direction,1)], :); Train_V = Visual([1:i-1, i+1:size(Visual,1)], :); Train_O = Overall([1:i-1, i+1:size(Overall,1)], :); train_All={Train_S,Train_A,Train_D,Train_V,Train_O}; Train_dataset = Dataset([1:i-1, i+1:size(Dataset,1)], :); Train_prefScore = PrefScore([1:i-1, i+1:size(PrefScore,1)], :); Train_prefScore_S = Preference_data{1,1}([1:i-1, i+1:size(Preference_data{1,1},1)], :); Train_prefScore_A = Preference_data{1,2}([1:i-1, i+1:size(Preference_data{1,2},1)], :); Train_prefScore_D = Preference_data{1,3}([1:i-1, i+1:size(Preference_data{1,3},1)], :); Train_prefScore_V = Preference_data{1,4}([1:i-1, i+1:size(Preference_data{1,4},1)], :); Train_prefScore_ALL={Train_prefScore_S,Train_prefScore_A,Train_prefScore_D,Train_prefScore_V}; %% ******* Regresyon Train ****** [~, sutun_test]=size(Test_dataset); alltest_kriter_pre=[]; for hh=1:sutun_test if Test_O(1,hh)>0 [satir_t, sutun_t]=size(alltest_kriter_pre); alltest_kriter_pre=[alltest_kriter_pre((1:satir_t),:);Test_S(1,hh),Test_A(1,hh),Test_D(1,hh),Test_V(1,hh),Test_O(1,hh)]; end end x=alltest_kriter_pre(:,1:4); y=alltest_kriter_pre(:,5); betaTest=regress(y,x); [valuE, ordeR]=sort(betaTest,'descend'); % S,A,D,V %[Pop_users] = kullanici_populerlikEgilimi(Train_dataset,'prefscore',Train_prefScore); %//bta_rpi, bta_apri,rpi,apri,prefscore %% Kriter açısından [Bas_urunler_S] = calculate_pareto(Train_S,'item'); Kuyruk_urunler_S=find(~ismember(1:size(Train_S,2), Bas_urunler_S)); [Bas_urunler_A] = calculate_pareto(Train_A,'item'); Kuyruk_urunler_A=find(~ismember(1:size(Train_A,2), Bas_urunler_A)); [Bas_urunler_D] = calculate_pareto(Train_D,'item'); Kuyruk_urunler_D=find(~ismember(1:size(Train_D,2), Bas_urunler_D)); [Bas_urunler_V] = calculate_pareto(Train_V,'item'); Kuyruk_urunler_V=find(~ismember(1:size(Train_V,2), Bas_urunler_V)); bas_urunler_ALL={Bas_urunler_S,Bas_urunler_A,Bas_urunler_V,Bas_urunler_D}; kuyruk_urunler_ALL={Kuyruk_urunler_S,Kuyruk_urunler_A,Kuyruk_urunler_D,Kuyruk_urunler_V}; [Bas_urunler] = calculate_pareto(Train_dataset,'item'); % **Overall Dataset kullanılıyor** Kuyruk_urunler=find(~ismember(1:size(Train_dataset,2), Bas_urunler)); PopRecList=0; topN=10; % RecList=zeros(topN,1); user_ortalama=sum(Test_dataset)/nnz(Test_dataset); E_user=find(Test_dataset>=user_ortalama); pop_u=Pop_users(i);%size(intersect(E_user,Bas_urunler),1)/size(E_user,2); tahmini_puanlar=collaborative_filtering(Dataset, i); % **Overall Dataset kullanılıyor** [sirali_tahmini_puanlar,sirali_tahmini_indisler]=sort(tahmini_puanlar,'descend'); pop_u_Priority=Pop_users_ALL{ordeR(1)};%size(intersect(E_user,Bas_urunler),1)/size(E_user,2); tahmini_puanlar_Priority=collaborative_filtering(train_All{ordeR(1)}, i); [sirali_tahmini_puanlar_Priority,sirali_tahmini_indisler_Priority]=sort(tahmini_puanlar_Priority,'descend'); %% %%%%***** Priority DUoR ******%%%%%%%%%%%%%% [RecList_DUoR_Pri] = DUoR_Priority(sirali_tahmini_puanlar_Priority,sirali_tahmini_indisler_Priority,bas_urunler_ALL{ordeR(1)},kuyruk_urunler_ALL{ordeR(4)},PopRecList,topN,pop_u_Priority,M,Train_prefScore_ALL{ordeR(1)},i); % Değerlendirme Metrikleri [precision_DUoR_Pr,recall_DUoR_Pr,F1Score_DUoR_Pr,novelty_DUoR_Pr,APLT_DUoR_Pr,LTC_DUoR_Pr] = performanceCalc(Dataset(i,:),RecList_DUoR_Pri,topN,Kuyruk_urunler); %% %%%%***** New DUoR ******%%%%%%%%%%%%%% % C --> aday ürünler kümesi [RecList_DUoR_New] = DUoR_New_Method(sirali_tahmini_puanlar,sirali_tahmini_indisler,Bas_urunler,Kuyruk_urunler,PopRecList,topN,pop_u,M,Train_prefScore,i); % **Overall PrefScore kullanılıyor** % Değerlendirme Metrikleri [precision_DUoR_new,recall_DUoR_new,F1Score_DUoR_new,novelty_DUoR_new,APLT_DUoR_new,LTC_DUoR_new] = performanceCalc(Dataset(i,:),RecList_DUoR_New,topN,Kuyruk_urunler); %% %%%%***** DUoR ******%%%%%%%%%%%%%% % C --> aday ürünler kümesi [RecList_DUoR] = DUoR_Method(sirali_tahmini_puanlar,sirali_tahmini_indisler,Bas_urunler,Kuyruk_urunler,PopRecList,topN,pop_u,M); % Değerlendirme Metrikleri [precision_DUoR,recall_DUoR,F1Score_DUoR,novelty_DUoR,APLT_DUoR,LTC_DUoR] = performanceCalc(Dataset(i,:),RecList_DUoR,topN,Kuyruk_urunler); %% %%%******* Popularity-aware item weighting (Paiw) ********%%% [paiw_puanlar,paiw_indisler] = paiw(Dataset,tahmini_puanlar); % **Overall Dataset ve tahminler kullanılıyor** RecList_paiw=paiw_indisler(1:topN); % Değerlendirme Metrikleri [precision_paiw,recall_paiw,F1Score_paiw,novelty_paiw,APLT_paiw,LTC_paiw] = performanceCalc(Dataset(i,:),RecList_paiw,topN,Kuyruk_urunler); %% %%%********** MUL *************** %%%% [mul_puanlar,mul_indisler] = mul(Dataset,tahmini_puanlar); % **Overall Dataset ve tahminler kullanılıyor** RecList_mul=mul_indisler(1:topN); % Değerlendirme Metrikleri [precision_mul,recall_mul,F1Score_mul,novelty_mul,APLT_mul,LTC_mul] = performanceCalc(Dataset(i,:),RecList_mul,topN,Kuyruk_urunler); %% %%%********** AUG *************** %%%% [aug_puanlar,aug_indisler] = aug(Dataset,tahmini_puanlar); % **Overall Dataset ve tahminler kullanılıyor** RecList_aug=aug_indisler(1:topN); % Değerlendirme Metrikleri [precision_aug,recall_aug,F1Score_aug,novelty_aug,APLT_aug,LTC_aug] = performanceCalc(Dataset(i,:),RecList_aug,topN,Kuyruk_urunler); %% %%%******** MC_PopBias *********** %%%% DuorPri=[DuorPri;RecList_DUoR_Pri']; DuorNew=[DuorNew;RecList_DUoR_New']; DuOR=[DuOR;RecList_DUoR']; PAIW=[PAIW;RecList_paiw]; MUL=[MUL;RecList_mul]; AUG=[AUG;RecList_aug]; Precision(i,:)=[precision_DUoR,precision_DUoR_new,precision_paiw,precision_mul,precision_aug,precision_DUoR_Pr]; Recall(i,:)=[recall_DUoR,recall_DUoR_new,recall_paiw,recall_mul,recall_aug,recall_DUoR_Pr]; F1Score(i,:)=[F1Score_DUoR,F1Score_DUoR_new,F1Score_paiw,F1Score_mul,F1Score_aug,F1Score_DUoR_Pr]; Novelty(i,:)=[novelty_DUoR,novelty_DUoR_new,novelty_paiw,novelty_mul,novelty_aug,novelty_DUoR_Pr]; APLT(i,:)=[APLT_DUoR,APLT_DUoR_new,APLT_paiw,APLT_mul,APLT_aug,APLT_DUoR_Pr]; LTC(i,:)=[LTC_DUoR,LTC_DUoR_new,LTC_paiw,LTC_mul,LTC_aug,LTC_DUoR_Pr]; User_Results(i,:) = [Precision(i,:), Recall(i,:), F1Score(i,:), Novelty(i,:), APLT(i,:), LTC(i,:)]; % Kullanıcı sonuçları bir satırda toplandı % Precision_All_Users(:,:,i)=Precision; % Tüm kullanıcıların precision değerleri saklanıyor % Recall_All_Users(:,:,i)=Recall; % F1Score_All_Users(:,:,i)=F1Score; % Novelty_All_Users(:,:,i)=Novelty; % APLT_All_Users(:,:,i)=APLT; % LTC_All_Users(:,:,i)=LTC; end DuorPri_Criteria{kriter}=DuorPri; DuorNew_Criteria{kriter}=DuorNew; DuOR_Criteria{kriter}=DuOR; PAIW_Criteria{kriter}=PAIW; MUL_Criteria{kriter}=MUL; AUG_Criteria{kriter}=AUG; Precision(isnan(Precision))=0; Recall(isnan(Recall))=0; F1Score(isnan(F1Score))=0; Novelty(isnan(Novelty))=0; APLT(isnan(APLT))=0; LTC(isnan(LTC))=0; PrecisionCriteria{kriter}=Precision; mean_Criteria{kriter,secim}=[mean(Precision);mean(Recall);mean(F1Score);mean(Novelty);mean(APLT);mean(LTC)]'; % Sadece 1 ortalama değer var artık end Precision_Avg=(PrecisionCriteria{1,1}+PrecisionCriteria{1,2}+PrecisionCriteria{1,3}+PrecisionCriteria{1,4})/4; filename = strcat(secimVal, '_CriteriaYM10_Precision.xlsx'); writematrix(Precision_Avg, filename); DuorPri_Avg=(DuorPri_Criteria{1,1}+DuorPri_Criteria{1,2}+DuorPri_Criteria{1,3}+DuorPri_Criteria{1,4})/4; filename1 = strcat(secimVal, '_CriteriaYM10_DuorPri.xlsx'); writematrix(DuorPri_Avg, filename1); DuorNew_Avg=(DuorNew_Criteria{1,1}+DuorNew_Criteria{1,2}+DuorNew_Criteria{1,3}+DuorNew_Criteria{1,4})/4; filename2 = strcat(secimVal, '_CriteriaYM10_DuorNew.xlsx'); writematrix(DuorNew_Avg, filename2); DuOR_Avg=(DuOR_Criteria{1,1}+DuOR_Criteria{1,2}+DuOR_Criteria{1,3}+DuOR_Criteria{1,4})/4; filename3 = strcat(secimVal, '_CriteriaYM10_DuOR.xlsx'); writematrix(DuOR_Avg, filename3); PAIW_Avg=(PAIW_Criteria{1,1}+PAIW_Criteria{1,2}+PAIW_Criteria{1,3}+PAIW_Criteria{1,4})/4; filename4 = strcat(secimVal, '_CriteriaYM10_PAIW.xlsx'); writematrix(PAIW_Avg, filename4); MUL_Avg=(MUL_Criteria{1,1}+MUL_Criteria{1,2}+MUL_Criteria{1,3}+MUL_Criteria{1,4})/4; filename5 = strcat(secimVal, '_CriteriaYM10_MUL.xlsx'); writematrix(MUL_Avg, filename5); AUG_Avg=(AUG_Criteria{1,1}+AUG_Criteria{1,2}+AUG_Criteria{1,3}+AUG_Criteria{1,4})/4; filename6 = strcat(secimVal, '_CriteriaYM10_AUG.xlsx'); writematrix(AUG_Avg, filename6); end % Ortalama değerleri hesapla %all_result=[mean_Criteria{1,1};mean_Criteria{1,2};mean_Criteria{1,3};mean_Criteria{1,4};mean_Criteria{1,5}]; mean_Criteriaavg1=(mean_Criteria{1,1}+mean_Criteria{2,1}+mean_Criteria{3,1}+mean_Criteria{4,1})/4 mean_Criteriaavg2=(mean_Criteria{1,2}+mean_Criteria{2,2}+mean_Criteria{3,2}+mean_Criteria{4,2})/4 mean_Criteriaavg3=(mean_Criteria{1,3}+mean_Criteria{2,3}+mean_Criteria{3,3}+mean_Criteria{4,3})/4 mean_Criteriaavg4=(mean_Criteria{1,4}+mean_Criteria{2,4}+mean_Criteria{3,4}+mean_Criteria{4,4})/4 all_result=[mean_Criteriaavg1;mean_Criteriaavg2;mean_Criteriaavg3;mean_Criteriaavg4]; ortalama_degerler = mean(mean_Criteria{1}, 2)'; % Sadece 1 ortalama değer var artık % % Excel için tablo oluştur (Satırlar kullanıcılar, sütunlar metrikler ve yöntemler) % MethodNames = {'DUoR', 'DUoR_new', 'Paiw', 'Mul', 'Aug', 'DUoR_Pr'}; % MetricNames = {'Precision', 'Recall', 'F1Score', 'Novelty', 'APLT', 'LTC'}; % VariableNames_Excel = cell(1, length(MethodNames) * length(MetricNames)); % Initialize as cell array % % v_idx = 1; % for method_idx = 1:length(MethodNames) % method_name = MethodNames{method_idx}; % for m_idx = 1:length(MetricNames) % metric_name = MetricNames{m_idx}; % VariableNames_Excel{v_idx} = sprintf('%s_%s', metric_name, method_name); % Populate as cell array of strings % v_idx = v_idx + 1; % end % end % % UserRowNames = cell(1,size(Dataset,1)-1); % for k=1:size(Dataset,1)-1 % UserRowNames{k} = sprintf('User%d', k); % end % % disp(['Size of User_Results: ', num2str(size(User_Results))]); % disp(['Length of VariableNames_Excel: ', num2str(length(VariableNames_Excel))]); % if isempty(VariableNames_Excel) % disp('VariableNames_Excel is empty!'); % end % if isempty(User_Results) % disp('User_Results is empty!'); % end % % % Ortalama satırını hesapla % mean_row = mean(User_Results, 1); % % % Ortalama satırını User_Results matrisine ekle % User_Results_with_mean = [User_Results; mean_row]; % % % Row names'e 'Average' satırını ekle % UserRowNames_with_mean = [UserRowNames, {'Average'}]; % % % Yeni tabloyu oluştur % T_with_mean = array2table(User_Results_with_mean, 'VariableNames', VariableNames_Excel, 'RowNames', UserRowNames_with_mean); % % % Excel dosyasına yaz % filename = 'results_YM20_OverallBased.xlsx'; % sheetname = 'Overall_Based_YM20'; % writetable(T_with_mean, filename, 'Sheet', sheetname, 'WriteRowNames', true);