Vous êtes sur la page 1sur 6

14-6-2013

INSTITUTO TECNOLGIGO DE APIZACO

DESCRIPCIN DEL ALGORITMO RELIEF

Autores: Eduardo Emmanuel Ochoa Gracia Elizabeth Sartillo Salazar

Introduccin
Es una funcin de aprendizaje algoritmo de ponderacin en lnea que utiliza un algoritmo de aprendizaje basado en instancia para asignar un peso relevancia para cada Servicio Predictor. Como es conocido es una tcnica de aprendizaje mquina para la funcin de ponderacin en problemas de dos clases, multiRELIEF que puede ser utilizado tambin en los problemas multiclase tales como secuencia mltiples de alineaciones. El principio detrs del algoritmo es para medir la calidad de un atributo, por ejemplo, un sitio, en la fusin de secuencias prximas dentro de la misma clase y separar prximas de secuencias dentro de las diferentes clases. El vecino de una secuencia se define como cualquier otra secuencia con la distancia mnima de ella de acuerdo a la norma-1:

Funcin de RELIEF:
function [w bestidx] = RELIEF ( data, labels, T )
%Donde data son los datos %labels son las clases %T son el nmero de caractersticas condicionales

if ~exist('T','var') T=size(data,1); end


%Para cada iteracin del algoritmo de una instancia %labels se selecciona al azar y los dos vecinos, nearHit and nearMiss, se calculan.

idx = randperm(length(labels)); idx = idx(1:T); w = zeros(size(data,2),1); for t = 1:T x = data(idx(t),:); y = labels(idx(t)); %copiar x protos = repmat(x, length(labels), 1); % medir la distancia de x a cada uno de los ejemplos distances = [sqrt(sum((data-protos).^2,2)) labels]; % clasificar los datos de acuerdo a las distancias (Encontrar vecinos ms cercanos) [distances originalidx] = sortrows(distances,1); foundhit = false; hitidx=0; foundmiss = false; missidx=0; i=2; %Iniciar con la segunda distancia, ms lejana while (~foundhit || ~foundmiss)

if distances(i,2) == y hitidx = originalidx(i); foundhit = true; end if distances(i,2) ~= y missidx = originalidx(i); foundmiss = true; end i=i+1; end alpha = 1/T; %La distancia entre el objeto data y T se define %aqu como la suma de la serie de caractersticas %que difieren en valor entre ellos de la %siguiente manera: for f = 1:size(data,2)%cada funcin hitpenalty = (x(f)-data(hitidx,f)) / (max(data(:,f))-min(data(:,f))); misspenalty = (x(f)-data(missidx,f)) / (max(data(:,f))-min(data(:,f))); w(f) = w(f) - alpha*hitpenalty^2 + alpha*misspenalty^2; end end [~,bestidx] = sort(w,'descend');

Programa Principal:
clc;

%Lectura de la base de datos load LeukemiaDataSet3.dat datos=LeukemiaDataSet3(:,2:end)'; clases=LeukemiaDataSet3(:,1)==2'; [datos]=thresholding(datos); [datos]=logging(datos); %relief % RELIEF(O,c,its,?). % O, the set of all objects; c, the number of conditional features; % Its (first threshold), the number of iterations;?, weight threshold value. % (1) R?{} % (2)?Wa ,Wa?0 % (3) for i= 1...its % (4) choose an object x in O randomly % (5) Calculate xs nearHit and nearMiss % (6) for j= 1...c % (7) Wj?Wj? diff(xj,nearHitj)/its +diff(xj,nearMissj)/its % (8) for j= 1...c % (9)If Wj??;R?R?{j} % (10) Return R datos=datos'; L=clases; [w bestidx]= relief ( datos, L, 10 )

Salida:

Se graficarn los primeros 38 datos ms cercanos