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
Ejemplo: Entropía para reducir dimensiones
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