Post Top Ad

Your Ad Spot

martes, 18 de agosto de 2020

Escribir su primer código de aprendizaje automático

El mundo entero está lleno de inteligencia artificial en estos días. Algunas personas predicen que podría cambiar la forma en que funciona el mundo en el futuro. Para los desarrolladores, nos presenta una nueva oportunidad de ser parte de un nuevo cambio de paradigma. 
Empecé a aprender IA hace unos dos meses y ha pasado un largo camino desde entonces. Hay muchos desarrollos en IA todos los días. Desde bots que desarrollan su propio lenguaje hasta una IA que puede vencer a los jugadores profesionales en DOTA . Desde automóviles autónomos hasta computadoras que son mejores para diagnosticar pacientes que los médicos experimentados . Hay mucho terreno por recorrer. 
Antes de seguir adelante, debemos comprender que hay muchas disciplinas en la IA. Algunos de ellos son más fáciles de acceder que otros. Obviamente, su primer programa de IA no puede ser hacer un automóvil autónomo. Para los principiantes, es mejor comenzar con una rama del aprendizaje automático   llamada aprendizaje supervisado .
Aprendizaje automático 

¿Qué es el aprendizaje supervisado?
El aprendizaje supervisado, en pocas palabras, significa que usted le da un montón de datos a un programa de computadora y utiliza modelos matemáticos para hacer inferencias sobre esos datos. Este tipo de aprendizaje se utiliza para problemas de regresión y clasificación muy simples , pero es muy útil para resolver muchos problemas del mundo real. 
Empecemos
Considere este conjunto de datos muy simple que he preparado artificialmente solo con el propósito de este ejemplo. Este conjunto de datos sigue tres números X, Y y Z. Existe una relación entre X, Y y Z que aún no conocemos. Nuestro objetivo al escribir este programa es encontrar esta relación. Estos datos también contienen algo de ruido que suele estar presente en la mayoría de los conjuntos de datos reales. 
82.95761557036997,15.49770283330364,53.746988734062285
41.831058370415896,74.6908398387234,76.91731716843984
0.45109458673243674,15.880369177717512,12.400022057356612
65.84526760369872,29.757778929447664,55.432668761221926
38.02804990326463,94.94571562617034,90.18671003364872
... y 95 pares más simples como este.
Para que lo entendamos mucho más fácilmente, pongamos la ecuación en términos matemáticos:
Z = a * X + b * Y 
Nuestro objetivo es encontrar ayb para poder utilizar cualquier otro par de X e Y para calcular Z. Este tipo de problemas se resuelven mediante una técnica matemática llamada regresión lineal. 
Es una de las aplicaciones más sencillas de Machine Learning y más fácil de utilizar. Antes de adentrarnos en los aspectos más difíciles del aprendizaje automático, más adelante, es importante comprender que este ejercicio es muy útil para generar confianza en este campo.
Después de todo, las batallas más grandes se ganan con la confianza de victorias más pequeñas. 
Aplicaciones de la regresión lineal . 
Estos valores de X, Y y Z pueden representar cualquier cosa. Pueden ser tres variables cualesquiera que estén relacionadas mediante una ecuación lineal. Por ejemplo, si recuerda la cinemática de la escuela secundaria, la velocidad de cualquier objeto dado en un momento dado cuando comienza a partir de una velocidad inicial bajo la influencia de la gravedad viene dada por la ecuación v (t) = u + At donde A es una constante aceleración gravitacional que no conocemos.
Si obtenemos muchos valores experimentales para u, v y t, ejecutar una regresión lineal multivariante simple sobre estos valores puede darnos los valores de los coeficientes de u y t. Encontraremos después de nuestro análisis que el coeficiente de u resultará ser 1. Si nuestros datos han de ser precisos, obtendremos el valor de A como 9,8 metros por segundo al cuadrado. 
Si bien esta es solo un área que he utilizado como ilustración, es importante comprender que las relaciones lineales ocurren en todas partes en la naturaleza.
Entrar en el código
Usaremos Javascript para escribir este programa de regresión simple usando un módulo npm llamado smr. Para configurar el proyecto, debe tener nodejs instalado. También podríamos haber usado Python, pero instalar y trabajar con Scipy no está en nuestro alcance por ahora. Gradualmente iremos allí con el tiempo. Siendo por el momento, 
Empiece creando un directorio vacío para su proyecto. 
Instale smr usando npm install smr. 
Cree un nuevo archivo llamado index.js e ingrese el código. 
El código es el siguiente: 
var smr = require('smr');
var regression = new smr.Regression({ numX: 2, numY: 1 })
//read all the data by creating a read stream
var lineReader = require('readline').createInterface({
  input: require('fs').createReadStream('data.txt')
});
//read it line by line and fit it into the regression object
lineReader.on('line', function (line) {
    line = line.split(',')
    regression.push({x:[line[0],line[1]], y:[line[2]]})
    t = regression.calculateCoefficients()
    console.log(t)
});

Puede obtener el conjunto de datos de este repositorio de GitHub que he creado para este código al final de este artículo. 
Ejecutando el código
Ejecutamos el código usando el nodo index.js en el mismo directorio que el código. Antes de hacer eso, recordemos que los datos están en la forma z = a * X + b * Y 
El código ajusta los datos al objeto de regresión e imprime los valores de los coeficientes de ay b. Cuando ejecutamos el código, comenzamos a ver este resultado. 
[[0.5007233183107977], [0.7496919531492985]]
[[0.5007720353300695], [0.749708917362593]]
[[0.500762395739748], [0.7497046748655358]]]
[[0.5007149604193888],
[0.75166669032966], [0.75184966903235]
El valor de a comienza a converger en 0.50 y el valor de y comienza a converger en 0.75. Esto es notable, ya que cuando ve el repositorio, hay un script de Python rápido que se usa para preparar los datos. El valor de ayb que había elegido era de hecho 0,50 y 0,75.
Eso significa que nuestro modelo es bueno y hemos creado con éxito nuestro primer programa de aprendizaje automático. 

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas