avatar of 发明者量化-小小梦 发明者量化-小小梦
Seguir Mensajes Privados
4
Seguir
1271
Seguidores

Aprendizaje automático por diversión: la guía más sencilla para principiantes

Creado el: 2016-12-07 12:37:21, Actualizado el: 2016-12-07 12:40:26
comments   3
hits   3472

Aprendizaje automático por diversión: la guía más sencilla para principiantes


Cuando escuchas a la gente hablar sobre el aprendizaje automático, ¿tienes una idea muy vaga de lo que significa? ¿Estás cansado de estar hablando con tus colegas y de tener que mover la cabeza?

El objetivo de esta guía es que todos los que quieran aprender sobre el aprendizaje automático y no sepan por dónde empezar lo lean. Supongo que muchos de ustedes han leído el artículo de Wikipedia sobre el aprendizaje automático y se han sentido frustrados porque nadie puede dar una explicación de alto nivel.

El objetivo de este artículo es ser accesible, lo que significa que hay una gran cantidad de generalizaciones. Pero ¿a quién le importan estas?

  • ### ¿Por qué el aprendizaje automático?

El concepto de aprendizaje automático considera que, sin necesidad de escribir ningún código de programación especializado para resolver el problema, los algoritmos genéticos pueden generar respuestas interesantes en el conjunto de datos. En el caso de los algoritmos genéticos, no se necesita codificar, sino introducir datos, y se construirá su propia lógica sobre los datos.

Por ejemplo, hay una clase de algoritmos llamados algoritmos de clasificación, que pueden dividir datos en diferentes grupos. Un algoritmo de clasificación para identificar números escritos a mano, sin modificar una línea de código, puede ser utilizado para dividir el correo electrónico en correo basura y correo ordinario. El algoritmo no ha cambiado, pero el entrenamiento de los datos de entrada ha cambiado, por lo que produce una lógica de clasificación diferente.

Aprendizaje automático por diversión: la guía más sencilla para principiantes

Los algoritmos de aprendizaje automático son una caja negra que se puede reutilizar para resolver muchos problemas de clasificación diferentes.

El algoritmo de aprendizaje automático es un término general que abarca una gran cantidad de algoritmos genéticos similares.

  • ### Dos tipos de algoritmos de aprendizaje automático

Los algoritmos de aprendizaje automático se dividen en dos grandes categorías: aprendizaje supervisado y aprendizaje no supervisado. La diferencia entre ambos es simple, pero es muy importante.

  • Aprendizaje supervisado

    Supongamos que eres un agente de bienes raíces, y tu negocio es cada vez más grande, por lo que has contratado a un grupo de pasantes para que te ayuden. Pero el problema es que puedes ver la casa y saber cuánto vale, y los pasantes no tienen experiencia y no saben cómo valorarla.

    Para ayudar a tu interino (quizás para liberarte para irte de vacaciones), decides escribir un pequeño programa que evalúe el valor de las casas en tu área en función de factores como el tamaño de la casa, el terreno y el precio de venta de casas similares.

    Escribe cada transacción de vivienda en la ciudad en los últimos tres meses, y en cada una de ellas tiene una larga lista de detalles como el número de dormitorios, el tamaño de la casa, el terreno, etc. Pero lo más importante es que escribe el precio final de la transacción:

    Este es el cuadro de datos de nuestro entrenamiento de yoga.

    Aprendizaje automático por diversión: la guía más sencilla para principiantes

    Usaremos estos datos de entrenamiento para escribir un programa que estimará el valor de otras casas en la zona:

    Aprendizaje automático por diversión: la guía más sencilla para principiantes

    Esto se llama aprendizaje supervisado. Ya sabes el precio de venta de cada casa, en otras palabras, ya sabes la respuesta al problema y puedes invertir la lógica para encontrar la solución.

    Para escribir el software, introducirás los datos de entrenamiento de cada conjunto de propiedades en tu algoritmo de aprendizaje automático. El algoritmo intentará averiguar qué tipo de operaciones deben usarse para obtener las cifras de precios.

    Esto es como un ejercicio de aritmética, donde se borran los símbolos de la operación:

    Aprendizaje automático por diversión: la guía más sencilla para principiantes

    ¡Dios mío! ¡Un estudiante astuto borró todos los símbolos de matemáticas de las respuestas de su profesor!

    ¿Puedes ver los problemas y entender qué tipo de problemas de matemáticas se encuentran en estas pruebas? ¿Sabes lo que deberías hacer con las columnas de números de la izquierda de la fórmula para obtener la respuesta de la columna de la derecha?

    En el aprendizaje supervisado, se le permite a la computadora calcular las relaciones entre los números para usted. Una vez que conozca los métodos matemáticos necesarios para resolver este tipo de problemas específicos, puede resolver otros problemas similares.

  • Aprendizaje no supervisado

    Volvamos al ejemplo del agente de bienes raíces que mencioné al principio. Si no sabes cuánto cuesta vender una casa, incluso si lo único que sabes es el tamaño de la casa, su ubicación, etc., puedes hacer cosas geniales.

    Aprendizaje automático por diversión: la guía más sencilla para principiantes

    Incluso si no quieres hacer predicciones de datos desconocidos (como el precio), puedes usar el aprendizaje automático para hacer cosas interesantes.

    Es como si te dieran una hoja de papel con una lista de números y te dijeran: “Oh, no sé qué significan estos números, pero tal vez puedas encontrar una regla o clasificarlos o algo así, ¡buena suerte!”

    En primer lugar, puedes usar un algoritmo para dividir automáticamente los diferentes segmentos de mercado a partir de los datos. Tal vez descubras que los compradores de casas cerca de universidades prefieren casas pequeñas pero con más dormitorios, mientras que los compradores de casas en los suburbios prefieren casas grandes de tres dormitorios.

    También puedes hacer algo genial, encontrar automáticamente datos de precios de casas que están fuera de la agrupación, es decir, valores que son diferentes de otros datos. Esas propiedades en agrupación pueden ser edificios altos, y puedes concentrar a los mejores vendedores en estas áreas porque tienen comisiones más altas.

    En el resto de este artículo, hablaremos principalmente sobre el aprendizaje supervisado, pero no es porque el aprendizaje no supervisado no sea útil o no tenga sentido. De hecho, con la mejora de los algoritmos, el aprendizaje no supervisado se está volviendo cada vez más importante sin tener que vincular los datos con las respuestas correctas.

    Hay muchos otros tipos de algoritmos de aprendizaje automático, pero es una buena idea para los principiantes.

    Esto es genial, pero ¿se puede ver a la tasación de la vivienda como una lección para aprender?

    Como parte de la humanidad, tu cerebro puede manejar la mayoría de las situaciones y aprender a manejarlas sin ninguna instrucción clara. Si has sido un agente de bienes raíces por mucho tiempo, tendrás un sentido instintivo de lo que es el precio adecuado de una propiedad, cómo comercializarla mejor y qué clientes estarán interesados, etc. El objetivo de la investigación de la inteligencia artificial fuerte es poder replicar esta capacidad con computadoras.

    Pero los algoritmos de aprendizaje automático actuales no son tan buenos, ya que solo pueden enfocarse en problemas muy específicos y limitados. Tal vez en este caso, la definición más apropiada de la máquina de aprendizaje automático es la de encontrar una ecuación para resolver un problema específico en base a una pequeña cantidad de datos de ejemplo.

    Desafortunadamente, las máquinas de silicio encuentran una ecuación para resolver un problema específico basándose en una pequeña cantidad de datos de ejemplo. El nombre de silicio es demasiado malo.

    Por supuesto, si estás leyendo este artículo 50 años después, ya habremos desarrollado un algoritmo de inteligencia artificial muy potente, y este artículo parece una vieja antigüedad.

    Vamos a escribir el código.

    En el ejemplo anterior, ¿cómo vas a escribir el procedimiento para evaluar el precio de la vivienda?

    Si no sabes nada de aprendizaje automático, lo más probable es que trates de escribir algunas reglas básicas para evaluar el precio de la vivienda, como las siguientes:

    def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
        price = 0
        # In my area, the average house costs $200 per sqft
        price_per_sqft = 200
    
    
        if neighborhood == "hipsterton":
        # but some areas cost a bit more
            price_per_sqft = 400
    
    
        elif neighborhood == "skid row":
        # and some areas cost less
            price_per_sqft = 100
    
    
        # start with a base price estimate based on how big the place is
        price = price_per_sqft * sqft
    
    
        # now adjust our estimate based on the number of bedrooms
        if num_of_bedrooms == 0:
        # Studio apartments are cheap
            price = price — 20000
        else:
        # places with more bedrooms are usually
        # more valuable
            price = price + (num_of_bedrooms * 1000)
    
    
        return price
    

    Si te apresuras un par de horas así, tal vez obtengas un poco de rendimiento, pero tu programa nunca será perfecto y será difícil de mantener cuando los precios cambien.

    ¿No sería mejor si los ordenadores pudieran encontrar una manera de hacer las funciones mencionadas? ¿A quién le importa lo que hace la función, siempre y cuando el precio de la vivienda que devuelve sea el número correcto?

    def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
        price = <computer, plz do some math for me>
        return price
    

    Una forma de pensar en esto es como si el precio de una vivienda fuera un plato de sopa deliciosa, cuyos ingredientes fueran el número de habitaciones, la superficie y el terreno. Si pudieras calcular cuánto influye cada ingrediente en el precio final, tal vez podrías obtener una proporción concreta de los ingredientes que se mezclan para formar el precio final.

    Esto puede simplificar tu programa inicial (y toda la locura de las sentencias de “if else”) a algo así como:

    def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
        price = 0
    
    
        # a little pinch of this
        price += num_of_bedrooms * .841231951398213
    
    
        # and a big pinch of that
        price += sqft * 1231.1231231
    
    
        # maybe a handful of this
        price += neighborhood * 2.3242341421
    
    
        # and finally, just a little extra salt for good measure
        price += 201.23432095
    
    
        return price
    

    Observe los números mágicos en negrita: 841231951398213, 1231.1231231, 2.3242341421, y 201.23432095. Se llaman pesos. ¡Si pudiéramos encontrar el peso perfecto que se aplica a cada casa, nuestra función podría predecir todos los precios de las casas!

    Una de las mejores maneras de encontrar el peso óptimo es:

    Paso uno:

    En primer lugar, pondremos cada uno de ellos a 1.0:

    def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
        price = 0
    
    
        # a little pinch of this
        price += num_of_bedrooms * 1.0
    
    
        # and a big pinch of that
        price += sqft * 1.0
    
    
        # maybe a handful of this
        price += neighborhood * 1.0
    
    
        # and finally, just a little extra salt for good measure
        price += 1.0
    
    
        return price
    

    El paso 2:

    En el caso de una propiedad, el valor estimado de la propiedad es el valor de la propiedad, y el valor estimado de la propiedad es el valor de la propiedad.

    Aprendizaje automático por diversión: la guía más sencilla para principiantes

    Utilice su programa para predecir el precio de la vivienda.

    Por ejemplo: el primer inmueble de la tabla tiene un precio de venta real de \(250.000, tu función tiene una estimación de \)178.000, y este inmueble te falta $72.000.

    Luego se suma la estimación de cada propiedad en su conjunto de datos al cuadrado de su desviación del valor. Supongamos que el conjunto de datos tiene 500 transacciones de propiedades, la estimación del desviación del valor al cuadrado de la suma de $ 86,123,373. Esto refleja el grado de corrección de la columna de su función.

    Ahora, divida el total por 500 y obtenga la estimación de cada propiedad que se desvía del promedio. Llame este error promedio el costo de su función.

    Si se puede ajustar el peso para que el costo sea 0, la función es perfecta. Significa que el programa estima cada transacción de bienes raíces de la misma manera que los datos de entrada. Y este es nuestro objetivo: intentar diferentes pesos para que el costo sea lo más bajo posible.

    El paso 3:

    Repite el paso 2 una y otra vez, y prueba todas las combinaciones posibles de pesos. ¡Cuál combinación te hace el costo más cercano a cero, es lo que vas a usar, y si encuentras esa combinación, el problema está resuelto!

    Las ideas perturban el tiempo.

    Es muy sencillo, ¿verdad? Piensa en lo que has hecho ahora mismo. Obtienes algunos datos, los introduces en tres sencillos y generales pasos, y finalmente obtienes una función que puede evaluar las casas en tu área. Pero los siguientes hechos podrían perturbar tu mente:

      1. En los últimos 40 años, estudios en muchos campos (por ejemplo, lingüística/traducción) han demostrado que este tipo de algoritmos de aprendizaje generalizado (como el algoritmo de la cuchara de datos dinámicos (la palabra que inventé) ha superado a los métodos que requieren el uso de reglas definidas por personas reales.
      1. La última función que escribiste es realmente un cubo, que ni siquiera sabe cuál es el cubo de la superficie del cubo y cuál es el número de cubo de la habitación. Lo único que sabe es moverlo y cambiar los números para obtener la respuesta correcta.
      1. Es muy probable que no sepas por qué un conjunto especial de valores de peso funciona. Así que solo escribes una función que no entiendes realmente pero que puedes probar.
      1. Imagínese que su programa no tiene parámetros como parámetros de área de aluminio y parámetros de número de dormitorios de aluminio, sino que acepta un conjunto de números. Supongamos que cada número representa un píxel de la imagen capturada por la cámara instalada en el techo de su automóvil, y que la salida prevista no se llama parámetro de precio de aluminio sino parámetro de giro del volante de aluminio, ¡así que tiene un programa que puede manipular automáticamente su automóvil!

    Es una locura, ¿verdad?

    ¿Qué pasa cuando el cocinero en el paso 3 prueba cada uno de los cocineros digitales?

    Bueno, por supuesto que no puedes probar todos los posibles valores de peso para encontrar la combinación que funciona mejor. Eso llevaría mucho tiempo, porque el número de pruebas podría ser infinito. Para evitar esto, los matemáticos han encontrado muchas maneras inteligentes de encontrar rápidamente un peso excelente sin tener que intentarlo mucho. Primero, escriba una simple ecuación que represente los dos pasos anteriores:

    Esta es tu función de costo.

    Aprendizaje automático por diversión: la guía más sencilla para principiantes

    A continuación, reescribiremos la misma ecuación con términos matemáticos de aprendizaje automático (ahora puedes ignorarlos):

    θ representa el valor de peso actual。 J(θ) significa que el valor de peso actual correspondiente al precio 。

    Aprendizaje automático por diversión: la guía más sencilla para principiantes

    Esta ecuación representa la magnitud de la desviación de nuestro proceso de estimación en el valor ponderado actual.

    Si se muestran todos los posibles pesos asignados al número de habitaciones y al área en forma gráfica, se obtiene un gráfico similar al siguiente:

    Aprendizaje automático por diversión: la guía más sencilla para principiantes

    El gráfico de la función de costo es un cuenco. El eje vertical representa el costo.

    El punto más bajo en azul en el gráfico es el lugar donde el costo es más bajo, es decir, el punto más alto significa que nuestro programa está a la menor distancia. El punto más alto significa que nuestro programa está a la mayor distancia.

    Aprendizaje automático por diversión: la guía más sencilla para principiantes

    Por lo tanto, sólo necesitamos ajustar los pesos para que podamos ir hacia el punto más bajo en el gráfico. Si los pequeños ajustes de los pesos nos permiten seguir moviéndonos hacia el punto más bajo, al final llegaremos allí sin tener que intentar demasiados pesos.

    Si recuerdas un poco de cálculo, tal vez recuerdes que si buscas la orientación de una función, el resultado te dice cuál es la inclinación de la función en cualquier punto. En otras palabras, para un punto dado en el gráfico, nos dice que ese camino es un camino cuesta abajo.

    Entonces, si buscamos la derivada de la función de costo para cada peso, entonces podemos restar ese valor de cada peso. Esto nos acercará más al fondo de la montaña. Si seguimos haciendo esto, finalmente llegaremos al fondo y obtendremos el valor óptimo del peso.

    Este método para encontrar el peso óptimo se conoce como gradiente de descenso por volumen, y aquí hay una alta generalización de él. Si quieres entender los detalles, no tengas miedo, sigue profundizando.

    Cuando usas una biblioteca de algoritmos de aprendizaje automático para resolver problemas reales, todo está listo para ti. Pero siempre es útil entender algunos detalles específicos.

    ¿Qué otra cosa has omitido?

    El algoritmo de tres pasos que he descrito anteriormente se llama regresión multilineal. La ecuación de tu estimación es buscar una línea recta que encaje con todos los puntos de datos del precio de la vivienda. Luego, usas esta ecuación para estimar el precio de una casa que nunca has visto, en función de la posición que el precio de la vivienda pueda tener en tu línea.

    Sin embargo, el método que te he mostrado puede funcionar en situaciones sencillas, pero no en todas. Una de las razones es que los precios de las casas no siempre siguen una línea recta.

    Pero, afortunadamente, hay muchas maneras de tratar con esto. Para los datos no lineales, muchos otros tipos de algoritmos de aprendizaje automático pueden hacerlo (como las redes neuronales o las máquinas con vectores nucleares). También hay muchas maneras de usar la regresión lineal con más flexibilidad, pensando en usar líneas más complejas para encajar. En todas las situaciones, el pensamiento básico de encontrar el valor de peso óptimo sigue siendo aplicable.

    Además, he omitido el concepto de congruencia. Es fácil encontrar un conjunto de pesos que pueden predecir perfectamente el precio de la vivienda en tu conjunto de datos original, pero no lo hacen para cualquier casa nueva fuera del conjunto de datos original.

    En otras palabras, el concepto básico es muy sencillo, y se requieren algunas habilidades y experiencia para obtener resultados útiles con el aprendizaje automático. Sin embargo, es una habilidad que todo desarrollador puede aprender.

  • ¿El aprendizaje automático tiene límites?

    Una vez que empiezas a entender que la tecnología de aprendizaje automático es fácil de aplicar para resolver problemas aparentemente difíciles (como el reconocimiento de escritura), tienes la sensación de que si tienes suficientes datos, puedes usar el aprendizaje automático para resolver cualquier problema. Sólo tienes que introducir los datos y ver cómo las computadoras encuentran las ecuaciones que se ajustan a los datos.

    Pero es importante recordar que el aprendizaje automático solo se aplica a los problemas que se pueden resolver con los datos que usted tiene.

    Por ejemplo, si construyes un modelo para predecir el precio de una vivienda basado en la cantidad de plantas dentro de cada casa, nunca tendrá éxito. No hay ninguna relación entre la cantidad de plantas dentro de la casa y el precio de la vivienda. Por lo tanto, no importa lo que intente, la computadora no puede deducir la relación entre las dos.

    Aprendizaje automático por diversión: la guía más sencilla para principiantes

    Solo puedes modelar las relaciones que existen.

  • Cómo aprender en profundidad con el aprendizaje automático

    Creo que el mayor problema con el aprendizaje automático en la actualidad es que está activo principalmente en el mundo académico y en las organizaciones de investigación comercial. No hay muchos materiales de aprendizaje fáciles de entender para las personas que quieren tener un entendimiento general y no ser expertos. Pero la situación está mejorando cada día.

    El curso gratuito de aprendizaje automático en Coursera es muy bueno. Lo recomiendo encarecidamente. Cualquiera que tenga un título en ciencias de la computación y recuerde algo de matemáticas debería entenderlo.

    Además, puedes descargar e instalar SciKit-Learn para probar miles de algoritmos de aprendizaje automático. Es un marco de Python que tiene versiones de caja negra para todos los algoritmos estándar.

Reproducido por el desarrollador de Python