Ir al contenido principal

Diagrama de temas

    • 8.1 Entrenar y ajustar modelos de clúster

      • Agrupación en clústeres k-means


        La agrupación en clústeres k-means es un algoritmo para el aprendizaje automático no supervisado que agrupa ejemplos de datos como con el fin de revelar patrones en los datos. Para ello, define un conjunto de grupos k (clústeres). Cada ejemplo de datos se coloca dentro del clúster cuyo centro (denominado centroide) es el más cercano a ese ejemplo de datos. La cercanía se puede definir mediante una métrica de distancia que se elige durante el entrenamiento. Por lo tanto, termina con clústeres de datos que exhiben similitud estadística, como se visualiza en la siguiente ilustración.

        Figura 1. Tres clústeres de datos, en los que las formas grandes rellenas representan los centroides.

        Una vez que el algoritmo asigna ejemplos de datos a los clústeres iniciales, vuelve a calcular cada centroide calculando la media de todos los ejemplos de datos en el clúster del centroide. A continuación, los centroides se mueven a este nuevo valor medio y cada ejemplo de datos se reasigna al centroide que ahora está más cerca. Este proceso se repite hasta que los ejemplos de datos ya no cambian los clústeres (es decir, las k-means convergen), o hasta que se cumple un número especificado de iteraciones.

        La agrupación en clústeres k-means es a menudo utilizada por las empresas para agrupar a sus clientes en función de características similares. La empresa puede entonces comercializar sus productos o servicios de manera diferente a cada grupo. La agrupación en clústeres también es útil para categorizar imágenes y videos.

      •  Optimización global frente a optimización local

        El objetivo final de la agrupación en clústeres k-means es la minimización del costo, al igual que otros algoritmos de aprendizaje automático. La función de costo global J(θ) se puede escribir de la siguiente manera:

        Donde:

             n es el número total de ejemplos.
             xi es el ejemplo de datos iº.
             cj es el centroide jº.

        Por lo tanto, yendo de derecha a izquierda, se toma la distancia entre un ejemplo de datos y un centroide (dist). A continuación, se toma el centroide con la distancia mínima (más cercana) al ejemplo (min). Por último, se calcula la suma de todas las distancias más cercanas. En última instancia, esto ayuda a encontrar los centroides que minimizan esta distancia total. Sin embargo, normalmente no es factible aplicar esta optimización globalmente. Si intentara todas las asignaciones posibles de ejemplos de datos n a cada clúster, terminaría con muchas, muchas combinaciones posibles, incluso si el tamaño de la muestra y el número de clústeres son bajos. Por ejemplo, con un n de 25 y 4 como el número de clústeres, hay aproximadamente 47 billones de asignaciones posibles.

        Esta es la razón por la que la agrupación en clústeres k-means es un algoritmo iterativo que requiere optimización local. El proceso es el siguiente:


             1. Comienza tomando el número de clústeres deseados, luego asigna aleatoriamente centroides para cada clúster.
             2. Luego, asigna cada ejemplo de datos a cualquier centroide que sea más cercano actualmente. Esto es efectivamente lo mismo que minimizar el costo de estas asignaciones.
             3. A continuación, el algoritmo mueve cada centroide para que esté en el centro de los ejemplos de datos que se le asignaron. Esto es efectivamente lo mismo que minimizar el costo de los centroides.
             4. El proceso se repite hasta la convergencia o hasta que se cumple un máximo de iteración.

        Por lo tanto, esta minimización iterativa de costos es un enfoque más eficiente para la optimización. Sin embargo, no siempre logra la optimización global perfecta, especialmente si los centroides iniciales seleccionados aleatoriamente se colocaron en ubicaciones subóptimas. Puede volver a inicializar el algoritmo de k-means con diferentes centroides elegidos aleatoriamente para superar esto.

      • Determinación de k

        En la agrupación en clústeres k-means, el desafío principal es determinar k (el número de clústeres). Hay varias métricas de evaluación que puede utilizar para ayudar a determinar la k óptima. Antes de usar estas métricas, sin embargo, debe comenzar evaluando el problema que está tratando de resolver. En función de su conocimiento del dominio, es posible que pueda imponer restricciones útiles a los datos. Por ejemplo, suponga que tiene un conjunto de datos sin etiqueta de miles de fotografías que representan paisajes urbanos. Desea organizar estas imágenes por las ciudades en las que se tomaron. Las imágenes no tienen metadatos basados en la ubicación, por lo que deberá confiar en el contenido real de cada imagen para identificar su ubicación. En este caso, usted sabe que cada imagen fue tomada en una de las cuatro ciudades posibles. Por lo tanto, debido a su conocimiento del dominio, sabe que solo aceptará cuatro clústeres, ni más ni menos. Por lo tanto, no necesitará estimar un número "correcto" de clústeres.

        Información adicional

        Para obtener más información sobre la agrupación en clústeres k-means, consulte este sitio.

      • Análisis de clases latentes


        El análisis de clase latente (LCA) es una forma de aprendizaje no supervisado que agrupa ejemplos de datos en grupos no observables denominados clases latentes. Una clase latente se refiere al concepto de una variable latente, una variable que no se observa directamente, sino que solo se deduce a través de la presencia e interacción de otras variables observables. Estas variables latentes pueden ser inherentemente inviables de medir, como en el caso de conceptos abstractos, o pueden ser muy difíciles de medir (es decir, están "ocultas"). Por ejemplo, si desea clasificar a los pacientes psiquiátricos en términos de su estado mental, las descripciones abstractas como "triste" o "feliz" no son realmente mensurables. O, tal vez usted quiere medir la edad de cada paciente, pero en realidad no tiene estos datos disponibles. Ambas variables se pueden considerar latentes, es posible que no sean directamente observables, pero ambas siguen siendo útiles para usted.

        Nota: Las variables observables cuyas relaciones podrían revelar una variable de estado mental latente podrían ser: el número de visitantes que recibe el paciente; si el paciente fue ingresado o no en el hospital voluntariamente; una puntuación asignada por un psiquiatra que evalúa el nivel de mejoría del paciente a lo largo del tiempo; los tipos de medicación que el paciente está recibiendo; y así sucesivamente.

        Por lo tanto, una clase latente es un grupo o clúster no observable dentro del cual se colocan ejemplos de datos. Las clases se deducen de las características observables en el conjunto de datos. Usando el ejemplo psiquiátrico, si tuviera un conjunto de datos de atributos de pacientes y quisiera agruparlos de acuerdo con el estado mental, LCA podría hacerlo midiendo las similitudes entre estos atributos. No necesariamente le dirá qué clúster es "triste" o "feliz", pero podrá crear los clústeres para que los analice.

        En términos de su mecanismo de acción, LCA es en realidad muy similar a la agrupación en clústeres k-means. Después de inicializar los clústeres, vuelve a calcular los centroides usando una estadística descriptiva como la media. Sin embargo, una diferencia es que el LCA también mide el tamaño de cada clúster. Si un ejemplo de datos es igualmente similar a dos clústeres, es probable que se coloque en el mayor de los dos clústeres. Además, al calcular la distancia entre cada ejemplo y su centroide, LCA también incorporará el tamaño del clúster para generar una probabilidad de pertenencia al clúster. Cuando llega el momento de volver a calcular los centroides, LCA usa esta probabilidad como un peso. En la agrupación en clústeres k-means, el "peso" es un 1 o un 0. De lo contrario, el proceso se repite de la misma manera básica hasta que se cumpla la convergencia o un máximo de iteración.
        LCA tiene varias ventajas sobre la agrupación en clústeres k-means, incluidas:

             Asignar un ejemplo de datos al más grande de los dos clústeres cuando el ejemplo está igualmente distante entre los dos clústeres es una forma eficaz de reducir la incertidumbre.
             La incorporación de cálculos ponderados normalmente da como resultado clústeres más útiles.
             Tiende a hacerlo mejor en el control de datos faltantes y variados.


        Sin embargo, la mayor desventaja de LCA es que es mucho más lento, particularmente cuando se trata de grandes conjuntos de datos. Usted consideraría usar LCA sobre la agrupación en clústeres k-means cuando el tamaño de la muestra es pequeño o el tiempo no es un factor. Tenga en cuenta también que actualmente no hay compatibilidad con LCA en ninguna de las principales bibliotecas de ciencia de datos de Python®, aunque hay compatibilidad con LCA en el lenguaje de programación R.


        Algoritmos de agrupación adicionales

        LCA y la agrupación en clústeres k-means son dos algoritmos principales de AA no supervisados, pero no son los únicos. Para obtener más información sobre otros tipos de algoritmos de agrupación, consulte este sitio.


      • Entrenamiento y ajuste de modelos de clústeres


        Archivos de datos

        /home/student/ITSAI/Cluster/Clustering.ipynb
        /home/student/ITSAI/Cluster/data/houses_data.pickle

        Antes de empezar

        La máquina virtual y Jupyter® Notebook no están abiertos.

        Escenario

        Una compañía de bienes raíces que trabajó con el conjunto de datos del Condado de King tiene compradores potenciales. Cada comprador identifica qué casas le interesan más. Sin embargo, debido a ciertas circunstancias, como una casa que se retira del mercado, es posible que no puedan obtener sus mejores opciones. Por lo tanto, el agente de bienes raíces debe ser capaz de recomendarles una o más casas similares a sus mejores opciones. Dado que hay tantos factores que intervienen en la elección de un comprador, lo que se define como "similar" no es fácil de determinar.


        Anteriormente, pudo entrenar un modelo de aprendizaje automático para predecir los precios de las casas. Este fue un problema supervisado, porque había una variable/etiqueta objetivo involucrada (precio). Sin embargo, conjuntos de datos como estos pueden ser aplicables a muchos problemas; no solo a uno. Por lo tanto, en este caso, desea poder juntar o agrupar casas juntas en función de la similitud de sus características. Dado que no hay ninguna etiqueta para predecir, esto presenta un problema no supervisado; uno en el que usará una agrupación en clústeres k-means para solucionarlo.


        -------------------------------------------------------------------------------------------------------------------------------------------------------------

        1. Inicie el entorno de actividad.

        1. En el escritorio, haga doble clic en la aplicación Oracle VM VirtualBox para iniciarla.

        2. En Oracle VM VirtualBox Manager, en la lista de la izquierda, seleccione ITSAI y, a continuación, seleccione Computador→Inicio→Inicio normal.
        3. Espere a que se inicie el sistema operativo.

        -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
        2. Inicie Jupyter Notebook.
        1. En el escritorio, haga doble clic en el icono de Jupyter para iniciar el servidor de Jupyter Notebook y abrir un explorador web.
        2. Seleccione ITSAI.
        3. Seleccione Clúster.
        4. Seleccione Clustering.ipynb para abrirlo.

        ------------------------------------------------------------------------------------------------------------------------------------------------------------
        3. Importe las bibliotecas relevantes y cargue el conjunto de datos.
        1. Desplácese hacia abajo y vea la celda titulada Importar bibliotecas de software y examine la lista de código debajo de ella.

        Este código importa las diversas bibliotecas de software que se utilizarán en este programa y carga el conjunto de datos.

        2. Ejecute la celda de código.

        3. Compruebe que houses_data.pickle se cargó con 21.610 registros y 24 columnas.

        Este es el mismo conjunto de datos del condado de King que limpió y preprocesó en las lecciones 3 y 4.


        -------------------------------------------------------------------------------------------------------------------------------------------------------------
        4.Revise el conjunto de datos.
        1. Desplácese hacia abajo y vea la celda titulada Revisar el conjunto de datos y examine la lista de código debajo de ella.

        Este código mostrará las primeras 5 filas del conjunto de datos.

        2. Ejecute la celda de código.

        3. Examine el resultado.

        Recuerde que limpió algunos de los datos, completó los valores que faltaban y codificó el tipo de techo en tres columnas.

        -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
        5. Utilice un modelo de k-means para etiquetar cada fila del conjunto de datos.
        1. Desplácese hacia abajo y vea la celda titulada Utilizar un modelo de k-means para etiquetar cada fila del conjunto de datos y examine la lista de código debajo de ella.

        Esta función, cuando se la llama, creará un modelo de agrupación en clústeres de k-means utilizando el número de clústeres que especifique más adelante. La función devolverá un DataFrame del conjunto de datos de entrenamiento con una nueva columna de etiquetas de clúster agregada.

        2. Ejecute la celda de código.
        3. Examine el resultado.

          La función se definió y está lista para usarse.


        -------------------------------------------------------------------------------------------------------------------------------------------------------------
        6. Genere las etiquetas de clúster y adjúntelas al conjunto de datos original.
        1. Desplácese hacia abajo y vea la celda titulada Generar las etiquetas de clúster y adjúntelas al conjunto de datos original y examine la lista de código que aparece debajo de ella.

        Este código utilizará dos características (latitud y longitud de las casas) para realizar la agrupación en clústeres. Esto es solo un paso preliminar para ver cómo funciona la agrupación en clústeres. Se crearán cuatro clústeres.

        2. Ejecute la celda de código.

        3. Examine el resultado.


        La salida muestra que se agregó una nueva columna al conjunto de datos que especifica en qué clúster se coloca cada ejemplo de datos: 0, 1, 2 o 3.

        -------------------------------------------------------------------------------------------------------------------------------------------------------------
        7. Observe cuántas casas se distribuyeron a cada grupo.
        1.Desplácese hacia abajo y vea la celda titulada Observar cuántas casas se distribuyeron a cada clúster y examine el listado de código debajo de él.

        Este código mostrará una lista de cuántas casas hay en cada clúster.

        2. Ejecute la celda de código.

        3. Examine el resultado.

        Cada grupo contiene varios miles de casas, siendo el grupo 2 el que tiene más.


        -------------------------------------------------------------------------------------------------------------------------------------------------------------

        8. Muestre los clústeres de casas en el mapa según su ubicación.
        1. Desplácese hacia abajo y vea la celda titulada Mostrar los clústeres de casas en el mapa según su ubicación y examine el listado de código debajo de él.

        Este código define una función que diagramará cada punto de datos 20 (casa) en un mapa geográfico del área, junto con los clústeres de esos datos. Cada clúster cubrirá un área del mapa con color basado en el precio de las casas en esa área. Cada punto de datos será un círculo que se encuentra en la parte superior de la visualización del clúster. El tamaño del punto de datos viene determinado por el precio de venta de la vivienda.
        2. Ejecute la celda de código.

        3. Examine el resultado.

        La función se definió y está lista para usarse.

        4. En la siguiente celda de código, examine el código.

        Este código llamará a la función show_on_map y generará el mapa.


        5. Ejecute la celda de código.

        6. Examine el resultado.

        Hay cuatro grupos, cada uno agrupado por ubicación de la casa (latitud y longitud). Los clústeres aparecen como mapas de calor, donde las partes más claras indican dónde se encuentran la mayoría de las casas en el clúster, mientras que las partes más oscuras indican dónde se encuentran comparativamente menos casas. El precio medio de las casas en cada clúster también se muestra en los controles de la parte inferior derecha del mapa.


        7. Con los controles de la parte inferior derecha del mapa, active y desactive las diferentes combinaciones de los clústeres para mostrar y ocultar esos mapas de calor de los clústeres, respectivamente.

        Puede ver más fácilmente la forma de cada clúster activando y desactivando algunos en diferentes momentos.

        -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
        9. ¿Cómo se formaron los clústeres con respecto a la ubicación?


        -------------------------------------------------------------------------------------------------------------------------------------------------------------

        10.Prepare para agrupar en clústeres por múltiples características de interés para los compradores de viviendas.
        1. Desplácese hacia abajo y vea la celda titulada Prepare para agrupar en clústeres por múltiples características de interés para los compradores de viviendas y examine el listado de código debajo de él.


        Ahora que está seguro que el modelo de agrupación en clústeres funciona, ajustará el modelo mediante el uso de todas las características relevantes para los intereses de los posibles compradores. Estas características son:
        Los pies cuadrados de la casa.
        El número de baños.
        El número de dormitorios.
        La "clasificación" de la casa.
        La calidad de la vista de la casa.
        Si la casa tiene vista a un cuerpo de agua.
        2. Ejecute la celda de código.

        3. Examine el resultado.

        La función se definió y está lista para usarse.


        4. En la siguiente celda de código, examine el código.

        Este código utilizará seis características especificadas en la celda anterior para realizar la agrupación en clústeres. Nuevamente, se crearán cuatro clústeres.

        5. Ejecute la celda de código.

        6. Examine el resultado.

        El resultado muestra que algunas de las casas ahora se colocan en clústeres diferentes que antes, cuando se usaban la latitud y la longitud de las casas para crear los clústeres. Las etiquetas de clúster para estas cinco casas de los clústeres anteriores fueron: 1, 2, 2, 1 y 3.

        -------------------------------------------------------------------------------------------------------------------------------------------------------------

        11. Muestre clústeres de casas en el mapa por características de interés para los compradores de viviendas.
        1. Desplácese hacia abajo y vea la celda titulada Mostrar clústeres de casas en el mapa por características de interés para los compradores de viviendas y examine el listado de código debajo de él.

        Este código llamará a la función show_on_map y generará el mapa utilizando las características de interés para los compradores de viviendas.

        2. Ejecute la celda de código.

        3. Examine el resultado.

        Hay cuatro clústeres, cada uno de los cuales se generó teniendo en cuenta las seis características de interés para los compradores de viviendas.

        4. Active y desactive las diferentes combinaciones de los clústeres para mostrar y ocultar esos mapas de calor de los clústeres, respectivamente.

        Puede ver que la forma de cada clúster ahora se superpone, ya que ya no se basa en la latitud y la longitud. Hay más información involucrada en las decisiones de agrupamiento por clústeres que solo la ubicación general. Por ejemplo, una casa en el clúster 0 podría estar en el mismo vecindario que las casas en los clústeres 1, 2 y 3, pero esas casas difieren en otras formas clave. Si un comprador de vivienda ya sabe en qué área general quiere vivir, la agencia de bienes raíces podría usar este modelo de clústeres para sugerir alternativas útiles que están dentro de esa área.