Professional Documents
Culture Documents
08 Febrero 2018
Sebastián Moreno
Universidad Adolfo Ibañez
Reducción de dimensionalidad
Reducción de dimensionalidad, métodos
• Análisis de componentes principales (Principal Component
Analysis)
Es una transformación lineal que permite explicar la mayor parte de la
varianza en las primeras dimensiones.
• Análisis de factores
Combinación lineal de un pequeño número de variables latentes.
• Escalamiento multidimensional
Proyecta los datos a un número menor de dimensiones mientras se
mantienen las distancias entre los puntos.
Reducción de dimensionalidad, PCA
• PCA es una transformación lineal, donde las nuevas variables no
tienen correlación entre sí (la covarianza entre cualquier variable es
cero) y las variables están ordenadas según el porcentaje de varianza
explicada.
Centrar datos
Reducción de dimensionalidad, PCA, paso a paso
Centrar datos
s d e
ct o re o s
0.950 rv e p e s
u l a n y
Calc ormació
↵1 =
0.312
r an sf
t
-0.312
↵2 =
0.950
↵ = [1.460, 0.1728]
Reducción de dimensionalidad, PCA, paso a paso
Centrar datos
s d e
ct o re o s
0.950 rv e p e s
u l a n y
Calc ormació
↵1 =
0.312
r an sf
t
↵2 =
-0.312 Transformar los datos
0.950
↵ = [1.460, 0.1728]
Reducción de dimensionalidad, PCA, flor de iris
• Estandarización de cada
variable a varianza 1,
transforma la covarianza a la
correlación entre variables.
Reducción de dimensionalidad, PCA,
estandarización
• Ejemplo, datos de vino: 13 atributos, 3 tipos de vinos
• Graficando el % de varianza
explicado por cada
componente y la suma
acumulada de las varianzas,
nos permite determinar el
número de componentes
(variables) a determinar.
Reducción de dimensionalidad, PCA, código en R
• #Aplicando PCA
XPCA=prcomp(iris[,1:4])
XPCA
Standard deviations (1, .., p=4):
[1] 2.0562689 0.4926162 0.2796596 0.1543862
Rotation (n x k) = (4 x 4):
PC1 PC2 PC3 PC4
Sepal.Length 0.36138659 -0.65658877 0.58202985 0.3154872
Sepal.Width -0.08452251 -0.73016143 -0.59791083 -0.3197231
Petal.Length 0.85667061 0.17337266 -0.07623608 -0.4798390
Petal.Width 0.35828920 0.07548102 -0.54583143 0.7536574
Reducción de dimensionalidad, PCA, código en R
• #Aplicando PCA
XPCA=prcomp(iris[,1:4])
XPCA
Standard deviations (1, .., p=4):
[1] 2.0562689 0.4926162 0.2796596 0.1543862
Rotation (n x k) = (4 x 4):
PC1 PC2 PC3 PC4
Sepal.Length 0.36138659 -0.65658877 0.58202985 0.3154872
Sepal.Width -0.08452251 -0.73016143 -0.59791083 -0.3197231
Petal.Length 0.85667061 0.17337266 -0.07623608 -0.4798390
Petal.Width 0.35828920 0.07548102 -0.54583143 0.7536574
• Segmentación de datos
• Búsqueda de Patrones
• Clustering
• Introducción
• Métodos de partición
• Métodos de densidad
• Métodos jerárquicos
• Métodos difusos
• Evaluación
Métodos jerárquicos, introducción
Aglomerativo Divisivo
Métodos jerárquicos, dendrograma
• Un dendrograma es un diagrama del tipo árbol que ilustra el proceso de
generación de clusters producido por los algoritmos jerárquicos. Mientras uno
de los ejes muestra los puntos originales, el otro eje, puede mostrar la
distancia existente entre los clusters.
7 6
5 4
3 2 1
0
Métodos jerárquicos aglomerativos, introducción
• Método Jerárquico Divisivo: Comienza con todos los puntos como un solo
cluster. Luego, en cada etapa, se selecciona un cluster y se separa en dos
clusters. Este proceso se repite hasta que cada cluster tiene un punto.
Métodos jerárquicos aglomerativos, introducción
• Método Jerárquico Aglomerativo (MJA): Comienza con todos los puntos como
clusters individuales. Luego, en cada etapa, se unen los cluster más cercanos
entre si. Este proceso se repite hasta que se genera un solo gran cluster.
Métodos jerárquicos aglomerativos, algoritmo
• El algoritmo más básico del MJA es bastante sencillo
Sea cada punto un cluster
Calcula la matriz de proximidad/distancia entre cada cluster
Repetir
Unir los cluster más cercanos
Recalcular/updatear la matriz de proximidad/distancia
Hasta que exista un solo cluster
p2
p3
p4
p5
⋮ Matriz de Proximidad
...
p1 p2 p3 p4 p9 p10 p11 p12
Métodos jerárquicos aglomerativos, ejemplo
• Después de unir ciertos clusters, obtenemos
C1 C2 C3 C4 C5
C1 0.0 0.5 0.6 1.3 1.2
C2 0.0 1.1 1.2 0.4
C3 0.0 0.7 1,1
C4 0.0 0.9
C3 C5 0.0
C4 Matriz de Proximidad
C1
C2 C5
...
p1 p2 p3 p4 p9 p10 p11 p12
Métodos jerárquicos aglomerativos, ejemplo
• Después de unir ciertos clusters, obtenemos
C1
C2 C5
...
p1 p2 p3 p4 p9 p10 p11 p12
Métodos jerárquicos aglomerativos, ejemplo
• Después de unir ciertos clusters, obtenemos
C1
C2 C5
...
p1 p2 p3 p4 p9 p10 p11 p12
Métodos jerárquicos aglomerativos, ejemplo
• Después de unir ciertos clusters, obtenemos
C1
C2 C5
...
p1 p2 p3 p4 p9 p10 p11 p12
¿Cómo podemos actualizar
Métodos jerárquicos aglomerativos, ejemplo la
distancia entre clusters?
• Después de unir ciertos clusters, obtenemos
C1
C2 C5
...
p1 p2 p3 p4 p9 p10 p11 p12
Métodos jerárquicos aglomerativos, single linkage
• Ventaja:
Genera cluster largos y delgados
• Limitación:
Afectado por los datos atípicos
Métodos jerárquicos aglomerativos, complete
linkage
• Ventaja:
Menos susceptible a datos atípicos
• Limitación:
-Tiende a quebrar cluster grandes
-Sesgado a generar clusters circulares
Métodos jerárquicos aglomerativos, average linkage
• Ventaja:
Menos susceptible a datos atípicos
• Limitación:
Sesgado a generar clusters circulares
Métodos jerárquicos aglomerativos, ejemplos
1 0.2
5 0.15
2
0.1
3 6
0.05
4 0
3 6 2 5 4 1
5 0.15
2
0.1
3 6
0.05
4 0
3 6 2 5 4 1
0.35
0.3
0.25
0.2
0.15
0.1
0.05
0
3 6 4 1 2 5
Complete linkage
Métodos jerárquicos aglomerativos, ejemplos
1 0.2
5 0.15
2
0.1
3 6
0.05
4 0
3 6 2 5 4 1
0.3 0.2
0.25
0.15
0.2
0.15 0.1
0.1
0.05
0.05
0 0
3 6 4 1 2 5 3 6 4 1 2 5
0.4
1 0.35
0.3
5 0.25
2 0.2
3 6 0.15
0.1
4
0.05
0
3 6 4 1 2 5
0.4
1 0.35
0.3
5 0.25
2 0.2
3 6 0.15
0.1
4
0.05
0
3 6 4 1 2 5
0.4
1 0.35
0.3
5 0.25
2 0.2
3 6 0.15
0.1
4
0.05
0
3 6 4 1 2 5
0.4
1 0.35
0.3
5 0.25
2 0.2
3 6 0.15
0.1
4
0.05
0
3 6 4 1 2 5
-lips
-lobster
-ketchup
-sandwich
-scorpion
-thumb
-turkey
Métodos jerárquicos aglomerativos, ejemplo
• A estudiantes le pedieron describir solo mencionando
propiedades los siguientes conceptos:
-arm
• 2625 propiedades fueron mencionadas.
-bacon
317 propiedades distintas.
-chestnut
Mínimo y máximo número de propiedades distintas para
-eagle
un concepto 32 y 46 respectivamente.
-hair
Propiedad más mencionada para un concepto => 30
-lips
Ejemplo de los datos
-lobster
4 0 0 4 0 0 0 2 0 0 0 0 5 0 0
-ketchup
0 0 0 2 0 13 0 0 0 2 0 0 0 0 0
-sandwich
0 0 0 0 0 0 0 0 0 0 0 0 4 0 0
0 0 0 0 3 0 0 0 0 0 2 9 9 0 2
-scorpion
0 0 0 13 0 2 0 0 0 0 0 0 0 0 0
-thumb
0 0 0 2 0 3 0 0 0 0 0 0 3 0 0
-turkey
0 0 0 0 0 3 0 0 0 0 0 0 0 0 0
0 0 17 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 10 0 3 0 0 0 0 0 0 6 0 0
Métodos jerárquicos aglomerativos, ejemplo
• A estudiantes le pedieron describir solo mencionando
propiedades los siguientes conceptos:
-arm
• 2625 propiedades fueron mencionadas.
-bacon
317 propiedades distintas.
-chestnut
Mínimo y máximo número de propiedades distintas para
-eagle
un concepto 32 y 46 respectivamente.
-hair
Propiedad más mencionada para un concepto => 30
-lips
Ejemplo de los datos
-lobster
4 0 0 4 0 0 0 2 0 0 0 0 5 0 0
-ketchup
0 0 0 2 0 13 0 0 0 2 0 0 0 0 0
-sandwich
0 0 0 0 0 0 0 0 0 0 0 0 4 0 0
0 0 0 0 3 0 0 0 0 0 2 9 9 0 2
-scorpion
0 0 0 13 0 2 0 0 0 0 0 0 0 0 0
-thumb
0 0 0 2 0 3 0 0 0 0 0 0 3 0 0
-turkey
0 0 0 0 0 3 0 0 0 0 0 0 0 0 0
0 0 17 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 10 0 3 0 0 0 0 0 0 6 0 0
-lips
Ejemplo de los datos
-lobster
4 0 0 4 0 0 0 2 0 0 0 0 5 0 0
-ketchup
0 0 0 2 0 13 0 0 0 2 0 0 0 0 0
-sandwich
0 0 0 0 0 0 0 0 0 0 0 0 4 0 0
0 0 0 0 3 0 0 0 0 0 2 9 9 0 2
-scorpion
0 0 0 13 0 2 0 0 0 0 0 0 0 0 0
-thumb
0 0 0 2 0 3 0 0 0 0 0 0 3 0 0
-turkey
0 0 0 0 0 3 0 0 0 0 0 0 0 0 0
0 0 17 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 10 0 3 0 0 0 0 0 0 6 0 0
• #Cargando librerías
install.packages("cluster")
library(cluster)
#Seleccionando datos categóricos y transformándolos a factor
data=mtcars[,c(2,8:11)]
for (i in 1:5){
data[,i]=as.factor(data[,i])
}
#Generando matriz de distancia y clusterizando
d=daisy(data)
model = hclust(d, method="complete")
plot(model)
Métodos jerárquicos aglomerativos, datos
categóricos
Segmentación de datos
Clustering
Métodos difusos
Contenidos
• Introducción
• Segmentación de datos
• Búsqueda de Patrones
• Clustering
• Introducción
• Métodos de partición
• Métodos de densidad
• Métodos jerárquicos
• Métodos difusos
• Evaluación
Métodos difusos
• En algoritmos de clustering difusos cada punto puede pertenecer a muchos
(típicamente a todos) los clusters con cierta probabilidad.
Métodos difusos, Fuzzy C-medias
• Fuzzy C-means (FCM) permite que cada punto pertenezca a más de un
cluster. Dado un número de clusters K (determinado por el usuario), cada
cluster es asociado con un centroide y cada punto es asignado a uno o más
clusters según una medida de similaridad.
Métodos difusos, Fuzzy C-medias
• Fuzzy C-means (FCM) permite que cada punto pertenezca a más de un
cluster. Dado un número de clusters K (determinado por el usuario), cada
cluster es asociado con un centroide y cada punto es asignado a uno o más
clusters según una medida de similaridad.
(membresía)
K-Medias
Métodos difusos, Fuzzy C-medias
• Fuzzy C-means (FCM) permite que cada punto pertenezca a más de un
cluster. Dado un número de clusters K (determinado por el usuario), cada
cluster es asociado con un centroide y cada punto es asignado a uno o más
clusters según una medida de similaridad.
(membresía) (membresía)
K
X K
X X
wc(C) = wc(Ck ) = um
ik d(x(i), rk )
k=1 k=1 x(i)2Ck
Métodos difusos, Fuzzy C-medias, entrenamiento
• Función de score: es una generalización de la distancia dentro-cluster
(usualmente distancia Euclidiana) de K-medias
K
X K
X X
wc(C) = wc(Ck ) = um
ik d(x(i), rk )
k=1 k=1 x(i)2Ck
K
X K
X X
wc(C) = wc(Ck ) = um
ik d(x(i), rk )
k=1 k=1 x(i)2Ck
1
• Paso 4: Re-calcular la matriz U con
uij = K ✓
X ◆2/(m 1)
d(ri , x(j))
• Paso 5: Ir al Paso 2
d(rk , x(j))
k=1
Métodos difusos, Fuzzy C-medias, código en R
• #Apliquemos C-medias con 3 clusters
install.packages(“fclust”)
library(fclust)
model = FKM(iris[1:4], 3)
model
Number of objects: 150
Number of clusters: 3
Closest hard clustering partition:
1 2 3 4 5 6 7 8 9 10 11 12 13 …. 150
2 2 2 2 2 2 2 2 2 2 2 2 2 …. 1
Membership degree matrix (rounded):
Clus 1 Clus 2 Clus 3
1 0.00 1.00 0.00
2 0.02 0.98 0.01
3 0.01 0.98 0.01
…
150 0.58 0.03 0.39
Métodos difusos, Fuzzy C-medias, código en R
• #Veamos los atributos del modelo aprendido
attributes(model)
$names
[1] "U" "H" "clus" "value" "cput" "iter" "k" "m" "stand" "Xca" "X" "call"
model$U => matriz indicando la pertenencia de cada punto a un cluster
model$H => La posición de los centroides
model$clus => matriz con el cluster al que pertenece cada dato y su probabilidad
model$value => Valor final de la función objetivo
model$cput => Tiempo computacional del algoritmo
model$iter => Número de iteraciones realizadas
model$k => Número de clusters
model$m => Valor parámetro m (predefinido en 2)
model$stan => Para estandarizar los datos (predefinido en 0 = NO estandarizar)
model$Xca => Datos utilizados para el clustering (si stan=0 => model$X)
model$X => Datos originales
model$call => Código utilizado para llamar a la función
Métodos difusos, Fuzzy C-medias, código en R
• #Veamos un plot de los cluster encontrados
plot(model, v1v2=c(1,2), ucex=TRUE, pca=FALSE)
v1v2 => Variable a imprimir.
ucex => El tamaño del punto indica la pertenencia del cluster.
pca => Estandarización de los datos y aplicación de Principal Component Analysis
para una mejor visualización de los datos
Métodos difusos, Fuzzy C-medias, código en R
• #Veamos un plot de los cluster encontrados
plot(model, v1v2=c(1,2), ucex=TRUE, pca=TRUE)
Métodos difusos, Fuzzy C-medias, código en R
• #Apliquemos C-medias con 3 clusters
model = FKM(iris[1:4], 3)
m=10
m=1.1
Métodos difusos, modelo de mezcla de Gaussianas
(GMM)
K
X K
X K
X
p(x) = p(k)p(x|k) = p(k)p(x|x ⇠ N (µk , ⌃k )) = ⇡k N (µk , ⌃k )
k=1 k=1 k=1
Métodos difusos, GMM, Gaussiana
multidimensional
x ⇠ N (µ, ⌃)
donde
µ = (E[X1 ], . . . , E[Xp ])
2 3
V ar(X1 ) ··· Cov(X1 , Xp )
⌃=4 ··· ··· ··· 5
Cov(X1 , Xp ) ··· V ar(Xp )
✓ ◆
1 1
p(x) = p(x1 , · · · , xp ) = p exp (x µ)T ⌃ 1
(x µ)
(2⇡)p |⌃| 2
Métodos difusos, GMM, aprendizaje
• ¿Cómo podemos aprender los parámetros?
K
X
p(x) = ⇡k N (µk , ⌃k )
k=1
Coeficientes de Componentes de media
mezcla y matriz de covarianza
Métodos difusos, GMM, aprendizaje
• ¿Cómo podemos aprender los parámetros?
K
X
p(x) = ⇡k N (µk , ⌃k )
k=1
• Aplicando el método de la maxima verosimilitud (maximum likelihood), se
obtiene que el logaritmo de la verosimilitud de los datos !
es:
YN
ln P (D|⇡, µ, ⌃) = ln p(xi |M )
i=1
N
X
= ln p(xi |M )
i=1
N
"K #
X X
= ln ⇡k N (µk , ⌃k ))
i=1 k=1
Métodos difusos, GMM, aprendizaje
• ¿Cómo podemos aprender los parámetros?
K
X
p(x) = ⇡k N (µk , ⌃k )
k=1
lamentablemente, no existe
• Aplicando el método de la maxima verosimilitud (maximum likelihood), se
obtiene que el logaritmo de la verosimilitud de los datos !
es:
una
ln P solución
(D|⇡, µ, ⌃) =analítica (cerrada)
YN
ln p(xi |M )
para su maximización
N
i=1
X
= ln p(xi |M )
i=1
N
"K #
X X
= ln ⇡k N (µk , ⌃k ))
i=1 k=1
Métodos difusos, GMM, aprendizaje
• Si asumimos que dado el punto xi se conoce el valor de una nueva variable z,
donde zij=1 implica que xi fue generada por la distribución normal j.
8 K
>
> Y
Z C1 C2 … CK >
> p(z = 1) = ⇡ ) P (z ) = ⇡ zik
>
>
ik k i k
x1 0 1 0 < i=1
x2 0 0 1 ) p(xi |zik = 1) = N (xi |µk , ⌃k )
>
> K
… >
> Y
>
> p(x , z ) = ⇡ zik
N (x |µ , ⌃ ) zik
xn 0 0 0 : i i k i k k
i=1
K
X K
X
p(x) = p(z)p(x|z) = ⇡k N (x|µk , ⌃k )
k=1 k=1
• Hemos llegado a la misma expresión anterior pero con una nueva variable.
Desafortunadamente,
p(D, Z|⇡, µ, ⌃) =
n=1 k=1
⇡kznk N (xn |µk , ⌃k )znk
Z µ,es
⌃) =desconocido
XX N K
ln p(D, Z|⇡, z (ln ⇡ + ln N (x |µ , ⌃ ))
nk k n k k
n=1 k=1
N X
X K
EZ [ln p(D, Z|⇡, µ, ⌃)] = E[znk ](ln ⇡k + ln N (xn |µk , ⌃k ))
n=1 k=1
⇡k N (xn |µk , ⌃k )
E[znk ] = PK
j=1 ⇡j N (xn |µj , ⌃j )
• E[znk] es la probabilidad de que el punto n sea generado por el cluster k
(N(𝞵k,∑k) con respecto a las K distribuciones normales posibles.
Métodos difusos, GMM, aprendizaje
• Algoritmo
⇡k N (xn |µk , ⌃k )
2. E-step: estimar todos los
E[znk ] = P
K
j=1 ⇡j N (xn |µj , ⌃j )
N X
X K
3. M-step: maximizarE
Z [ln p(D, Z|⇡, µ, ⌃)] = E[znk ](ln ⇡k + ln N (xn |µk , ⌃k ))
N
n=1 k=1
1 X X N
• Segmentación de datos
• Búsqueda de Patrones
• Clustering
• Introducción
• Métodos de partición
• Métodos de densidad
• Métodos jerárquicos
• Métodos difusos
• Evaluación
Evaluación
• ¿Como podemos evaluar que tan bueno es un cluster?
0.8
0.6
0.5
y
0.4
0.3
0.1
0
0 0.2 0.4 0.6 0.8 1
x
Puntos aleatorios
Evaluación
• ¿Como podemos evaluar que tan bueno es un cluster?
0.8
0.6
0.5
y
0.4
0.3
0.1
0
0 0.2 0.4 0.6 0.8 1
x
Puntos aleatorios
1 1
1
0.9 0.9
0.9
0.8 0.8
0.8
0.7 0.7
0.7
0.6 0.6
0.6
0.5 0.5
y
0.5
y
0.4 0.4
0.4
0.3 0.3
0.3
0.2 0.2
0.2
0.1 0.1
0.1
0 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0
0 0.2 0.4 0.6 0.8 1
x x
K-medias DBSCAN Complete
x Link
Evaluación
• Evaluación de cluster, enfoques:
• Enfoque más común (para datos numéricos con pocas dimensiones), es usar
un test estadístico de aleatoriedad espacial.
Evaluación, tendencia de clusters
• Tendencia de clusters: evalúa si existe la presencia de clusters en los
datos, antes de realizar el clustering.
• Enfoque más común (para datos numéricos con pocas dimensiones), es usar
un test estadístico de aleatoriedad espacial.
i=1
H= p p
X X ui: distancia del punto original i, a su vecino
ui + wi más cercano de los puntos originales.
i=1 i=1
Evaluación, tendencia de clusters
• Tendencia de clusters: evalúa si existe la presencia de clusters en los
datos, antes de realizar el clustering.
• Enfoque más común (para datos numéricos con pocas dimensiones), es usar
un test estadístico de aleatoriedad espacial.
i=1
H= p p
X X ui: distancia del punto original i, a su vecino
ui + wi más cercano de los puntos originales.
i=1 i=1
H=0.8191
H=0.4975
p=50 p=50
Evaluación, tendencia de clusters, estadístico de
Hopkins, código en R
• #Cargando paquete
install.packages("factoextra")
library(factoextra)
#Calculando el estadístico de Hopkins
res = get_clust_tendency(iris[,1:4], n = 30, graph = FALSE)
#El paquete devuelve 1 menos el valor del estadístico
1-res$hopkins_stat
0.830
Evaluación, tendencia de clusters, estadístico de
Hopkins, código en R
• #Cargando paquete
install.packages("factoextra")
library(factoextra)
#Calculando el estadístico de Hopkins
res = get_clust_tendency(iris[,1:4], n = 30, graph = FALSE)
#El paquete devuelve 1 menos el valor del estadístico
1-res$hopkins_stat
0.830
k=1 x2Ck
Evaluación, evaluación no supervisada, medidas
internas, cohesión
• Cohesión: Mide que tan cercanos están los objetos dentro de
cada cluster.
k=1 x2Ck
× ×C ×
1 C1 2 3 4 C2 5
K
X
2
SSBtotal = |Ci |(C i X)
k=1 separación
Evaluación, evaluación no supervisada, medidas
internas, separación
• Separación: Mide que tan distinto son los clusters con respecto a los otros.
K
X
2
SSBtotal = |Ci |(C i X)
k=1 separación
× X× C ×
1 C1 2 3 4 C2 5
2
K=1 ) SSBtotal = 4 ⇤ (3 3) = 0
2 2
K=2 ) SSBtotal = 2 ⇤ (1.5 3) + 2 ⇤ (4.5 3) = 9
Evaluación, evaluación no supervisada, medidas
internas, cohesión y separación
• Cohesión y separación: La suma de SSEtotal y SSBtotal es igual a la suma de
la distancia al cuadrado de todos los puntos con respecto a la media.
× X× C ×
1 C1 2 3 4 C2 5
• #Calculando cohesión
withinCluster=numeric(K)
for (i in 1:K){
#Seleccionando datos pertenecientes al cluster
tempData=iris[which(model$cluster==i),1:4]
#Calculando distancia del centro del cluster al resto de los puntos
withinCluster[i]=sum(dist2(tempData,colMeans(tempData))^2)
}
cohesion = sum(withinCluster)
cohesion
78.85
Evaluación, evaluación no supervisada, medidas
internas, cohesión y separación, código en R
• #Centro de los datos
meanData=colMeans(iris[,1:4])
#Calculando separación
SSB=numeric(K)
for (i in 1:K){
#Seleccionando datos pertenecientes al cluster
tempData=iris[which(model$cluster==i),1:4]
#número de puntos por distancia entre centro cluster y datos
SSB[i]=nrow(tempData)*sum((meanData-colMeans(tempData))^2)
}
separacion = sum(SSB)
separacion
602.52
Evaluación, evaluación no supervisada, medidas
internas, cohesión y separación, código en R
• #Centro de los datos
meanData=colMeans(iris[,1:4])
#Calculando separación
SSB=numeric(K)
for (i in 1:K){
#Seleccionando datos pertenecientes al cluster
tempData=iris[which(model$cluster==i),1:4]
#número de puntos por distancia entre centro cluster y datos
SSB[i]=nrow(tempData)*sum((meanData-colMeans(tempData))^2)
}
separacion = sum(SSB)
separacion
602.52
• Calcular ai, la distancia promedio del punto i a los puntos del mismo cluster.
• Calcular bij, la distancia promedio del punto i a todos los puntos del cluster j.
• Calcular ai, la distancia promedio del punto i a los puntos del mismo cluster.
• Calcular bij, la distancia promedio del punto i a todos los puntos del cluster j.
• Un valor negativo implica que el punto i es más cercano a otro cluster, que a su
propio cluster. Si ai es cercano a 0 (baja cohesión), entonces Si es cercano a 1.
C2
× ×
1 C1 2 3 4 5
ai bi1 bi2 bi si
1 —
2 —
3 —
5 —
Evaluación, evaluación no supervisada, medidas
internas, coeficiente de silhouette, ejemplo
• ai => la distancia promedio del punto i a los puntos del mismo cluster.
bij => la distancia promedio del punto i a todos los puntos del cluster j.
bi => el mínimo bij tal que i no pertenezca al cluster j.
El coeficiente de Silhouette para el punto i es Si = (bi-ai) / max(ai,bi)
C2
× ×
1 C1 2 3 4 5
ai bi1 bi2 bi si
1 1.0 — 3.0 3.0 2/3
2 1.0 — 2.0 2.0 1/2
3 2.0 1.5 — 1.5 -0.5/2
5 2.0 3.5 — 3.5 1.5/2
Evaluación, evaluación no supervisada, medidas
internas, coeficiente de silhouette, ejemplo
• ai => la distancia promedio del punto i a los puntos del mismo cluster.
bij => la distancia promedio del punto i a todos los puntos del cluster j.
bi => el mínimo bij tal que i no pertenezca al cluster j.
El coeficiente de Silhouette para el punto i es Si = (bi-ai) / max(ai,bi)
C1 C2
× ×
1 2 3 4 5
ai bi1 bi2 bi si
1 1.5 — 4.0 4.0 2.5/4
2 1.0 — 3.0 3.0 2/3
3 1.5 — 2.0 2.0 0.5/2
5 0.0 3.0 — 3.0 1.0
Evaluación, evaluación no supervisada, medidas
internas, coeficiente de silhouette, código en R
• #Instalando paquetes para calcular distancia de un punto a otros
install.packages("cluster")
library(cluster)