Minería de datos


Función para calcular la entropía en R-project

entropia<-function(x,ndim){
s<-x/ndim
ent<-0
for(i in 1:(dim(x)[1]-1)){
for(j in (i+1):dim(x)[1]){
ent<-ent+(s[i,j]*log(s[i,j]))+((1-s[i,j])*log(1-s[i,j]))
}}
return(ent)
}

Ejemplo: ent.txt


x<-read.table("ent.txt")
x<-as.matrix(x)
entropia(x,4)




Ejemplo: Entropía para reducir dimensiones


1.    Dado el conjunto de datos X donde X1 y X2 son dimensiones numéricas, X3 y X4 son dimensiones con datos categóricos, aplicar el método de selección de características basado en entropía para reducir una dimensión.

X1
X2
X3
X4
2.7
3.4
1
A
3.1
6.2
2
A
4.5
2.8
1
B
5.3
5.8
2
B
6.6
3.1
1
A
5.0
4.1
2
B
La entropía se mide como


Para discretizar X1 use 2 bins por la media. Para esta variable los mejores bins (rojo y azul) generaron un error de 2.9, quedando:
X1
2,9
2,9
5,35
5,35
5,35
5,35
De la misma forma con X2 encontré que los mejores bins (verde y naranja) generaron un error de 2, quedando:
X2
3,35
6
3,35
6
3,35
3,35
Finalmente la tabla final es:
X1
X2
X3
X4
2,9
3,35
1
A
2,9
6
2
A
5,35
3,35
1
B
5,35
6
2
B
5,35
3,35
1
A
5,35
3,35
2
B
Su matriz de distancias de haming es: 3.4589
I1
I2
I3
I4
I5
I6
I1
1   
I2
 1/2
1   
I3
 1/2
0   
1   
I4
0   
 1/2
 1/2
1   
I5
 3/4
 1/4
 3/4
 1/4
1   
I6
 1/4
 1/4
 3/4
 3/4
 1/2
1   
La entropía total seria: 3,458902381
Las entropías al eliminar una a una las dimensiones son:
X1
3,0407805
X2
2,76434591
X3
3,0407805
X4
3,0407805
Es decir, que la variable que se debe eliminar es cualquiera entre X1, X3 y X4. Ya que son la que menos entropía restan a la original.

No hay comentarios:

Publicar un comentario

Publicar un comentario en la entrada