Диплом: Автоматизация управления активами при помощи кластерного анализа паттернов поведения игроков рынка в ПАО «ФК Открытие»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
110
%-------------------------------
% 29.10.15 15.39 D., Aeroport.
%-------------------------------
action=isstruct(a2(1));
switch action
case false
PR=a1;
Q=a2;
n=size(V,1);
X=PR(:,1:end-1);
Y=PR(:,end);
PRTeachCell = svg_cells (X, V, Y);
%Массив структур д/хранения настроек нейронов
FieldNames={...
'LPCA',...
'AdaptorMean',...
'AdaptorAmpl',...
'epsilon',...
'Q',...
'dimEffective',...
'p',...
'ATA',...
'N1'};
111
CellArray4Struct=cell(n,numel(FieldNames));
NEURON=cell2struct(CellArray4Struct,FieldNames,2);
%/Массив структур д/хранения настроек нейронов
for k=1:n
NEURON(k)=amanda1([PRTeachCell{k,1} PRTeachCell{k,2}],Q);
end
f=struct(...
'SVG',V,...
'NEURON',NEURON);
case true
X=a1;
NN=a2;
SVG=V;
[XForwardCell,pos] = svg_cells (X, SVG);
%Фильтрация пустых форвард-предикторных ячеек
MASK=false(size(SVG,1),1);
for k=1:size(SVG,1)
if size(XForwardCell{k},1)
MASK(k)=true;
end
end
kNums=1:size(SVG,1);
kNums=kNums(MASK);
%/Фильтрация пустых форвард-предикторных ячеек
f=zeros(size(X,1),2);
112
for k=1:numel(kNums)
f(pos{kNums(k)},:)=amanda1(XForwardCell{kNums(k)},NN(kNums(k)));
end
end
function f = amanda1 (arg1, arg2)
%-----------------------------
% 29.06.2015, N., Kaluga.
%-----------------------------
epsilon=0.01;
action=isstruct(arg2);
switch action
case false
PR=arg1;
Q=arg2;
X=PR(:,1:end-1);
Y=PR(:,end);
f=amanda_core(X,Y,Q,epsilon);
case true
AMANDANET=arg2;
X=arg1;
[g,e]=amandanet_apply(AMANDANET,X);
f=[g e];
end
function AMANDANET = amanda_core (X, Y, Q, epsilon)
%------------------------------------
% 29.10.2015 16:42, D., Aeroport.
113
%------------------------------------
N=size(X,1);
%Преобразования адаптора
[Y,Mx,Ampl]=logsigtransform(Y,epsilon);
Y=log(Y)-log(1-Y);
%/Преобразования адаптора
%PCA-обучение
ISTR=struct(...
'action','train',...
'xData',X);
PCAS=pca_amanda(ISTR);
dimEffective=PCAS.dimEffective;
%/PCA-обучение
if ~dimEffective
p='Not_a_Number';
ATA='Not_a_Number';
else
%PCA-применение
ISTR=struct(...
'action','apply',...
'xData',X,...
'CloudParam',PCAS);
xData=pca_amanda(ISTR);
X=xData.xData;
%/PCA-применение
m=size(X,2);
%Заготовка A- матрицы
ZGlobal=cell(1,Q);
for l=1:Q
ZGlobal{l}=aenumerator(l,m);
114
end
ANRow=N;
ANCol=nchoosek(m+Q,m);
A=zeros(ANRow,ANCol);
A(:,1)=1;
j=2;
for l=1:Q
Z=ZGlobal{l};
ZX=X(:,Z);
ZX=reshape(ZX,N,size(Z,1),size(Z,2));
CurrentRowT=prod(ZX,3);
A(:,j:j+size(CurrentRowT,2)-1)=CurrentRowT;
j=j+size(CurrentRowT,2);
end
if j-1~=ANCol
error('WARNING: j-1~=ANCol')
end
%/Заготовка A- матрицы
%Решение A- уравнения
ATA=A'*A;
if sum(sum(isnan(ATA)))
p='Not_a_Number';
elseif (rcond(ATA)>1e-12)
p=ATA\(A'*Y);
else
p='Not_a_Number';
end
end
%/Решение A- уравнения
AMANDANET=struct(...
115
'LPCA',PCAS,...
'AdaptorMean',Mx,...
'AdaptorAmpl',Ampl,...
'epsilon',epsilon,...
'Q',Q,...
'dimEffective',dimEffective,...
'p',p,...
'ATA',ATA,...
'N1',N);
function OSTR = pca_amanda (ISTR)
action=ISTR.action;
switch action
case 'train'
X=ISTR.xData;
xMean=mean(X,1);
X=X-ones(size(X,1),1)*xMean;
[V,~,Lambda]=pca(X);
MASK=(Lambda>1e-8);
m=sum(MASK);
V=V(:,MASK);
OSTR=struct('xMean',xMean,'LinEnv',V,'Lambda',Lambda,'dimEffective',m);
case 'apply'
X=ISTR.xData;
xMean=ISTR.CloudParam.xMean;
LinearEnvelope=ISTR.CloudParam.LinEnv;
dimensionEffective=ISTR.CloudParam.dimEffective;
Lambda=ISTR.CloudParam.Lambda;
if dimensionEffective
116
Lambda=Lambda(Lambda>1e-8);
X=X-ones(size(X,1),1)*xMean;
X=X*LinearEnvelope;
X=X./(ones(size(X,1),1)*sqrt(Lambda'));
else
X=zeros(size(X));
end
OSTR=struct('xData',X);
otherwise
error('!!!')
end
function [A,p] = objectivesearch (m, n)
A=zeros(nchoosek(n,m),m);
j=1:m;
p=1;
A(p,:)=1:m;
while true
alpha=A(p,:);
MASK=(alpha<(n-m+j));
if ~sum(MASK)
break
end
p=p+1;
jPoint=max(j(MASK));
alpha(jPoint:end)=alpha(jPoint)+1:alpha(jPoint)+1+m-jPoint;
A(p,:)=alpha;
end
function Z = aenumerator (Q, m)
117
B=objectivesearch(Q, m+Q-1);
j=(1:Q)-ones(1,Q);
Z=B-ones(size(B,1),1)*j;
function [Y,E] = amandanet_apply (AMANDANET, X)
%Парсинг параметров нейросети
PCAS=AMANDANET.LPCA;
Mx=AMANDANET.AdaptorMean;
Ampl=AMANDANET.AdaptorAmpl;
epsilon=AMANDANET.epsilon;
Q=AMANDANET.Q;
p=AMANDANET.p;
ANoise=0.05*Ampl;
ATA=AMANDANET.ATA;
N1=AMANDANET.N1;
%/Парсинг параметров нейросети
if ischar(p)
Y=Mx*ones(size(X,1),1);
E=1/sqrt(N1)*ANoise*ones(size(Y));
else
%PCA-применение
ISTR=struct(...
'action','apply',...
'xData',X,...
'CloudParam',PCAS);
xData=pca_amanda(ISTR);
X=xData.xData;
%/PCA-применение
N=size(X,1);
m=size(X,2);
118
%Заготовка A- матрицы
ZGlobal=cell(1,Q);
for l=1:Q
ZGlobal{l}=aenumerator(l,m);
end
ANRow=N;
ANCol=nchoosek(m+Q,m);
A=zeros(ANRow,ANCol);
A(:,1)=1;
j=2;
for l=1:Q
Z=ZGlobal{l};
ZX=X(:,Z);
ZX=reshape(ZX,N,size(Z,1),size(Z,2));
CurrentRowT=prod(ZX,3);
A(:,j:j+size(CurrentRowT,2)-1)=CurrentRowT;
j=j+size(CurrentRowT,2);
end
if j-1~=ANCol
error('WARNING: j-1~=ANCol')
end
%/Заготовка A- матрицы
Y=A*p;
E=zeros(size(Y));
for i=1:N
E(i)=ANoise*sqrt(A(i,:)*(ATA\(A(i,:)')));
end
end
%Преобразования адаптора
Y=1./(1+exp(-Y));
119
Y=invlogsigtransform(Y,Mx,Ampl,epsilon);
%/Преобразования адаптора
function [y,Mx,Ampl] = logsigtransform (x, epsilon)
Mx=0.5*(max(x)+min(x));
Ampl=0.5*(max(x)-min(x));
if Ampl>1e-12
y=0.5*(1+1/((1+epsilon)*Ampl)*(x-Mx));
else
Ampl=0;
y=0.5*ones(size(x));
end
function x = invlogsigtransform (y, Mx, Ampl, epsilon)
x=Mx+(1+epsilon)*Ampl*(2*y-1);
function Z = svg (X, K)
%-----------------------------------
% 05.07.2015 23:48, D., Aeroport
%-----------------------------------
N=size(X,1);
if K>N
error('SVG::procedure stopped:not enough data, K>N')
end
ord=randperm(N);
Z=X(ord(1:K),:);
function [Z,pos] = svg_cells (X, V, Y)
N=size(X,1);
L=svg_labels(X, V);

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Agile-методология в управлении проектами на примере ООО «Ресурсный центр «Академия КлассИнфо»
Aвтoмaтизaция пpoцecca вeдeния инфopмaциoннoй бaзы o дoлжнocтяx и вaкaнcияx c укaзaниeм тpeбoвaний к уpoвню знaний и нaвыкoв кaндидaтoв для гpуппы кaдpoв вoйcкoвoй чacти 3474»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
Cовершенствование управления рентабельности предприятия (на примере гуипп «бендерская типография «полиграфист»)
Event - менеджмент: реализация проекта (на примере ООО "АГРОПАК")