信用评价是各种店铺卖家分析买家信用行为的重要内容,?本文给出随机仿真代码模拟实际交易过程的信用评价.?主要研究内容有:
(1)研究最大交易额和信用度的关系
(2)研究买家不评价率对信用度影响
(3)研究交易次数对信用度影响
MATLAB程序如下:
主程序main.m
%%?
clc;close all;clear all;
sita=0.20; %差距容忍度
beta=0.85; %衰减因子
%% 产生交易信息
k=200;%k=买家人数
timeMin=1;%[timeMin,timeMax]=交易时间范围
timeMax=100;%[timeMin,timeMax]=交易时间范围
TnumberMin=1;%[TnumberMin,TnumberMax]=交易次数范围
TnumberMax=80;%[TnumberMin,TnumberMax]=交易次数范围
moneyMin=20;%[moneyMin,moneyMax]=交易金额范围
moneyMax=1000;%[moneyMin,moneyMax]=交易金额范围
SEvaluategoodMin=0.9;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
SEvaluategoodMax=0.96;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
SEvaluatemidMin=0.98;
SEvaluatemidMax=0.999;
noEvaluateRate=0.2;%noEvaluateRate=买家不评价的概率
BEvaluateMin=0.9;%[BEvaluateMin,BMax]=买家自身的好评率范围
BEvaluateMax=0.99;%[BEvaluateMin,BMax]=买家自身的好评率范围
[TransData,N,LP]=TransInf(k,timeMin,timeMax,TnumberMin,TnumberMax,moneyMin,moneyMax,SEvaluategoodMin,SEvaluategoodMax,...
? ? SEvaluatemidMin,SEvaluatemidMax,noEvaluateRate,BEvaluateMin,BEvaluateMax);%jisuan
% N=总交易次数
%k=买家人数
%[timeMin,timeMax]=交易时间范围
%[TnumberMin,TnumberMax]=交易次数范围
%[moneyMin,moneyMax]=交易金额范围
%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差,SEvaluategoodMin,SEvaluategoodMax,SEvaluatemidMin,SEvaluatemidMax
%noEvaluateRate=买家不评价的概率
%[BEvaluateMin,BMax]=买家自身的好评率范围
%TransData(i).B=i=第i个买家
%TransData(i).S=卖家,不要了
%TransData(i).T=第i次交易的时间
%TransData(i).M=第i次交易的金额
%TransData(i).R=第i次交易的评价值,好评则为1,中评则为0,差评则为一1
%TransData(i).rou=买家自身的好评率
%LP=评价率
%%?
Pi=zeros(k,1);
for i=1:k
? ? T=TransData(i).T;
? ? M=TransData(i).M;
? ? R=TransData(i).R;
? ? ysl=(T).*M;
? ? Pi(i,1)=sum(R.*ysl/sum(ysl));
end
Pmean=mean(Pi);
P=0;
for i=1:k
? ?rou=TransData(i).rou;
? ?s01=abs(Pi(i,1)-Pmean);
? ?if s01<=sita
? ? ? ?fy01=(1-s01)*rou;
? ?else
? ? ? ?fy01=(1-s01)*rou*beta;
? ?end
? ? P=P+Pi(i,1)*fy01;
end
disp('差距容忍度')
sita
disp('衰减因子')
beta
disp('总交易次数')
N
disp('评价率')
LP
disp('卖家的信用度')
P
disp('考虑评价率的卖家的信用度')
Q=P*LP
?
关键函数 交易信息函数TransInf.m
function [TransData,N,LP]=TransInf(k,timeMin,timeMax,TnumberMin,TnumberMax,moneyMin,moneyMax,SEvaluategoodMin,SEvaluategoodMax,...
? ? SEvaluatemidMin,SEvaluatemidMax,noEvaluateRate,BEvaluateMin,BEvaluateMax)
%% 产生交易信息函数
%k=买家人数
%[timeMin,timeMax]=交易时间范围
%[TnumberMin,TnumberMax]=交易次数范围
%[moneyMin,moneyMax]=交易金额范围
%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差,SEvaluategoodMin,SEvaluategoodMax,SEvaluatemidMin,SEvaluatemidMax
%noEvaluateRate=买家不评价的概率
%[BEvaluateMin,BMax]=买家自身的好评率范围
%% TransData结构体的结果定义
%TransData(i).B=i=第i个买家
%TransData(i).S=卖家,不要了
%TransData(i).T=第i次交易的时间
%TransData(i).M=第i次交易的金额
%TransData(i).R=第i次交易的评价值,好评则为1,中评则为0,差评则为一1
%TransData(i).rou=买家i自身的好评率
% N=总交易次数
%LP=评价率
T01=timeMin:timeMax;
L01=length(T01);
if L01<TnumberMax%
? ? error('请输入正确的参数,交易时间范围设置过小');
end
noEnumber=0;%
Enumber=0;%
for i=1:k%按买家循环
? ? %% --记录数据开始-------------
? ? TransData(i).B=i;
? ? TransData(i).S=1;
? ? % 产生交易时间
? ? index01=randperm(L01);
? ? state=0;
? ? iter=0;
? ? while state==0
? ? ? ? Tnumber=randi([TnumberMin TnumberMax],1,1);%产生交易次数
? ? ? ? if L01>=Tnumber
? ? ? ? ? ? time01 =index01(1:Tnumber);
? ? ? ? ? ? time=sort(time01);
? ? ? ? ? ? break;
? ? ? ? else
? ? ? ? ? ? state=0;
? ? ? ? ? ? iter=iter+1;
? ? ? ? end
? ? ? ? if iter>=10
? ? ? ? ? ? error('请输入正确的参数,交易时间范围设置过小');
? ? ? ? end
? ? end
? ? TransData(i).T=time;
? ? % 产生金额
? ? money=randi([moneyMin moneyMax],1,Tnumber);%产生交易金额,默认为整数
? ? TransData(i).M=money;%第i次交易的金额
? ??
? ? %% 好评率计算
? ? for j=1:Tnumber
? ? ? ? rnoE=rand;
? ? ? ? if rnoE>noEvaluateRate
? ? ? ? ? ? % 产生好评率
? ? ? ? ? ? rgood = SEvaluategoodMin + (SEvaluategoodMax-SEvaluategoodMin).*rand(1,1);%介于SEvaluategoodMax和SEvaluategoodMin之间
? ? ? ? ? ? % 产生中评率
? ? ? ? ? ? rmidle = SEvaluatemidMin + (SEvaluatemidMax-SEvaluatemidMin).*rand(1,1);%介于SEvaluatemidMi,nSEvaluatemidMax之间
? ? ? ? ? ? if rgood>rmidle
? ? ? ? ? ? ? ? error('对卖家的好评率范围SEvaluategoodMin和SEvaluategoodMax设置过大或者SEvaluatemidMin和SEvaluatemidMax过小,请重新设置');
? ? ? ? ? ? end
? ? ? ? ? ? r001=rand;%
? ? ? ? ? ? if (r001>=0)&&(r001<rgood);
? ? ? ? ? ? ? ? R01=1;
? ? ? ? ? ? end
? ? ? ? ? ? if (r001>=rgood)&&(r001<rmidle);
? ? ? ? ? ? ? ? R01=0;
? ? ? ? ? ? end
? ? ? ? ? ? if (r001>=rmidle)&&(r001<1);
? ? ? ? ? ? ? ? R01=-1;
? ? ? ? ? ? end
? ? ? ? ? ? Enumber=Enumber+1;%记录评价的交易
? ? ? ? else
? ? ? ? ? ? R01=0;
? ? ? ? ? ? noEnumber=noEnumber+1;%记录不评价的交易
? ? ? ? end
? ?
? ? ? ? if j==1%第一个交易直接赋值
? ? ? ? ? ? TransData(i).R=R01;
? ? ? ? else%其他交易放到后面
? ? ? ? ? ? TransData(i).R=[TransData(i).R, R01];
? ? ? ? end
? ? end
? ? TransData(i).rou=BEvaluateMin + (BEvaluateMax-BEvaluateMin).*rand(1,1);%
? ? %% --记录数据结束-------------
end
N=noEnumber+Enumber;
LP=Enumber/N;
main2.m 是研究最大交易额和信用度的关系
%% 研究最大交易额和信用度的关系
clc;close all;clear all;
sita=0.20; %差距容忍度
beta=0.85; %衰减因子
%% 产生交易信息
K=100:100:1000;
G=length(K);
Pcell=zeros(G,1);
Qcell=zeros(G,1);
for g=1:G
? ? k=200;%k=买家人数
? ? timeMin=1;%[timeMin,timeMax]=交易时间范围
? ? timeMax=100;%[timeMin,timeMax]=交易时间范围
? ? TnumberMin=1;%[TnumberMin,TnumberMax]=交易次数范围
? ? TnumberMax=80;%[TnumberMin,TnumberMax]=交易次数范围
? ? moneyMin=20;%[moneyMin,moneyMax]=交易金额范围
? ? moneyMax=K(g);%[moneyMin,moneyMax]=交易金额范围
? ? SEvaluategoodMin=0.9;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
? ? SEvaluategoodMax=0.96;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
? ? SEvaluatemidMin=0.98;
? ? SEvaluatemidMax=0.999;
? ? noEvaluateRate=0.2;%noEvaluateRate=买家不评价的概率
? ? BEvaluateMin=0.9;%[BEvaluateMin,BMax]=买家自身的好评率范围
? ? BEvaluateMax=0.99;%[BEvaluateMin,BMax]=买家自身的好评率范围
? ? [TransData,N,LP]=TransInf(k,timeMin,timeMax,TnumberMin,TnumberMax,moneyMin,moneyMax,SEvaluategoodMin,SEvaluategoodMax,...
? ? ? ? SEvaluatemidMin,SEvaluatemidMax,noEvaluateRate,BEvaluateMin,BEvaluateMax);%jisuan
? ? % N=总交易次数
? ? %k=买家人数
? ? %[timeMin,timeMax]=交易时间范围
? ? %[TnumberMin,TnumberMax]=交易次数范围
? ? %[moneyMin,moneyMax]=交易金额范围
? ? %[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差,SEvaluategoodMin,SEvaluategoodMax,SEvaluatemidMin,SEvaluatemidMax
? ? %noEvaluateRate=买家不评价的概率
? ? %[BEvaluateMin,BMax]=买家自身的好评率范围
? ??
? ? %TransData(i).B=i=第i个买家
? ? %TransData(i).S=卖家,不要了
? ? %TransData(i).T=第i次交易的时间
? ? %TransData(i).M=第i次交易的金额
? ? %TransData(i).R=第i次交易的评价值,好评则为1,中评则为0,差评则为一1
? ? %TransData(i).rou=买家自身的好评率
? ? %LP=评价率
? ??
? ? %%
? ? Pi=zeros(k,1);
? ? for i=1:k
? ? ? ? T=TransData(i).T;
? ? ? ? M=TransData(i).M;
? ? ? ? R=TransData(i).R;
? ? ? ? ysl=(T).*M;
? ? ? ? Pi(i,1)=sum(R.*ysl/sum(ysl));
? ? end
? ??
? ? Pmean=mean(Pi);
? ??
? ? P=0;
? ? for i=1:k
? ? ? ? rou=TransData(i).rou;
? ? ? ? s01=abs(Pi(i,1)-Pmean);
? ? ? ? if s01<=sita
? ? ? ? ? ? fy01=(1-s01)*rou;
? ? ? ? else
? ? ? ? ? ? fy01=(1-s01)*rou*beta;
? ? ? ? end
? ? ? ? P=P+Pi(i,1)*fy01;
? ? end
? ? Q=P*LP;
? ? Pcell(g,1)=P;
? ? Qcell(g,1)=Q;
end
figure;
plot(K,Pcell,'b-',K,Qcell,'r--');
legend('信用度','考虑评价率的信用度');
xlabel('交易金额上限');
ylabel('信用度');
title('信用度和交易金额上限关系曲线');
disp('差距容忍度')
sita
disp('衰减因子')
beta
disp('总交易次数')
N
disp('评价率')
LP
disp('卖家的信用度')
P
disp('考虑评价率的卖家的信用度')
Q
?
main3.m 研究买家不评价率对信用度影响
%% 研究买家不评价率对信用度影响
clc;close all;clear all;
sita=0.20; %差距容忍度
beta=0.85; %衰减因子
%% 产生交易信息
K=0.1:0.01:0.3;
G=length(K);
Pcell=zeros(G,1);
Qcell=zeros(G,1);
for g=1:G
? ? k=200;%k=买家人数
? ? timeMin=1;%[timeMin,timeMax]=交易时间范围
? ? timeMax=100;%[timeMin,timeMax]=交易时间范围
? ? TnumberMin=1;%[TnumberMin,TnumberMax]=交易次数范围
? ? TnumberMax=80;%[TnumberMin,TnumberMax]=交易次数范围
? ? moneyMin=20;%[moneyMin,moneyMax]=交易金额范围
? ? moneyMax=1000;%[moneyMin,moneyMax]=交易金额范围
? ? SEvaluategoodMin=0.9;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
? ? SEvaluategoodMax=0.96;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
? ? SEvaluatemidMin=0.98;
? ? SEvaluatemidMax=0.999;
? ? noEvaluateRate=K(g);%noEvaluateRate=买家不评价的概率
? ? BEvaluateMin=0.9;%[BEvaluateMin,BMax]=买家自身的好评率范围
? ? BEvaluateMax=0.99;%[BEvaluateMin,BMax]=买家自身的好评率范围
? ? [TransData,N,LP]=TransInf(k,timeMin,timeMax,TnumberMin,TnumberMax,moneyMin,moneyMax,SEvaluategoodMin,SEvaluategoodMax,...
? ? ? ? SEvaluatemidMin,SEvaluatemidMax,noEvaluateRate,BEvaluateMin,BEvaluateMax);%jisuan
? ? % N=总交易次数
? ? %k=买家人数
? ? %[timeMin,timeMax]=交易时间范围
? ? %[TnumberMin,TnumberMax]=交易次数范围
? ? %[moneyMin,moneyMax]=交易金额范围
? ? %[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差,SEvaluategoodMin,SEvaluategoodMax,SEvaluatemidMin,SEvaluatemidMax
? ? %noEvaluateRate=买家不评价的概率
? ? %[BEvaluateMin,BMax]=买家自身的好评率范围
? ??
? ? %TransData(i).B=i=第i个买家
? ? %TransData(i).S=卖家,不要了
? ? %TransData(i).T=第i次交易的时间
? ? %TransData(i).M=第i次交易的金额
? ? %TransData(i).R=第i次交易的评价值,好评则为1,中评则为0,差评则为一1
? ? %TransData(i).rou=买家自身的好评率
? ? %LP=评价率
? ??
? ? %%
? ? Pi=zeros(k,1);
? ? for i=1:k
? ? ? ? T=TransData(i).T;
? ? ? ? M=TransData(i).M;
? ? ? ? R=TransData(i).R;
? ? ? ? ysl=(T).*M;
? ? ? ? Pi(i,1)=sum(R.*ysl/sum(ysl));
? ? end
? ??
? ? Pmean=mean(Pi);
? ??
? ? P=0;
? ? for i=1:k
? ? ? ? rou=TransData(i).rou;
? ? ? ? s01=abs(Pi(i,1)-Pmean);
? ? ? ? if s01<=sita
? ? ? ? ? ? fy01=(1-s01)*rou;
? ? ? ? else
? ? ? ? ? ? fy01=(1-s01)*rou*beta;
? ? ? ? end
? ? ? ? P=P+Pi(i,1)*fy01;
? ? end
? ? Q=P*LP;
? ? Pcell(g,1)=P;
? ? Qcell(g,1)=Q;
end
figure;
plot(K,Pcell,'b-',K,Qcell,'r--');
legend('信用度','考虑评价率的信用度');
xlabel('买家不评价率');
ylabel('信用度');
title('信用度和买家不评价率关系曲线');
disp('差距容忍度')
sita
disp('衰减因子')
beta
disp('总交易次数')
N
disp('评价率')
LP
disp('卖家的信用度')
P
disp('考虑评价率的卖家的信用度')
Q
?
main4.m 研究交易次数对信用度影响
%% 研究交易次数对信用度影响
clc;close all;clear all;
sita=0.20; %差距容忍度
beta=0.85; %衰减因子
%% 产生交易信息
K=10:5:80;
G=length(K);
Pcell=zeros(G,1);
Qcell=zeros(G,1);
for g=1:G
? ? k=200;%k=买家人数
? ? timeMin=1;%[timeMin,timeMax]=交易时间范围
? ? timeMax=100;%[timeMin,timeMax]=交易时间范围
? ? TnumberMin=1;%[TnumberMin,TnumberMax]=交易次数范围
? ? TnumberMax=K(g);%[TnumberMin,TnumberMax]=交易次数范围
? ? moneyMin=20;%[moneyMin,moneyMax]=交易金额范围
? ? moneyMax=1000;%[moneyMin,moneyMax]=交易金额范围
? ? SEvaluategoodMin=0.9;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
? ? SEvaluategoodMax=0.96;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
? ? SEvaluatemidMin=0.98;
? ? SEvaluatemidMax=0.999;
? ? noEvaluateRate=0.2;%noEvaluateRate=买家不评价的概率
? ? BEvaluateMin=0.9;%[BEvaluateMin,BMax]=买家自身的好评率范围
? ? BEvaluateMax=0.99;%[BEvaluateMin,BMax]=买家自身的好评率范围
? ? [TransData,N,LP]=TransInf(k,timeMin,timeMax,TnumberMin,TnumberMax,moneyMin,moneyMax,SEvaluategoodMin,SEvaluategoodMax,...
? ? ? ? SEvaluatemidMin,SEvaluatemidMax,noEvaluateRate,BEvaluateMin,BEvaluateMax);%jisuan
? ? % N=总交易次数
? ? %k=买家人数
? ? %[timeMin,timeMax]=交易时间范围
? ? %[TnumberMin,TnumberMax]=交易次数范围
? ? %[moneyMin,moneyMax]=交易金额范围
? ? %[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差,SEvaluategoodMin,SEvaluategoodMax,SEvaluatemidMin,SEvaluatemidMax
? ? %noEvaluateRate=买家不评价的概率
? ? %[BEvaluateMin,BMax]=买家自身的好评率范围
? ??
? ? %TransData(i).B=i=第i个买家
? ? %TransData(i).S=卖家,不要了
? ? %TransData(i).T=第i次交易的时间
? ? %TransData(i).M=第i次交易的金额
? ? %TransData(i).R=第i次交易的评价值,好评则为1,中评则为0,差评则为一1
? ? %TransData(i).rou=买家自身的好评率
? ? %LP=评价率
? ??
? ? %%
? ? Pi=zeros(k,1);
? ? for i=1:k
? ? ? ? T=TransData(i).T;
? ? ? ? M=TransData(i).M;
? ? ? ? R=TransData(i).R;
? ? ? ? ysl=(T).*M;
? ? ? ? Pi(i,1)=sum(R.*ysl/sum(ysl));
? ? end
? ??
? ? Pmean=mean(Pi);
? ??
? ? P=0;
? ? for i=1:k
? ? ? ? rou=TransData(i).rou;
? ? ? ? s01=abs(Pi(i,1)-Pmean);
? ? ? ? if s01<=sita
? ? ? ? ? ? fy01=(1-s01)*rou;
? ? ? ? else
? ? ? ? ? ? fy01=(1-s01)*rou*beta;
? ? ? ? end
? ? ? ? P=P+Pi(i,1)*fy01;
? ? end
? ? Q=P*LP;
? ? Pcell(g,1)=P;
? ? Qcell(g,1)=Q;
end
figure;
plot(K,Pcell,'b-',K,Qcell,'r--');
legend('信用度','考虑评价率的信用度');
xlabel('交易次数');
ylabel('信用度');
title('信用度和交易次数关系曲线');
disp('差距容忍度')
sita
disp('衰减因子')
beta
disp('总交易次数')
N
disp('评价率')
LP
disp('卖家的信用度')
P
disp('考虑评价率的卖家的信用度')
Q
程序结果:
差距容忍度
sita =
? ? 0.2000
衰减因子
beta =
? ? 0.8500
总交易次数
N =
? ? ? ? 7677
评价率
LP =
? ? 0.8032
卖家的信用度
P =
? 126.8858
考虑评价率的卖家的信用度
Q =
? 101.9120
>>?
需要讨论的可以加Q1579325979讨论