⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d_s.m

📁 该程序实现D-S论据的数据融合功能
💻 M
字号:
%This program is written by Caoqiang
%Any question, contact me !
alfa=0.2;
beta=0.9;
temp=load('AttckSet_116');%NumOfTuples*5
attackSet=temp.attack_set_116;
temp=load('NormalSet_116');%NumOfTuples*5
normalSet=temp.normal_set;
attackNum=length(attackSet);
normalNum=length(normalSet);
%computing the relevant parametres
E_attack=[sum(attackSet(:,1))/attackNum,sum(attackSet(:,2))/attackNum,sum(attackSet(:,3))/attackNum,sum(attackSet(:,4))/attackNum,sum(attackSet(:,5))/attackNum];
E_normal=[sum(normalSet(:,1))/normalNum,sum(normalSet(:,2))/normalNum,sum(normalSet(:,3))/normalNum,sum(normalSet(:,4))/normalNum,sum(normalSet(:,5))/normalNum];
for j=1:5
m_min(j)=sum(attackSet(:,j)<E_normal(j))/(sum(attackSet(:,j)<E_normal(j))+sum(normalSet(:,j)<E_normal(j)));
m_max(j)=sum(attackSet(:,j)>E_attack(j))/(sum(attackSet(:,j)>E_attack(j))+sum(normalSet(:,j)>E_attack(j)));
end 
m_min(4)=sum(attackSet(:,4)>E_normal(4))/(sum(attackSet(:,4)>E_normal(4))+sum(normalSet(:,4)>E_normal(4)));
m_max(4)=sum(attackSet(:,4)<E_attack(4))/(sum(attackSet(:,4)<E_attack(4))+sum(normalSet(:,4)<E_attack(4)));
m_min
m_max
m_min=[0.1 0.1 0.1 0.1 0.1]
m_max=[0.75 0.75 0.75 0.7 0.7]

for j=1:5
    enta(j)=E_attack(j)-(E_normal(j)-E_attack(j))/(sqrt(m_max(j)/m_min(j))-1);
    cosin(j)=m_max(j)*(E_attack(j)-enta(j))*(E_attack(j)-enta(j));
end
enta
cosin

%process attack tuples
for j=[1 2 3 5]
    for i=1:length(attackSet)
        if attackSet(i,j)<E_normal(j)
            attackSet_pro_attack(i,j)=m_min(j);
            attackSet_pro_normal(i,j)=m_max(j);
        elseif attackSet(i,j)>E_attack(j)
            attackSet_pro_attack(i,j)=m_max(j);
            attackSet_pro_normal(i,j)=m_min(j);
        else 
            attackSet_pro_attack(i,j)=cosin(j)/((attackSet(i,j)-enta(j))*(attackSet(i,j)-enta(j)));%the attackSet(i,j) and E_normal(j)+E_attack(j)-attackSet(i,j) are symmetry about the line (E_normal(j)+E_attack(j))/2;
            attackSet_pro_normal(i,j)=cosin(j)/((E_normal(j)+E_attack(j)-attackSet(i,j)-enta(j))*(E_normal(j)+E_attack(j)-attackSet(i,j)-enta(j)));
        end
    end
end

for i=1:length(attackSet)
    if attackSet(i,4)<E_attack(4)
        attackSet_pro_attack(i,4)=m_max(4);
        attackSet_pro_normal(i,4)=m_min(4);
    elseif attackSet(i,4)>E_normal(4)
        attackSet_pro_attack(i,4)=m_min(4);
        attackSet_pro_normal(i,4)=m_max(4);
    else
        attackSet_pro_attack(i,4)=cosin(4)/((attackSet(i,4)-enta(4))*(attackSet(i,4)-enta(4)));%the attackSet(i,j) and E_normal(j)+E_attack(j)-attackSet(i,j) are symmetry about the line (E_normal(j)+E_attack(j))/2;
        attackSet_pro_normal(i,4)=cosin(4)/((E_normal(4)+E_attack(4)-attackSet(i,4)-enta(4))*(E_normal(4)+E_attack(4)-attackSet(i,4)-enta(4)));
    end
end

%process normal tuples
for j=[1 2 3 5]
    for i=1:length(normalSet)
        if normalSet(i,j)<E_normal(j)
            normalSet_pro_attack(i,j)=m_min(j);
            normalSet_pro_normal(i,j)=m_max(j);
        elseif normalSet(i,j)>E_attack(j)
            normalSet_pro_attack(i,j)=m_max(j);
            normalSet_pro_normal(i,j)=m_min(j);
        else 
            normalSet_pro_attack(i,j)=cosin(j)/((normalSet(i,j)-enta(j))*(normalSet(i,j)-enta(j)));%the attackSet(i,j) and E_normal(j)+E_attack(j)-attackSet(i,j) are symmetry about the line (E_normal(j)+E_attack(j))/2;
            normalSet_pro_normal(i,j)=cosin(j)/((E_normal(j)+E_attack(j)-normalSet(i,j)-enta(j))*(E_normal(j)+E_attack(j)-normalSet(i,j)-enta(j)));
        end
    end
end

for i=1:length(normalSet)
    if normalSet(i,4)<E_attack(4)
        normalSet_pro_attack(i,4)=m_max(4);
        normalSet_pro_normal(i,4)=m_min(4);
    elseif normalSet(i,4)>E_normal(4)
        normalSet_pro_attack(i,4)=m_min(4);
        normalSet_pro_normal(i,4)=m_max(4);
    else
        normalSet_pro_attack(i,4)=cosin(4)/((normalSet(i,4)-enta(4))*(normalSet(i,4)-enta(4)));%the attackSet(i,j) and E_normal(j)+E_attack(j)-attackSet(i,j) are symmetry about the line (E_normal(j)+E_attack(j))/2;
        normalSet_pro_normal(i,4)=cosin(4)/((E_normal(4)+E_attack(4)-normalSet(i,4)-enta(4))*(E_normal(4)+E_attack(4)-normalSet(i,4)-enta(4)));
    end
end

%fusion the 5 features
for i=1:length(attackSet)
    [temp1_p_a,temp1_p_n]=fusion(attackSet_pro_attack(i,1),attackSet_pro_normal(i,1),attackSet_pro_attack(i,2),attackSet_pro_normal(i,2));
    [temp2_p_a,temp2_p_n]=fusion(attackSet_pro_attack(i,3),attackSet_pro_normal(i,3),attackSet_pro_attack(i,4),attackSet_pro_normal(i,4));
    [temp3_p_a,temp3_p_n]=fusion(temp1_p_a,temp1_p_n,temp2_p_a,temp2_p_n);
    [attackSet_fusionpro_attack(i),attackSet_fusionpro_normal(i)]=fusion(temp3_p_a,temp3_p_n,attackSet_pro_attack(i,5),attackSet_pro_normal(i,5));
    attackSet_Bel(i)=attackSet_fusionpro_attack(i);   %compution the Bel and Pl for attack set
    attackSet_Pl(i)=1-attackSet_fusionpro_normal(i);
end

for i=1:length(normalSet)
    [temp1_p_a,temp1_p_n]=fusion(normalSet_pro_attack(i,1),normalSet_pro_normal(i,1),normalSet_pro_attack(i,2),normalSet_pro_normal(i,2));
    [temp2_p_a,temp2_p_n]=fusion(normalSet_pro_attack(i,3),normalSet_pro_normal(i,3),normalSet_pro_attack(i,4),normalSet_pro_normal(i,4));
    [temp3_p_a,temp3_p_n]=fusion(temp1_p_a,temp1_p_n,temp2_p_a,temp2_p_n);
    [normalSet_fusionpro_attack(i),normalSet_fusionpro_normal(i)]=fusion(temp3_p_a,temp3_p_n,normalSet_pro_attack(i,5),normalSet_pro_normal(i,5));
    normalSet_Bel(i)=normalSet_fusionpro_attack(i);   %compution the Bel and Pl for normal set
    normalSet_Pl(i)=1-normalSet_fusionpro_normal(i);
end

%collaborative fusion..........
%collaborative node: from 23&24 to 22   //2322 & 2422->223
%                    from 35&33 to 32   //3332 & 3532->325 
%                    from 32&3  to 5    //35   & 325 ->51
%                    from 0 & 5 to 1    //51   & 01  ->116

temp=load('AttckSet_01');
source1_attackset=temp.attack_set_01;
temp=load('NormalSet_01');
source1_normalset=temp.normal_set;
temp=load('AttckSet_51');
source2_attackset=temp.attack_set_51;
temp=load('NormalSet_51');
source2_normalset=temp.normal_set;
co_attackSet=collaborate_feature(source1_attackset,source2_attackset);
co_normalSet=collaborate_feature(source1_normalset,source2_normalset);

%process attack tuples
for j=[1 2 3 5]
    for i=1:length(co_attackSet)
        if co_attackSet(i,j)<E_normal(j)
            co_attackSet_pro_attack(i,j)=m_min(j);
            co_attackSet_pro_normal(i,j)=m_max(j);
        elseif co_attackSet(i,j)>E_attack(j)
            co_attackSet_pro_attack(i,j)=m_max(j);
            co_attackSet_pro_normal(i,j)=m_min(j);
        else 
            co_attackSet_pro_attack(i,j)=cosin(j)/((co_attackSet(i,j)-enta(j))*(co_attackSet(i,j)-enta(j)));%the attackSet(i,j) and E_normal(j)+E_attack(j)-attackSet(i,j) are symmetry about the line (E_normal(j)+E_attack(j))/2;
            co_attackSet_pro_normal(i,j)=cosin(j)/((E_normal(j)+E_attack(j)-co_attackSet(i,j)-enta(j))*(E_normal(j)+E_attack(j)-co_attackSet(i,j)-enta(j)));
        end
    end
end

for i=1:length(co_attackSet)
    if co_attackSet(i,4)<E_attack(4)
        co_attackSet_pro_attack(i,4)=m_max(4);
        co_attackSet_pro_normal(i,4)=m_min(4);
    elseif co_attackSet(i,4)>E_normal(4)
        co_attackSet_pro_attack(i,4)=m_min(4);
        co_attackSet_pro_normal(i,4)=m_max(4);
    else
        co_attackSet_pro_attack(i,4)=cosin(4)/((co_attackSet(i,4)-enta(4))*(co_attackSet(i,4)-enta(4)));%the attackSet(i,j) and E_normal(j)+E_attack(j)-attackSet(i,j) are symmetry about the line (E_normal(j)+E_attack(j))/2;
        co_attackSet_pro_normal(i,4)=cosin(4)/((E_normal(4)+E_attack(4)-co_attackSet(i,4)-enta(4))*(E_normal(4)+E_attack(4)-co_attackSet(i,4)-enta(4)));
    end
end

%process normal tuples
for j=[1 2 3 5]
    for i=1:length(co_normalSet)
        if co_normalSet(i,j)<E_normal(j)
            co_normalSet_pro_attack(i,j)=m_min(j);
            co_normalSet_pro_normal(i,j)=m_max(j);
        elseif co_normalSet(i,j)>E_attack(j)
            co_normalSet_pro_attack(i,j)=m_max(j);
            co_normalSet_pro_normal(i,j)=m_min(j);
        else 
            co_normalSet_pro_attack(i,j)=cosin(j)/((co_normalSet(i,j)-enta(j))*(co_normalSet(i,j)-enta(j)));%the attackSet(i,j) and E_normal(j)+E_attack(j)-attackSet(i,j) are symmetry about the line (E_normal(j)+E_attack(j))/2;
            co_normalSet_pro_normal(i,j)=cosin(j)/((E_normal(j)+E_attack(j)-co_normalSet(i,j)-enta(j))*(E_normal(j)+E_attack(j)-co_normalSet(i,j)-enta(j)));
        end
    end
end

for i=1:length(co_normalSet)
    if co_normalSet(i,4)<E_attack(4)
        co_normalSet_pro_attack(i,4)=m_max(4);
        co_normalSet_pro_normal(i,4)=m_min(4);
    elseif normalSet(i,4)>E_normal(4)
        co_normalSet_pro_attack(i,4)=m_min(4);
        co_normalSet_pro_normal(i,4)=m_max(4);
    else
        co_normalSet_pro_attack(i,4)=cosin(4)/((co_normalSet(i,4)-enta(4))*(co_normalSet(i,4)-enta(4)));%the attackSet(i,j) and E_normal(j)+E_attack(j)-attackSet(i,j) are symmetry about the line (E_normal(j)+E_attack(j))/2;
        co_normalSet_pro_normal(i,4)=cosin(4)/((E_normal(4)+E_attack(4)-co_normalSet(i,4)-enta(4))*(E_normal(4)+E_attack(4)-co_normalSet(i,4)-enta(4)));
    end
end

%fusion the 5 features
for i=1:length(co_attackSet)
    [co_temp1_p_a,co_temp1_p_n]=fusion(co_attackSet_pro_attack(i,1),co_attackSet_pro_normal(i,1),co_attackSet_pro_attack(i,2),co_attackSet_pro_normal(i,2));
    [co_temp2_p_a,co_temp2_p_n]=fusion(co_attackSet_pro_attack(i,3),co_attackSet_pro_normal(i,3),co_attackSet_pro_attack(i,4),co_attackSet_pro_normal(i,4));
    [co_temp3_p_a,co_temp3_p_n]=fusion(co_temp1_p_a,co_temp1_p_n,co_temp2_p_a,co_temp2_p_n);
    [co_attackSet_fusionpro_attack(i),co_attackSet_fusionpro_normal(i)]=fusion(co_temp3_p_a,co_temp3_p_n,co_attackSet_pro_attack(i,5),co_attackSet_pro_normal(i,5));
    co_attackSet_Bel(i)=co_attackSet_fusionpro_attack(i);   %compution the Bel and Pl for attack set
    co_attackSet_Pl(i)=1-co_attackSet_fusionpro_normal(i);
end

for i=1:length(co_normalSet)
    [co_temp1_p_a,co_temp1_p_n]=fusion(co_normalSet_pro_attack(i,1),co_normalSet_pro_normal(i,1),co_normalSet_pro_attack(i,2),co_normalSet_pro_normal(i,2));
    [co_temp2_p_a,co_temp2_p_n]=fusion(co_normalSet_pro_attack(i,3),co_normalSet_pro_normal(i,3),co_normalSet_pro_attack(i,4),co_normalSet_pro_normal(i,4));
    [co_temp3_p_a,co_temp3_p_n]=fusion(co_temp1_p_a,co_temp1_p_n,co_temp2_p_a,co_temp2_p_n);
    [co_normalSet_fusionpro_attack(i),co_normalSet_fusionpro_normal(i)]=fusion(co_temp3_p_a,co_temp3_p_n,co_normalSet_pro_attack(i,5),co_normalSet_pro_normal(i,5));
    co_normalSet_Bel(i)=co_normalSet_fusionpro_attack(i);   %compution the Bel and Pl for normal set
    co_normalSet_Pl(i)=1-co_normalSet_fusionpro_normal(i);
end
figure(1);
plot(normalSet_Pl,'k');hold on;plot(co_normalSet_Bel,'r');
figure(2);
plot(attackSet_Pl,'k');hold on; plot(co_attackSet_Bel,'r');
total=1000;
normal_normal=sum(normalSet_Pl<=alfa)+sum(normalSet_Pl>alfa & co_normalSet_Bel<beta);
normal_attack=total-normal_normal;
attack_attack=sum(attackSet_Pl>alfa & co_attackSet_Bel>beta);
attack_normal=total-attack_attack;
[normal_normal, normal_attack]
[attack_normal,attack_attack]

loc_detection_rate=(sum(normalSet_Pl<alfa)+sum(attackSet_Pl>alfa))/(length(attackSet_Pl)+length(normalSet_Pl));
loc_false_positive_rate=sum(normalSet_Pl>alfa)/(length(attackSet_Pl)+length(normalSet_Pl));
[loc_detection_rate, loc_false_positive_rate]


% alfa=0.1;
% i=1;
% for beta=0.1:0.05:0.95
%     loc_detection_rate(i)=(sum(normalSet_Pl<alfa)+sum(attackSet_Pl>alfa))/(length(attackSet_Pl)+length(normalSet_Pl));
%     loc_false_positive_rate(i)=sum(normalSet_Pl>alfa)/(length(attackSet_Pl)+length(normalSet_Pl));
%     co_detection_rate(i)=(sum(normalSet_Pl<=alfa)+sum(normalSet_Pl>alfa & co_normalSet_Bel<beta)+sum(attackSet_Pl>alfa & co_attackSet_Bel>beta))/(length(attackSet_Pl)+length(normalSet_Pl));
%     co_false_positive_rate(i)=sum(normalSet_Pl>alfa & co_normalSet_Bel>beta)/(length(attackSet_Pl)+length(normalSet_Pl));
%     %loc_detection_rate
%     %loc_false_positive_rate
%     %co_detection_rate
%     %co_false_positive_rate
%     i=i+1;
% end
% figure(3);
% plot(0.1:0.05:0.95,co_detection_rate,'k');hold on
% plot(0.1:0.05:0.95,co_false_positive_rate,'r');
% plot(0.1:0.05:0.95,loc_detection_rate,'b');
% plot(0.1:0.05:0.95,loc_false_positive_rate,'y');
% 
% beta=0.9;
% i=1;
% for alfa=0.1:0.05:0.95
%     loc_detection_rate(i)=(sum(normalSet_Pl<alfa)+sum(attackSet_Pl>alfa))/(length(attackSet_Pl)+length(normalSet_Pl));
%     loc_false_positive_rate(i)=sum(normalSet_Pl>alfa)/(length(attackSet_Pl)+length(normalSet_Pl));
%     co_detection_rate(i)=(sum(normalSet_Pl<=alfa)+sum(normalSet_Pl>alfa & co_normalSet_Bel<beta)+sum(attackSet_Pl>alfa & co_attackSet_Bel>beta))/(length(attackSet_Pl)+length(normalSet_Pl));
%     co_false_positive_rate(i)=sum(normalSet_Pl>alfa & co_normalSet_Bel>beta)/(length(attackSet_Pl)+length(normalSet_Pl));
%     %loc_detection_rate
%     %loc_false_positive_rate
%     %co_detection_rate
%     %co_false_positive_rate
%     i=i+1;
% end
% figure(4);
% plot(0.1:0.05:0.95,co_detection_rate,'k');hold on
% plot(0.1:0.05:0.95,co_false_positive_rate,'r');
% plot(0.1:0.05:0.95,loc_detection_rate,'b');
% plot(0.1:0.05:0.95,loc_false_positive_rate,'y');
% 
% loc_detection_rate(3)
% loc_false_positive_rate(3)
% co_detection_rate(3)
% co_false_positive_rate(3)
% 
% % alfa=0.95;
% % i=1;
% % for beta=0.9:0.01:1
% %     loc_detection_rate(i)=(sum(normalSet_Pl<alfa)+sum(attackSet_Pl>alfa))/(length(attackSet_Pl)+length(normalSet_Pl));
% %     loc_false_positive_rate(i)=sum(normalSet_Pl>alfa)/(length(attackSet_Pl)+length(normalSet_Pl));
% %     co_detection_rate(i)=(sum(normalSet_Pl<=alfa)+sum(normalSet_Pl>alfa & co_normalSet_Bel<beta)+sum(attackSet_Pl>alfa & co_attackSet_Bel>beta))/(length(attackSet_Pl)+length(normalSet_Pl));
% %     co_false_positive_rate(i)=sum(normalSet_Pl>alfa & co_normalSet_Bel>beta)/(length(attackSet_Pl)+length(normalSet_Pl));
% %     %loc_detection_rate
% %     %loc_false_positive_rate
% %     %co_detection_rate
% %     %co_false_positive_rate
% %     i=i+1;
% % end
% % figure(4);
% % plot(0.9:0.01:1,co_detection_rate,'k');hold on
% % plot(0.9:0.01:1,co_false_positive_rate,'r');
% %              
%              

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -