En estadística tradicional un modelo muy utilizado para predicciones, es el modelo de regresión lineal (siempre y cuando los valores permitan aplicar este modelo). En este artículo vamos a tratar de responder una pregunta simple. ¿Un modelo de aprendizaje automático nos puede ayudar a mejorar nuestro estudio de variables? Si necesitas más información sobre el concepto de #RegresionLineal puede utilizar este link.

Para nuestro estudio, vamos a analizar la edad de niños en el eje “x” y la altura de los mismos en el eje “y”. Intentaremos predecir la altura de los niños basada en su edad, aplicando regresión lineal simple. Fuente académica de este ejemplo link.

Vamos a utilizar una planilla de cálculo para explorar la situación de manera tradicional:

Ahora bien, ¿Qué buscamos con el modelo de aprendizaje automático?. Recordando nuestra función lineal nos enfocaremos en W y b.

y = Wx +b

Buscamos aprender para encontrar los mejores W y b. En la siguiente figura se muestra la representación simple de una regresión lineal.

Los mejores W y b reducen el costo. Como muestra la siguiente figura, este será el objetivo del modelo de aprendizaje automático.

Con el menor costo, mejoramos radicalmente la predicción, representado en la siguiente figura:

Nuestro pregunta central: “Vamos a preguntar por la edad y buscamos la respuesta de la altura mejor ajustada”

Llegó la hora de crear el modelo en #TensorFlow:

Valores de ingreso:

X = tf.placeholder(tf.float32, [m, n])
Y = tf.placeholder(tf.float32, [m, 1])

Peso y la perturbación aleatoria:

W = tf.Variable(tf.zeros([n, 1], dtype=np.float32), name=”weight”)
b = tf.Variable(tf.zeros([1], dtype=np.float32), name=”bias”)

Modelo Lineal:

with tf.name_scope(“linear_Wx_b”) as scope:
activation = tf.add(tf.matmul(X, W), b)

Costo:

with tf.name_scope(“cost”) as scope:

cost = tf.reduce_sum(tf.square(activation — Y)) / (2 * m)

tf.summary.scalar(“cost”, cost)

Entrenamiento:

with tf.name_scope(“train”) as scope:

optimizer = tf.train.GradientDescentOptimizer(0.07).minimize(cost)

Luego generamos la sesión en #TensorFlow:

with tf.Session() as sess:

merged = tf.summary.merge_all()

writer = tf.summary.FileWriter(log_file, sess.graph)

init = tf.global_variables_initializer()

sess.run(init)

for step in range(1500):

result, _ = sess.run([merged, optimizer], feed_dict={X: np.asarray(train_X), Y: np.asarray(train_Y)})

writer.add_summary(result, step)

Vamos a iterar 1500 veces el modelo, luego pueden evaluar diferentes configuraciones y desde luego variar el ratio de aprendizaje que por el momento está fijado en 0.07.

print “Prediction for 3.5 years”

predict_X = np.array([3.5], dtype=np.float32).reshape([1, 1])

predict_X = (predict_X — mean) / std

predict_Y = tf.add(tf.matmul(predict_X, W), b)

print “Child height(Y) =”, sess.run(predict_Y)

Esto nos entrega un valor de 0.9737 (expresa la altura en metros) Pueden validar académicamente la solución del ejercicio en este link.

Aquí la implementación de la solución

Además incluí #TensorBoard en nuestro estudio para poder analizar:el modelo con más detalles:

El trazado de la función de costo:

Nota: he seleccionado muchos valores y configuraciones estándares, con el objetivo de simplificar la explicación, luego el lector puede modificar a gusto los elementos de estudio.

Si comparamos nuestro estudio inicial utilizando una planilla tradicional y nuestro modelo automático, es evidente que tenemos mucha mayor exactitud con nuestro modelo automático y además toda la escala para ingerir un volumen mayor de datos y crear mejores predicciones. Están listos para más magia?

Regresión lineal simple en #TensorFlow, aprendizaje automático para mayor exactitud por Nicolas Bortolotti se distribuye bajo una Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional.

Por Nicolas Bortolotti

Profesional especialista en ingeniería Software con título superior en ingeniería de software, fuertes habilidades y experiencia de programación en python, Java, c# y Go (con experiencia basada en desarrollo de proyectos utilizando estas tecnologías) continuo desarrollo de nuevas arquitecturas de software basado en algoritmos y tecnologías para industria líderes con reconocimiento mundial. Especialidades: Desarrollo de Ciclo de Vida de Software, Investigación y Desarrollo, Integración multiplataforma, Proyecto - Equipo de Gestión, Algoritmo de Diseño y Desarrollo, Cloud Computing Architecture, arquitecturas y desarrollo Mobile.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *