TIC, TAC, TEP: Aprender en el siglo XXI

IA, IoT y Tecnologías Información, Aprendizaje y Participación


Deja un comentario

Python para todos: crea tu árbol de Navidad

Abeto de Navidad

Para estas fechas navideñas, nos hemos propuesto jugar un poco con Python para ver cómo podríamos dibujar un árbol de Navidad. Empezaremos con algo muy sencillito y luego probaremos con la librería gráfica Turtle. La idea es animaros a experimentar y crear vuestro propio árbol, según vuestro nivel de conocimientos.

1. Un sencillo bucle for

Para crear este primer árbol usaremos dos sencillos bucles for, y las funciones random y print.

El bucle for que no es más que una estructura de control que repite un bloque de instrucciones, el cuerpo del bucle, un número predeterminado de veces. Cada repetición es una iteración. La sintaxis del bucle for es la siguiente:

for variable in elemento iterable (lista, cadena, range, etc.):
cuerpo del bucle

El cuerpo del bucle se ejecuta tantas veces como elementos tenga el elemento iterable (elementos de una lista o de un range(), caracteres de una cadena, etc.). No es necesario definir la variable de control “i” antes del bucle, pero se puede utilizar una variable ya definida en el programa.

También usaremos la función range, que devuelve una secuencia de números entre el valor inicial (start) y el final (stop), con un intervalo dado (step), y la función print, que muestra el objeto que se le pasa como parámetro en el dispositivo de salida elegido. Su sintaxis es:

print<em>(object(s)</em>, sep=<em>separator</em>, end=<em>end</em>, file=<em>file</em>, flush=<em>flush</em>)

El código para nuestro árbol es el siguiente:

#Primer bucle, range(start,stop,step)
for i in range(1,30,2):
print(('^'*i).center(30))

for leg in range(3):
print(('|||').center(30))
print(('\_____/').center(30))
print(' '+30*'-')
print('(<em>¨</em>¨<em>¨</em>)¡Feliz Navidad! (<em>¨</em>¨<em>¨</em>)')

Y el resultado:

Reconozcámoslo, es un árbol muy sencillo, pero para empezar, no está mal ¿no?. Vamos a por el siguiente.

2. Nuestro árbol con Turtle

Los gráficos de tortuga (Turtle graphics) formaban parte del lenguaje de programacion Logo, desarrollado por por Wally Feurzeig, Seymour Papert y Cynthia Solomon en 1967. Por su sencillez y atractivo, se han usado mucho para enseñar programación utilizado como método para enseñar programación a través de coordenadas relativas a niños y mayores.

Cómo dibujar con Turtle Graphics

La “tortuga (turtle) es un objeto que se desplaza sobre el plano de coordenadas x-y y nos permite dibujar todo tipo de figuras. Tiene 3 atributos esenciales:

  • Posición: Respecto al centro de coordenadas.
  • Orientación: Dirección hacia donde mira la tortuga.
  • Pluma: Rastro que puede dejar la tortuga al desplazarse.

Para desplazar nuestro objeto turtle disponemos de funciones como:

  • forward(distance): Avanzar una determinada cantidad de píxeles.
  • backward(distance): Retroceder una determinada cantidad de píxeles.
  • left(angle): Girar hacia la izquierda un determinado ángulo.
  • right(angle): Girar hacia la derecha un determinado ángulo.

A menos que especifiquemos lo contrario, al desplazarse la tortuga pinta un rastro. Si queremos que se desplace sin dejar rastro, podemos usar las funciones:

  • home(distance): Desplazarse al origen de coordenadas.
  • goto((x, y)): Desplazarse a una coordenada en concreto.
  • penup(): Subir el lápiz para no mostrar el rastro.
  • pendown(): Bajar el lápiz para mostrar el rastro.

También podemos cambiar el color, grosor o forma y tamaño de la punta del lápiz:

  • shape(‘turtle’): Cambia al objeto tortuga.
  • pencolor(color): Cambiar al color especificado.
  • pensize(dimension): Tamaño de la punta del lápiz.

Árbol de Navidad con Python Turtle

Python es un lenguaje que soporta el paradigma de Programación Orientada a Objetos, y en este caso nuestro objeto va a ser el puntero (turtle) que vamos a utilizar para dibujar una figura.

Como siempre, lo primero que tenemos que hacer es importar la librería que permite utilizar las funciones de movimiento de la tortuga.

#Importamos el módulo turtle que permite crear gráficos de tortuga 

import turtle

A continuación, creamos la ventana para dibujar, indicando sus dimensiones y posición. También podemos ponerle el título que queramos.

Para que no quede el fondo blanco, hemos buscado un fondo navideño, y lo hemos guardado en el directorio de trabajo. (Si no tenemos claro cuál es, podemos averiguarlo con os.getcwd()). Para no complicarnos demasiado con los tamaños, hemos ajustado el tamaño de la ventana al de la imagen.

Esta es la imagen de nuestro fondo:

# Generamos una instancia de la clase screen de turtle 
screen = turtle.Screen()

# Con los métodos setup y title establezco propiedades (tamaño y nombre de la ventana)
screen.setup(1200,700,0,0)
screen.title("Nuestro árbol de Navidad en Python")

# Con el método bgpic cambiamos el atributo "fondo" (el fichero png debe estar en el directorio de trabajo, os.getcwd())
screen.bgpic("fondonavidad.png")

# Al definir el tamaño de la ventana ya hemos tenido en cuenta el del fondo que hemos elegido 

El siguiente paso será definir nuestro lápiz o tortuga (“turtle”). Le daremos distinta forma y color según lo que queramos dibujar. Para dibujar el árbol, veremos que las formas estándar “square” y “circle” nos vienen bien.

#Definimos el lápiz con el que vamos a dibujar el árbol y sus adornos


# Generamos una instancia de la subclase Turtle (pen) de turtle, es decir un "lápiz"
# Con los métodos shape, colour y speed, definimos su aspecto y a qué velocidad se va a mover (más adelante, en el bucle)
# Levantamos el cursor para que no pinte hasta que le digamos dónde debe hacerlo

lapiz = turtle.Turtle()
lapiz.up()


Vamos a definir una imagen no estándar para la estrella que corona el árbol. Para ello, usaremos el método register_shape y un gif con tamaño adecuado. (También podíamos haber ajustado el tamaño desde dentro del programa, pruébalo si quieres investigar un poco más). Una vez definido el lápiz como “estrella”, dibujamos la estrella con el método stamp.

# Empezamos por ¡el tejado!: la estrella
# Definimos una forma especial para el "pen" basado en un gif con estrella con fondo transparente mediante el método register_shape 
# El gif, con el tamaño adecuado, en este caso 50*50 píxeles, debe estar en el directorio de trabajo

screen.register_shape("star5.gif")
lapiz.shape('star5.gif')
 

#Lo llevamos a la posición que queremos y pintamos
lapiz.goto(0,310)
lapiz.stamp()

A partir de la estrella, continuamos dibujado el árbol. Para ello usaremos un bucle que dibujará 16 filas de cuadrados verdes. Definimos el lápiz como cuadrado verde, y dibujamos la parte derecha del árbol. A continuación, dibujamos la parte izquierda.

Una vez dibujado el árbol en sí, lo adornaremos con bolas rojas y amarillas. Pondremos bolas rojas en las filas que son múltiplos de 3, por ejemplo, y amarillas en las múltiplos de 5.

Por último, volvemos a definir el lápiz como cuadrado marrón para dibujar el tronco con un último bucle muy sencillo.

(Para elegir los colores, seguro que os viene bien esta página)

# Para pintar el árbol vamos a usar un bucle
# Inicializo k, el árbol lo forman 16 filas de cuadrados verdes

k = 0
for i in range(1, 17):
    y = 30*i
# Definimos lapiz cuadrado y verde #138808
    lapiz.shape('square')
    lapiz.color('#138808')
    lapiz.speed('fastest')
    for j in range(i-k):
        x = 30*j
        
# Dibujamos la parte derecha del árbol, 
        lapiz.goto(x,-y+300)
        lapiz.stamp()
# Dibujamos la parte izquierda del árbol
        lapiz.goto(-x,-y+300)
        lapiz.stamp()

# Colocamos las bolas rojas en las filas que son múltiplos de 5. Definimos lapiz redondo y amarillo (##ffff31)

    if i % 5 == 0:
        x =  30*(j+1)
        lapiz.shape('circle')
        lapiz.color('#ffff31')
        lapiz.speed('fastest')
      
        lapiz.goto(-x,-y+300)
        lapiz.stamp()
        lapiz.goto(x,-y+300)
        lapiz.stamp()        
        k += 3
        
# Colocamos las bolas rojas en las filas impares. Cambiamos color del lapiz a rojo (red)

    if i % 3 == 0:
        x =  30*(j+1)
        lapiz.shape('circle')
        lapiz.color('red')
        lapiz.goto(-x,-y+300)
        lapiz.stamp()
        lapiz.goto(x,-y+300)
        lapiz.stamp() 

# Dibujamos el tronco del árbol. Volvemos a lapiz cuadrado, y color marrón
lapiz.shape('square')
lapiz.color('#cc5500')
for i in range(14,20):
    y = 30*i
    for j in range(2):    
        x = 30*j
        
        lapiz.goto(x,-y+200)
        lapiz.stamp()
        lapiz.goto(-x,-y+200)
        lapiz.stamp()        
        
turtle.exitonclick()

Eh voilá!, ya tenemos nuestro arbolito navideño.

¡Felices Fiestas!

Anuncio publicitario


1 comentario

Grafeno, un supermaterial para IoT

¿Un material un millón de veces más delgado que un cabello humano, 200 veces más fuerte que el acero, transparente, flexible, ligero, gran conductor del calor y de la electricidad y capaz de convertir la energía solar en eléctrica a gran velocidad? No es de extrañar que los dispositivos integrados basados en grafeno se hayan convertido en una de las claves en la evolución del 5Ginternet de las cosas (IoT) y la industria 4.0. En este post vamos a explicar qué es grafeno y cuáles son sus aplicaciones principales en el ámbito del IoT.

¿Qué es el grafeno?

El grafeno es una estructura laminar plana, de un átomo de grosor (se trata del primer material 2D) compuesta por el mismo tipo de átomos que constituye los diamantes o la mina de grafito de un lápiz: átomos de carbono. La diferencia esencial radica en cómo están dispuestos dichos átomos. En el caso del grafeno, densamente empaquetados en una red cristalina en forma de panal de abeja (hexagonal).

Este sencillo vídeo del Proyecto Graphene Flagship , patrocinado por la Unión Europea, explica lo que es el grafeno en menos de 3 minutos.

Aunque las primeras investigaciones sobre el grafeno se remontan a 1859, no hubo avances importantes hasta 2004, cuando los profesores Sir Andre Geim y Sir Kostya Novoselov de la Universidad de Manchester descubrieron y aislaron por primera vez una única capa atómica de carbono. En reconocimiento a tan importante descubrimiento, ambos profesores fueron galardonados con el Premio Nobel de Física en 2010.

Historia del grafeno (Descargar más grande)

Propiedades del grafeno

Gracias a su estructura molecular, el grafeno:

  • Es un material muy duro y resistente
  • Es muy ligero flexible
  • Muy estable cuando es sometido a grandes presiones.
  • Es muy buen conductor del calor como de la electricidad. El grafeno permite que los electrones fluyan mucho más rápido que el silicio
  • Es capaz de generar electricidad a partir de energía solar.
  • Es un conductor transparente, combinando de manera excepcional las funcionalidades eléctricas y ópticas.

Por otra parte, su producción es relativamente barata en comparación con otros materiales.

Aplicaciones del grafeno

Estas propiedades tan interesantes permiten su aplicación a campos tan distintos como la electrónica, aeronaútica, la generación de energía, ehealth, materiales compuestos etc. Veamos algunos ejemplos.

Dispositivos vestibles o «wearables»

La gran ligereza y flexibilidad del grafeno lo hace ideal para la fabricación de dispositivos wearables, como por ejemplo, dispositivos de seguimiento de la salud, sensores ambientales, textiles electrónicos duraderos y fuentes de energía flexibles.

Aeronáutica y tecnología espacial

Las aeronaves construidas con grafeno y otros materiales 2D más finos y ligeros, consumen menos combustible, lo que supone un ahorro en costes una menor huella de carbono. Pero también son más seguras, gracias a los sistemas termoeléctricos de protección contra el hielo basados en el grafeno.

En tecnología espacial, el grafeno se utiliza en sistemas de refrigeración y velas solares -base de los sistemas de propulsión sin combustible de las naves espaciales.

Generación y almacenamiento de energia

La gran conductividad eléctrica, ligereza, estabilidad química y flexibilidad del grafeno y los materiales relacionados (GRM), le permiten jugar un papel clave en los procesos de generación y almacenamiento de energía.

Por ejemplo, el grafeno activado permite el uso de supercondensadores para el almacenamiento de energía y también aumenta su vida útil. Por tanto, una batería de grafeno, ofrece una autonomía hasta diez veces mayor que la obtenida con baterías de litio, para todo tipo de dispositivos móviles. Desde smartphones y tablets, hasta coches eléctricos y todo tipo de sensores.

Su transparencia y capacidad de generar energía eléctrica a partir de la luz solar también se ha estudiado para la generación de ventanas inteligentes. Se trata de ventanas recubiertas por una capa transparente de grafeno, capaces de generar la electricidad suficiente para autoabastecer el edificio.

Materiales compuestos (composites) y revestimientos

Gracias a su gran resistencia, conductividad, flexibilidad, ligereza y capacidad de actuar como barrera, el grafeno no sólo mejora el rendimiento de los materiales actuales, sino que abre camino a nuevos campos de aplicación. Desde los revestimientos antiestáticos y anticorrosivos hasta los compuestos ultrarresistentes y ultraligeros.

Fotónica y optoelectrónica

A medida que las tecnologías de semiconductores convencionales se aproximan a sus limitaciones físicas, se hace preciso explorar tecnologías innovadoras que permitan materializar la visión de de una sociedad global futura conectada en red.

Las propiedades del grafeno lo hacen ideal para la próxima generación de sistemas de comunicaciones ópticas y optoelectrónicas. El grafeno integrado en un circuito fotónico es una tecnología escalable y de bajo costo que puede operar enlaces de fibra a una velocidad de transmisión de datos muy alta. Por ello, jugará un papel protagonista en este ámbito, en aplicaciones que van desde los láseres e interruptores ópticos, hasta la comunicación inalámbricacaptación de energía, y sistemas 5G.

Tecnologías biomédicas

En biomedicina, el grafeno se utiliza, por ejemplo, para crear dispositivos de administración de medicamentos. Su gran conductividad, flexibilidad y ligereza, también hace del grafeno un material muy apropiado en la fabricación de biosensores. De hecho, hay interesantes investigaciones en marcha sobre su aplicación a la ingeniería de tejidos, para la creación de sensores electromecánicos muy sensibles que se implantan en el interior del cerebro.

Por otro lado, su capacidad para captar la luz que el ojo humano no ve podría servir para mejorar la visión de muchas personas, pero también para mejorar los dispositivos de visión nocturna en el sector militar e incluso la seguridad en la conducción.

Electrónica

En el ámbito de la electrónica, las propiedades «estrella» del grafeno son su escaso grosor, su alta conductividad a temperatura ambiente, y su flexibilidad. En una industria donde uno de los objetivos principales es la miniaturización, el grafeno es clave en la fabricación de chipsinterconexiones para comunicación de datospantallas flexibles para la tecnología vestible etc.

Otra aplicación interesante son las antenas NFC flexibles. Este tipo de tecnologías inalámbricas de bajo coste permite trasladar los sensores y dispositivos NFC a la vida cotidiana de forma muy sencilla, abriendo todo un universo de nuevas aplicaciones. Desde aplicaciones relacionadas con el cuidado de la salud, al control de calidad alimentaria o comercio electrónico.

Sensores

Los sensores ultra sensibles basados en grafeno resultan más pequeños, ligeros y menos costosos que los sensores tradicionales. Hay muchos tipos diferentes de sensores. Desde los sensores de gas de base química, y los de ph y contaminación ambiental, hasta los sensores de presión y tensión.

También se pueden crear sensores biológicos capaces de detectar moléculas como el ADN y otras sustancias como la glucosa, el glutamato, el colesterol y la hemoglobina. Por ejemplo, éstos últimos se pueden integrar en sensores vestibles que permiten controlar nuestra salud en tiempo real

El grafeno en IoT

El grafeno, con sus características tan especiales, está llamado a desempeñar un papel importante en el futuro del IoT, ya que permite superar muchas de las barreras relacionadas con esta tecnología. Los sensores de grafeno permiten:

  • Rastrear y registrar cambios en humedad y temperatura
  • Detectar tensiones en los componentes estructurales de un edificio
  • Detectar productos químicos y gases tóxicos
  • Conectarse a una red inalámbrica
  • Obtener su propia potencia (más livianos y rentables por no precisar baterías)

Y, a la vez, son fáciles de producir a gran escala. Por ello, está claro este material va a ser clave en el futuro del IoT.

Y no sólo el grafeno. Las integración con otros materiales 2D también abre un nuevo campo de aplicaciones de detección inalábrica.

Conclusión

Al igual que ahora está de moda hablar de «super-alimentos», se puede decir que el grafeno es un «super-material» que va a estar claramente ligado al futuro del Iot, y va a permitir que incorporemos muchas de sus aplicaciones a nuestro día a día.


1 comentario

¿Cómo hablar a los niños de Inteligencia Artificial?

Niño absorto en un teléfono móvil

Desde la conocida como “generación de los constructores”, los nacidos entre 1925 y 1944, a los pequeños “alfa”, los hijos de los “millenials”, la tecnología ha ido ganando terreno e influencia sobre la vida de las personas. Ya no se trata de una herramienta de investigación o de producción. La “generación alfa”, los nacidos a partir de 2011, y antes que ellos, la “generación Z” (primera década del 2000), son ya auténticos nativos digitales.

La Inteligencia Artificial, la realidad aumentada, los juegos de realidad virtual etc crean un contexto nuevo que, indudablemente, influirá en sus actitudes, hábitos y habilidades cognitivas.  Pero este nuevo contexto implica también nuevos riesgos para los cuales los adultos podemos y debemos prepararles. En este post daremos algunas claves para hablar a los niños sobre la inteligencia artificial de forma que aprendan a disfrutar de sus ventajas, minimizando o al menos siendo conscientes de sus riesgos.

Figura 1: Tabla de generaciones digitales
Figura 1: Tabla de generaciones digitales

La inteligencia artificial y los niños: el problema

En épocas anteriores, la relación de las personas con la tecnología en general, y con la inteligencia artificial en particular, estaba basada en “texto”, normalmente usando lenguajes de programación especializados. Sin embargo, hoy, la inteligencia artificial ha aprendido a hablar e interpretar el lenguaje humano. Así, aunque hablemos con un asistente como si fuera una persona, y le digamos, “Siri, quiero un vídeo de Pepa Pig”, en ningún momento vamos a dudar de que Siri NO es una persona. Sin embargo, se está viendo, que, para los pequeños de la generación alfa, los límites entre ellos mismos y la tecnología que les ha rodeado desde siempre, no están tan claros.

Siri ofrece vídeos de Peppa Piga como respuesta
Figura 2: “Siri, quiero un vídeo de Pepa Pig”,

Sue Shellenbarger, columnista del Wall Street Journal, advierte que “muchos niños piensan que los robots son más inteligentes que los humanos o les otorgan poderes mágicos”.

Un estudio llevado a cabo en 2018 sobre el juguete-robot Cozmo, un juguete diseñado para aparentar “tener alma”, mostraba cómo niños entre 4 y 10 años, pensaban que el juguete era “más inteligente” que ellos, e incluso que era capaz de tener sentimientos.

Figura 3: Robot Cozmo (fuente: amazon.com)
Figura 3: Robot Cozmo (fuente: amazon.com)

En la promoción del juguete, Boris Sofman, uno de los fundadores de Anki, la compañía que los fabrica, afirmaba: “Si no juegas con Cozmo por una semana, te sentirás como si no hubieras jugado con tu perrito por una semana”

¿Cómo no se van a sentir confundidos los pequeños, cuando sus juguetes están diseñados de esta forma?

Otros estudios muestran cómo niños entre 9 y 15 años se sentían  emocionalmente vinculados a robots de aspecto humano, y pensaban que “podían ser sus amigos”; o bien, cambiaban sus respuestas a preguntas tipo ”¿está bien pegar a otros niños?” según “la opinión” de su muñeca. “Mi muñeca dice que “está bien”.

La solución

Como para casi todas las cosas, la mejor forma de ayudar a los pequeños a definir límites entre la tecnología y la realidad pasa por la educación.

Investigadores del MIT están trabajando con niños de distintas edades para ver cómo podemos los adultos ayudarles a percibir la inteligencia artificial de forma correcta. Aunque parezca precipitado, y ciertamente lo es, cuatro años, son muy pocos, niños de esta edad ya eran capaces de comprender que, aunque el juguete les gane a un juego, no es más inteligente que ellos.

El curso de ética de la IA del MIT

Entre los 10 y 14 años, los niños empiezan a desarrollar pensamientos de alto nivel y lidiar con razonamientos morales complejos. Y también a esa edad, la mayoría disponen de telefónos inteligentes con todo tipo de aplicaciones basadas en IA.

El MIT ha desarrollado un curso de ética de la IA para niños, en el que les enseña cómo funcionan los algoritmos basados en IA, y cómo puede haber intenciones determinadas tras las respuestas. Por ejemplo aprenden por qué Instagram les muestra determinado anuncio, o reciben una información y no otra en su app de noticias.

También les retan a diseñar un “algoritmo” en forma de receta para el mejor bocadillo de mantequilla de cacahuete o juegan al bingo (AI Bingo). En definitiva, aprenden de un modo sencillo y divertido, que la tecnología, los robots, las computadoras… no son más que herramientas, rápidas, precisas, potentes, pero no hacen más que seguir los modelos, o los algoritmos con los que los hemos programado.

Algunos consejos sencillos para ir poniendo en práctica

Los adultos somos una referencia fundamental para los niños, especialmente los padres. Y, sin necesidad de hacer ningún curso del MIT (ni ellos ni nosotros), podemos ayudarles a comprender los límites de la IA con estos sencillos consejos propuestos por Sue Shellenbarger

  • No te refieras a los asistentes, robots, o juguetes basados en IA como si fueran personas
  • Intenta transmitirles una imagen positiva sobre los beneficios de la IA en general. Nos hacen la vida más fácil en muchos aspectos.
  • Despierta su curiosidad sobre cómo se diseñan y construyen los robots
  • Ayúdales a entender que la “fuente” de la inteligencia de los dispositivos basados en IA son los humanos
  • Plantéales aspectos éticos sobre el diseño de la IA con preguntas como: ¿Deberíamos construir robots que, (como intentamos enseñarles a ellos), sean corteses y pidan las cosas por favor, saluden, den las gracias etc?
  • Fomenta su espíritu crítico respecto a la información que reciben a través de estos juguetes o dispositivos inteligentes; al igual que la recibida de redes sociales e internet.
  • Ten mucho cuidado con los juguetes que se comercializan como el “mejor amigo” de un niño. Pueden llegar a crear dependencias no deseadas.

Y lo más importante, intenta rebatir, siempre que surjan, ideas tipo “las máquinas son superiores a los humanos”“los robots acabarán con los humanos” etc, porque pueden resultar perjudiciales para las ingenuas mentes de los más pequeños.


3 comentarios

Tu primer experimento en Azure ML Studio: El caso del Titanic (III): Entrenando el modelo

Bienvenidos a la tercera  entrega del tutorial ejemplo de creación de un modelo de Machine Learning (ML) en Azure ML Workplace aplicado al dataset de pasajeros del Titanic. Tras la introducción a la herramienta que hicimos en la primera parte, en la segunda, creamos el experimento, y llevamos a cabo todos los procesos de  carga, depuración y tratamiento de los datos, previos a la creación del modelo predictivo.  Ahora, es el momento de construir el modelo. 

4. Construcción del Modelo

En el primer post del experimento explicamos lo que eran los datos de entrenamiento y los datos de test (“Concepto Training Data vs Testing Data). Ahora vamos a dividir nuestro dataset de forma aleatoria en esos dos conjuntos de datos. Usaremos el 70% de los datos como datos  de entrenamiento, y el 30% que nos reservamos nos servirá para evaluar la eficacia de  nuestro modelo a la hora de predecir valores futuros o desconocidos. Para ello, usaremos el modulo de “Split”, siguiendo estos pasos: 

  • En el menú “Data Transformation” (a la izquierda) seleccionamos “Sample and SplitSplit Data”. 
  • Lo conectamos con el elemento anterior del flujo  (“Select columns in Dataset”)
  • En el menú “Properties”, a la derecha damos al parámetro “fraction of rows in the first dataset” el valor 0.7. Esto significa que el 70% de los datos se asignarán de forma aleatoria al nodo de salida izquierdo (“1”), mientras que el 30% se asignará al nodo derecho (“2”) Esta partición de los datos en proporción 70/30 es un valor habitual en Machine Learning, pero podemos definir distintas proporciones según el problema.
Imagen de consulta de la búsqueda visual
Figura 1: Añadimos el módulo Split al flujo.
Figura 2 : Propiedades del módulo Split

 

4.1 Selección del algoritmo

 Ya ha llegado el momento de identificar qué tipo de problema tenemos entre manos, y en qué tareas conocidas lo podemos descomponer. Para ello, nos puede resultar muy útil releer estos post de la serie de Machine Learning: 

 Así, podemos ver que se trata de un caso de aprendizaje supervisado, donde la clase de respuesta o variable objetivo es un valor categórico “0”=superviviente“1”=fallecido. Por tanto, estamos ante un problema de clasificación binario o de clase dos. Podemos consultar, por ejemplo, la cheat-sheet de algoritmos machine Learning de Azure  para intentar determinar qué algoritmo puede funcionar mejor en este caso. Hemos “recortado” la parte que nos interesa para verlo mejor. Por tanto, desde el botón START, seguimos la ruta, predecir categorías (“predicting categories”), dos categorías y vemos que nos propone una serie de algoritmos, indicando sus características más relevantes.  Vamos a probar con el algoritmo de árbol de decisión.

Figura3: Extracto de la cheat-sheet de algorimos de Azure ML.
Figura 3: Extracto de la cheat-sheet de algorimos de Azure ML.

 El concepto en el que se basan los árboles de decisión es, dado un conjunto de datos de entrada, con unos atributos bien definidos, puede ser clasificado totalmente basándose en decisiones sobre cada uno de ellos. Cada nodo de un árbol es una pregunta a la que hay que responder, y de él salen distintas ramas hacia cada una de las respuestas posibles. Una vez hemos llegado a los nodos “hoja” (los finales), el algoritmo ha clasificado correctamente el dato de entrado o ha dado con la decisión correcta. Visualmente lo veríamos así. En cada nodo se plantea una pregunta. En este caso, las preguntas clasifican por sexo, por edad y por tener familiares directos embarcados. Clasifica cada caso según estos parámetros y les asigna la etiqueta “Survived” o “Died”. Bajo cada etiqueta, tenemos la probabilidad de supervivencia y el porcentaje de casos observados. Así, según este diagrama, veríamos que un 36% del pasaje eran mujeres, y su probabilidad de supervivencia fue del 0,73. El 61% de los pasajeros eran hombres y el 2% niños. Entre los niños, las probabilidades de supervivencia eran mucho mayores (0,89) entre aquellos que iban acompañados de familiares directos. Aunque se suele decir aquello de “Las mujeres y los niños primero”, parece ser que en este caso fue “Los niños y los hombres primeros”, ya que, entre los hombres, la probabilidad de supervivencia fue del 0,83.

Figura 4: Ejemplo de visualización de un árbol de decisión.
Figura 4: Ejemplo de visualización de un árbol de decisión.

Los árboles de decisión son muy populares porque son sencillos de construir y de comprender, siendo a la vez muy eficientes. Por eso, tras ver este ejemplo de visualización de uno de ellos, vamos a ver qué resultados obtenemos a aplicar este algoritmo al dataset de nuestro experimento. 

4.2 Comienza el “entrenamiento”.

Figura 6: Agregamos el módulo correspondiente al algoritmo.

Para seleccionar el algoritmo, agregamos el módulo desde “Machine Learning/Initialize Model/Classification”. Aunque nos podría funcionar cualquier de los algoritmos de clasificación de dos variables, vamos a elegir el algoritmo “Two-class decission forest”.

Figura 5: Elegimos el algoritmo del menú Machine Leaning.
Figura 5: Elegimos el algoritmo del menú Machine Leaning.
Figura 6: Agregamos el módulo correspondiente al algoritmo.
Figura 6: Agregamos el módulo correspondiente al algoritmo.

Ahora, agregamos un módulo de entrenamiento (desde “Machine Learning/Train/Train Module”) y lo conectamos al algoritmo y a la parte izquierda del módulo Split, que correspondía a los datos de entrenamiento (el 70% del dataset).Como en este caso no sólo queremos predecir el valor de una variable (si la persona sobrevivió o no al naufragio), sino que también queremos predecir la probalilidades de supervivencia que tenía un individuo determinado según el valor de ciertas variables, vamos a agregar también un módulo de Scoring. Desde la ruta “Machine Learning/Score/Score Module”. Conectamos el módulo de Scoring al módulo de entrenamiento del modelo, y a los datos “reservados” (el 30% que corresponde a la salida derecha del módulo Split data). Si tenemos dudas sobre qué lado del módulo es el que corresponde,  siempre podemos visualizar los datos desde el menú contextual del módulo Split.

Al conectar los datos de test al modelo entrenado, vemos cuán bueno es el modelo que hemos entrenado con el training test para clasificar los casos nuevos que habíamos separado del dataset original. Comparando los valores reales de ese conjunto de datos (sabemos de cada individuo si sobrevivió o no), con lo que ha predicho el modelo, podemos calcular su precisión.

Figura 7: Conectamos los módulos Train Model y Score Model.
Figura 7: Conectamos los módulos Train Model y Score Model.

 Por último, como vamos a querer evaluar el modelo, añadimos a continuación un módulo de evaluación desde “Machine Learning/Evaluate/ Evaluate Model” y lo conectamos con el de Score. Una vez hecho esto, ponemos el modelo a trabajar pulsando “Run”.

4.3 Evaluamos el modelo

 Cada problema en Machine Learning tiene un objetivo diferente. Por tanto, las prioridades a la hora de evaluar si el rendimiento es bueno o malo se basarán en distintas métricas. En este caso, vamos a elegir maximizar el área bajo la curva RoC (RoC Auc). Explicar cómo se utilizan las curvas ROC para evaluación de modelos queda fuera del alcance de este post (haremos uno específico). Pero, por ahora, nos basta con tener en cuenta que este área posee un valor comprendido entre 0,5 y 1, donde 1 representa un valor diagnóstico perfecto y 0,5 es una prueba sin capacidad discriminatoria diagnóstica. En diagnósticos médicos, si el AUC es 0,8 significa que existe un 80% de probabilidad de que el diagnóstico realizado a un enfermo sea más correcto que el de una persona sana escogida al azar. Por esto, siempre se elige la prueba diagnóstica que presente mayor área bajo la curva.

Figura 8: Curvas ROC AUC (By UPO649 1112 prodgom (Own work) [CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0)%5D, via Wikimedia Commons ).

 Como valores de referencia para evaluar un modelo por este método tenemos:

  • [0.5, 0.6): Test descartable, malo
  • [0.6, 0.75): Test regular.
  • [0.75, 0.9): Test bueno.
  • [0.9, 0.97): Test muy bueno.
  • [0.97, 1): Test ¿demasiado bueno?

 En el módulo “Evaluate Model/evaluation results/visualize”, podemos ver la curva ROC, la proporción de Falsos Positivos/Falsos Negativos (ver post sobre “Tipos de error en ML”), el valor AUC y otras métricas. En concreto, el valor AUC es de 0.814, es un valor bueno.

Figura 9: Valor AUC para este modelo
Figura 9: Valor AUC para este modelo.

 ¿Cómo podríamos mejorar este valor?. Por ejemplo, ajustando los parámetros del algoritmo. Si nos vamos al módulo del algoritmo, podemos definir propiedades como el número de árboles que queremos que cree, la profundidad, el tipo de muestreo etc. En un futuro post específico sobre este algoritmo los veremos con detalle.  

Figura 10: Menú de ajuste de parámetros del modelo.
Figura 10: Menú de ajuste de parámetros del modelo.

  Si visualizamos el módulo “Train Model” (desde su menú contextual) podemos incluso ver los árboles que ha creado, preguntando en cada nodo sobre diferentes parámetros.

Figura 11: Visualización de un detalle de uno de los árboles que ha construido el modelo.
Figura 11: Visualización de un detalle de uno de los árboles que ha construido el modelo.

4.4  Comparamos con otros modelos

 Si queremos comparer nuestro modelo con otro basado en un algoritmo diferente, no tenemos más que elegir otro algoritmo, copiar y pegar los módulos que “Train Model” y “Score Model” que ya teníamos, y conectarlos entre ellos y con los conjuntos de datos de la misma forma que hemos hecho antes. La salidad del “Score Module” la llevamos al “Evaluation Module” que teníamos anteriormente y así podemos comparar el rendimiento de dos modelos de machine Learning que hemos entrenado por separado. 

Figura 12: Probamos con otro algoritmo.
Figura 12: Probamos con otro algoritmo.

 El Nuevo valor de AUC con el modelo “Two-Class Boosted Decision” es ligeramente superior, pero en este caso, al ser tan pequeña la diferencia, sería conveniente tener en cuenta otros valores como la exactituc (“Accuracy”) o la precisión (“precisión”). 

Figura 13: Nuevo valor AUC con el segundo algoritmo.
Figura 13: Nuevo valor AUC con el segundo algoritmo.

 En este ejemplo, el mejor algoritmo teniendo en cuenta estas últimas métricas, sería el Two class decisión forest.Et voilà. Hemos construido nuestro primer modelo machine Learning en Azure ML Studio, lo hemos entrenado con el dataset del Titanic, hemos analizado su rendimiento comparándolo con el de otro algoritmo distinto y ya, sólo nos quedaría operativizarlo. 

En el próximo post, cerramos la serie y probamos nuestro modelo con el dataset de Test que nos descargaremos de Kaggle.

¡No te pierdas el final de nuestro experimento!

Puedes encontrar la serie completa aquí:


Post publicado en ThinkBig Empresas en 2017. Habrá cambios en el software, pero se puede aplicar la misma dinámica a la nueva versión.


3 comentarios

Tu primer experimento en Azure ML Studio: El caso del Titanic (II): Preparando los datos.

RMS Titanic departing Southampton on April 10, 1912.(fuente)

Continuamos con el tutorial de ejemplo de creación de un modelo de Machine Learning (ML) en Azure ML Workplace aplicado al dataset de pasajeros del Titanic. Tras la introducción a la herramienta que hemos hecho en la primera parte, en ésta segunda, crearemos el experimento, cargaremos los datos y haremos los procesos de depuración y preparación necesarios antes de crear nuestro modelo predictivo.


1 Creamos un nuevo experimento.

Accedemos al espacio de trabajo MS Azure Machine Learning Studio, donde todavía no tenemos creado ningún experimento:


Figura 1: Creamos un nuevo experimento.

Seleccionando el signo “+” que aparece en la parte inferior izquierda, creamos un nuevo experimento en blanco.


Figura 2: Creamos un experimento desde cero.

Le damos un nombre fácilmente identificable, por ejemplo: “Titanic: predicción de supervivencia”. también podemos introducir una breve descripción de experimento que puede ser de gran utilidad si después lo compartimos con otras personas.


Figura 3: Creamos un experimento desde cero.

2 Cargamos los datos

Una vez hemos añadido el nombre, cargamos el dataset. Para ello, nuevamente seleccionamos el signo “+”, pero ahora elegimos agregar “DATASET”, desde fichero local.


Figura 4: Agregamos el conjunto de datos desde un fichero local.

Indicamos la ruta del fichero y su formato (puede ser csv con o sin cabeceras, texto plano, fichero zip, o un objeto/Workspace R). En nuestro ejemplo, es un fichero csv.


Figura 5: Elegimos el formato .csv.

En el espacio de trabajo nos aparece el elemento representado el conjunto de datos que acabamos de cargar “train.csv”:


Figura 6: Vemos los datos ya cargados en el espacio de trabajo.

El dataset del Titanic tiene 891 filas. Cada una de ellas corresponde a un pasajero del RMS Titanic en el viaje inaugural del famoso transatlántico, que se hundió la noche del 14 de Abril de 1912. De los 223 personas que iban a bordo, 1514 murieron aquella noche, lo que convierte a esta tragedia en uno de los mayores naufragios de la historia ocurridos en tiempo de paz. Cada una de las columnas (12) registran atributos sobre demográficos y relacionados con el tipo de pasaje: identificador de usuario, edad, género, número de parientes a bordo, identificador de billete, clase, precio, camarote asignado, puerto de embarque y, la variable que queremos predecir con el modelo (target variable), “superviviente” o “no superviviente”.

Todo el mundo conoce la historia del naufragio del Titanic, pero seguro que no es tan conocido el hecho de tengamos tanta información sobre los pasajeros de aquel infausto viaje. En la web Encyclopedia Titanica, podemos humanizar el ejemplo, y ver la lista de pasajeros, sus edades, incluso sus fotos.


Figura 7: Listado de pasajeros.

3 Tratamiento de los datos: exploración y pre-procesamiento.

3.1 Reducción de columnas

Vamos a ver qué aspecto tiene el dataset. Nos interesa identificar y eliminar las columnas que no aportan valor, ya que pueden añadir ruido o generar correlaciones falsas. Por ejemplo, las columnas PassengerID, el nombre (a veces se usa para averiguar el género, pero en este caso ya lo sabemos), el número de serie del billete, o el número de camarote. Veamos cómo hacerlo.

Desde el menú contextual del elemento, elegimos: Dataset/Visualize


Figura 8: Visualizamos los datos.

Desde esa ventana podemos ver detalles como el número de filas y columnas, sus nombresestadísticas como el tipo de variable (”Feature Type”), cuántos valores faltan (“Missing Values”), comparar unas columnas con otras para ver si puede haber alguna correlación (Histogram/Compare to) …

Así, podemos ver que la columna que indica el camarote “Cabin”, tiene demasiados valores vacíos (687). Por tanto, en nuestro caso, que es una primera aproximación, parece una excelente candidata para eliminar.


Figura 9: La columna “Cabin” tiene 687 valores vacíos.

En el caso de la edad, por ejemplo, tenemos una variable numérica. Podríamos plantearnos sustituir los valores que faltan por valores estadísticos como la media (mean), o la mediana (median), y luego analizar cómo afecta a los resultados la sustitución por un valor u otro.


Figura 10: La columna “Edad” es de tipo numérico. Vemos su media y su mediana.

Una vez decididas qué columnas vamos a eliminar, procedemos. En el menú “Data Transformation/Manipulation”, elegimos la opción “Select columns in a Dataset”, con lo que se agrega un nuevo módulo al flujo. Lo “conectamos” con el dataset que ya teníamos cargado.


Figura 11: Usaremos el menú “Manipulation” para eliminar algunas columnas.

Al seleccionar el elemento “Select Columns in Dataset”, nos aparece, a la derecha, un panel de propiedades desde donde podemos lanzar el selector de columnas “Launch Column selector”. Seleccionamos las que queremos eliminar:


Figura 12: En la columna de la derecha deben quedar las columnas sobre las que queremos actuar.

Si queremos ver el resultado, podemos ejecutar la operación seleccionado “Run” y después volver a visualizar como hemos hecho la primera vez.


Figura 13: Ejecutamos la operación deseada (puede hacerse por partes).

3.2 Corrección de metadatos – Definición de variables

En este punto tenemos que pararnos a observar el tipo de variables con las que estamos trabajando, ya que el tratamiento matemático va a ser muy distinto según sean valores continuos o no-continuos. Definiremos como variables categóricas aquellas cuyos valores son “no continuos”.

Por ejemplo, la variable Survived sólo tiene dos valores posibles: “1” =superviviente y “0”= fallecido. Un valor “0,5” no tendría sentido (No, no, “medio-muerto” no nos vale).

¿Y qué columnas deberíamos definir como categóricas?

Las candidatas más aparentes son: Survived, Pclass, Sex, y Embarked. Cuando el valor es un literal, como en el caso del sexo (“male” o “female”), no hay dudas, pero cuando es numérico, como en el caso de Pclass, puede no estar tan claro. Esta variable distinguía si el pasaje era de primera (“1”), segunda (“2”), o tercera clase (“3”). Por tanto, aunque sea numérica, no son valores continuos, un valor decimal no tendría sentido. Es también categórica.

Para definir el tipo de variable que representa cada columna usamos el editor de metadatos. Para ello, seguimos los siguientes pasos:


Figura 14: Identificamos las variables categóricas.
  1. En el menú “Data Transformation” (a la izquierda) seleccionamos “Edit Metadata”
  2. Lo conectamos con el elemento anterior del flujo
  3. Lanzamos el selector de columnas (en el menú de la derecha, “Select columns in Dataset”) para agregar las columnas que hemos elegido y, en el campo “Categorical”, seleccionamos la opción “Make Categorical”

3.3 ¿Qué hacemos con los valores que faltan?

Todos los datasets tienen campos vacíos y hay que tomar una decisión sobre qué hacer con ellos para que no tengan un impacto negativo en los resultados. Normalmente se aplican tres estrategias distintas: sustituirlos por otro valor, excluirlos de la selección o directamente, eliminarlos.

Lo más habitual es intentar sustituir los valores en blanco por otro valor, para minimizar en lo posible la pérdida de información. Cuando se trata de valores numéricos, se suele reemplazar por valores estadísticos como la media, la mediana o la moda. En ML se suele usar mediana, porque respeta la distribución de los datos y queda menos afectada por “outliers” (valores anómalos).

Si recordamos, la mediana de un conjunto finito de valores es aquel valor que divide al conjunto en dos partes iguales, de forma que el número de valores mayor o igual a la mediana es igual al número de valores menores o igual a estos. En un diagrama de caja (“box plot”) lo visualizamos así:


Figura 15: Ejemplo de representación box plot de un conjunto de datos.

En el apartado 3.1 Visualización de columnas, ya vimos cómo detectar los campos vacíos. Podemos ver que, para la columna “Age” (Edad), el número de valores que faltan es muy alto. Sin embargo, para “Embarqued” sólo nos faltan dos valores.


Figura 16: Las estadísticas muestran un número muy elevado de “missing values” en la columna Age.

Como vemos también la variable “Age” es de tipo numérico (Feature Type: Numeric Feature), por tanto, resulta muy sencillo sustituir los valores que falta por la mediana (que, en este caso es “28”).

Sin embargo, la variable “Embarked” es categórica (cadena de caracteres). Podríamos sustituir los valores vacíos por “U” de “Unkonwn”, por ejemplo. Pero al ser sólo dos los valores que faltan, resulta más lógico asumir una pérdida de un 0.2% de los datos y, por tanto, decidimos eliminarlos.

Para hacer estos cambios, podemos aplicar un módulo de limpieza “Cleaning”. Si no sé qué opción de menú es, puedo localizarla fácilmente usando el buscador:


Figura 17: Para localizar una opción concreta en el menú, podemos usar el buscador.

Como antes, los pasos son parecidos:

  1. Agregamos el módulo (“Clean Missing Data”)
  2. Lo conectamos con el módulo anterior del flujo
  3. Lanzamos el selector de columnas (en el menú de la derecha) para agregar la columna “Age” y le indicamos que sustituya por la mediana (“Replacement Value”=28). Ojo que las columnas seleccionadas son las que aparecen a la derecha del selector. Hay que pasar todas al lado izquierdo, salvo “Age”.

Figura 18: Sustituimos por la mediana.

Hacemos la misma operación para eliminar los valores que faltaban en la columna “Embarked”, solo que, en este caso, el “Cleaning Mode” elegido es “Remove Entire Row”. En caso de duda sobre qué valores dar a los parámetros, siempre podemos consultar la ayuda rápida que aparece justo debajo:


Figura 19: En la parte inferior derecha siempre tenemos una “ayuda rápida”.

Para conocer con más detalle los distintos métodos de depuración de datos, podéis consultar un ejemplo muy completo en la galería de Cortana intelligence

3.4 ¿Qué valores queremos predecir?

El último paso que nos queda, antes de construir nuestro modelo ML es definir cuál es el atributo con el que vamos a entrenar el modelo para que sea capaz de hacer predicciones sobre su valor (nuestro “target variable”). Para ello, recurriremos nuevamente al módulo “Metadata Editor”. Seleccionaremos la columna “Survived”, ya que queremos predecir la supervivencia (o no) de un pasajero, basándonos en los otros datos disponibles en el dataset. Descrubir, en definitiva, si había un “patrón de supervivencia”. Después, en el campo “Fields” lo definimos como “Label” (sólo puede haber uno por dataset)

Con esto, ya tenemos todo preparado para construir nuestro modelo ML. El siguiente paso, la elección del algoritmo, en el próximo post. ¡No te lo pierdas!

Puedes seguir el experimento completo en los siguientes enlaces:


Post publicado en ThinkBig Empresas en 2017. Habrá cambios en el software, pero se puede aplicar la misma dinámica a la nueva versión.


Deja un comentario

La clave de una cultura de aprendizaje efectivo: Buenos profesores

He visto una animación muy interesante (en inglés) de AITSL (Australian Institute for Teaching and School Leadership) donde identifica claramente a los «Buenos Profesores» como la clave del éxito para desarrollar esa cultura del «aprendizaje a lo largo de la vida» que se nos hace tan necesaria para sobrevivir en las cambiantes Sociedades del Conocimiento. El Sistema Educativo no puede estar al margen de la Sociedad en los tiempos en los que los Aprendizajes Informales, o incluso el «Aprendizaje Invisible», roban protagonismo al Aprendizaje Formal tan sometido muchas veces a una excesiva rigidez que lo aleja de la realidad.

 Tanta información interesante en apenas dos minutos… ¡Disfrutadla!

 Animación AITSL

 

 

¿Qué hace un diseñador instruccional?

Un proyecto formativo que no esté basado en un adecuado diseño intruccional está sin duda alguna abocado al fracaso. Esto es así tanto cuando hablamos de formación online como tradicional, aunque sus efectos son mucho más evidentes en el primer caso. Sin embargo, el diseño intruccional es un campo poco conocido y en constante evolución. La convergencia de cambios culturales, nuevas tecnologías, los avances en la comprensión sobre cómo funciona nuestro cerebro y cómo aprenden las personas suponen una auténtica revolución en este campo del conocimiento.

Visión tradicional del diseño Instruccional.

Tradicionalmente, el diseño intruccional se refiere a un proceso sistemático de crear o seleccionar contenidos formativos. El objetivo es la mejora de habilidades, conocimientos y aptitudes de forma medible. Está enfocado a cursos promocionados por estamentos superiores en las organizaciones y con el objeto de cumplir con normativas obligatorias o solucionar determinadas necesidades formativas.

Sin embargo, actualmente, un diseñador intruccional debe trabajar desde una perspectiva más amplia. Debe analizar detalladamente el problema y decidir si la solución más adecuada se basa en una acción formativa o en otro tipo de experiencia o estrategia. Así el aprendizaje puede ser formal o informal, iniciado por el propio aprendiz (estrategias “pull”) o formal, recibido por este en un momento establecido (estrategias “push”). El diseñador intruccional debe facilitar experiencias de aprendizaje  que, basadas en psicología educativa y  en el conocimiento sobre cómo funciona el rendimiento humano, a veces consistirán en manejar determinados materiales y otras, en realizar determinadas experiencias.

 «Un modelo de diseño   instructivo no se debe reducir a justificar los medios técnicos incorporados,   sino que requiere un análisis exhaustivo del escenario y del método en   función de una serie de circunstancias. Por lo tanto el método es externo   a la tecnología, externo también a las posibilidades didácticas, y   consiste más bien en una reflexión sobre el modo (cómo) de conjuntar ambos   aspectos, partiendo de unos contenidos (qué), persiguiendo unos objetivos   (para qué), explicitando las razones (por qué), la secuencia y la   temporalización de la enseñanza (cuándo), teniendo en cuenta los recursos   (cuánto) y los agentes que intervienen en el proceso (quiénes)»MORENO,   F., BAILLY-BAILLIÈRE, M. (2002). Diseño   instructivo de la formación on-line. Barcelona: Ariel Educación.

Por tanto, la reflexión sobre la respuesta más adecuada a estas preguntas: ¿Qué objetivos perseguimos? ¿Qué contenidos vamos a utilizar? ¿Por qué esos objetivos y contenidos?¿De qué recursos físicos/tecnológicos/temporales disponemos ?¿Quiénes intervienen en el proceso y de qué forma?, nos permitirá elegir la mejor estrategia intruccional utilizando la tecnología o metodología didáctica que mejor se adapte a cada caso.

Aunque la visión tradicional del Diseñador Instruccional es todavía imperante en la mayoría de las empresas, el gran incremento de dispositivos móviles personales, la conectividad propiciada por las redes sociales y la presencia ubicua de Internet están poco a poco facilitando ese cambio de perspectiva en la función de formación y desarrollo.

Los hechos que sustentan este cambio son los siguientes:

  • La formación online no para de crecer. Una sólida infraestructura de acceso a Internet en gran parte del mundo permite que la formación online se abra camino. Los ahorros en costes y tiempo de este tipo de formación llevarán a los diseñadores instruccionales a producir formación basada en tecnologías.
  • La expansión de las tecnologías móviles harán necesarios diseños específicos (Mobile Learning) y desarrollos para el soporte de aplicaciones de rendimiento.
  • Las herramientas de aprendizaje de las redes sociales (Twitter, Facebook, foros, blogs y curación de contenido) permiten estar al día, facilitan la interacción social de la que carecen los métodos formales de aprendizaje online, y son, en resumen, pilar fundamental del aprendizaje informal. Es muy interesante conocerlas y aplicar su potencial en el entorno del aprendizaje corporativo.
  • Las universidades se han dado cuenta de que los programas a distancia atraen de forma efectiva a estudiantes que no pueden participar en los programas tradicionales. Incluso los cursos gratuitos o COMA (MOOCs) permiten ampliar el alcance de la universidad, le dan una gran visibilidad
  • Las tecnologías educativas están en un momento dorado. Desde la guardería hasta la Universidad, los alumnos aprenden con juegos educativos, realizan trabajos de  investigación en línea, usan dispositivos móviles para aprender y comunicarse. Toda esta educación basada en tecnologías precisa de un buen diseño instruccional de base.
  • Aprendizaje para toda la vida. Cuando la información cambia tan deprisa, los conocimientos y habilidades necesarios para ejercer muchos trabajos requieren de un aprendizaje continuo. Será necesario crear experiencias educativas para los “lifelong learners”.

El proceso del Diseño Instruccional

Aunque se pueden usar distintas aproximaciones para el desarrollo de experiencias de aprendizaje, el denominador común es el hecho de tratarse de un proceso sistemático e iterativo. Normalmente consta de:

  • Análisis de requerimientos y especificaciones
  • Diseño y prototipo de solución
  • Desarrollo y producción
  • Control de calidad, testeo, evaluación y ajustes

Hay distintos modelos. Uno de los más conocidos es ADDIE, (Análisis, Diseño, Desarrollo, Implementación, y Evaluación). También es muy conocido el Rapid Learning, aproximación al modelo que surgió con el desarrollo de herramientas como Articulate Presenter, iSpring Pro, Lectora Snap o Adobe Captivate. Estas herramientas permiten generar contenidos formativos de forma rápida y ágil (sin necesidad de ser experto en programación). También hay otro proceso de desarrollo iterativo llamado Agile, basado en una conocida metodología de software.

La elección de la solución más adecuada en cada caso dependerá de los destinatarios de la formación, sus necesidades formativas y su entorno.

Connie Malamed, editora del sitio «The eLearning coach» explica de una forma sencilla las ideas básicas sobre el Diseño Instruccional.


6 comentarios

El diseño instruccional: ese gran olvidado

Está claro que vivimos un momento revolucionario de aplicación de las tecnologías a la formación y educación. Hay una gran oferta formativa muy variada: en formato online (eLearning) , orientada a explotar las ventajas de los dispositivos móviles (mLearning), dosificada en pequeñas píldoras formativas u ofrecida de forma masiva y gratuita por las universidades tradicionales (MOOC o COMA). También empezamos a hablar del aprendizaje social, los PLEs etc…

Pero ¿Por qué se habla tan poco del diseño instruccional? ¿Por qué es éste un perfil casi desconocido en nuestro mercado laboral cuando está tan solicitado en otros países mucho más avanzados en tecnologías educativas?. Creo que cuando empecemos a observar la demanda de este perfil profesional, significará que estamos en el buen camino. Porque por mucha tecnología que tengamos a nuestro alcance, por muy avanzadas que sean nuestras herramientas, aunque dispongamos de buenos contenidos, sin un diseño instruccional adecuado, es muy difícil que se consigan los objetivos formativos perseguidos: estamos abocados al fracaso.

Como ejemplo, un botón. Un vídeo simpático que nos muestra los efectos de un buen diseño «destruccional» (por cierto que «instruccional» tampoco está en el diccionario. Si acaso «instructivo», pero tampoco me voy a meter ahora en camisas de once varas con el léxico).

En las próximas entradas, seguiremos hablando de lo que es el Diseño Instruccional para ver si lo podemos rescatar de ese limbo en el que se encuentra atrapado en nuestro país.


3 comentarios

Modelos Pedagógicos Asociados al mLearning

Os dejo aquí un nuevo vídeo de otra Master Class del Programa de Televisión Educativa de Bureau Veritas Formación: «Modelos Pedagógicos Asociados al mLearning«. En este caso, trata sobre las ventajas e inconvenientes que aporta el uso de dispositivos móviles en la formación online, así como los distintos modelos pedagógicos que se pueden considerar, según el grado de utilización de este tipo de dispositivos en los procesos de enseñanza-aprendizaje.

Os dejo también, para descargar, la presentación. Espero que os guste.

Master Class ModelosPedagogicos_mLearning

(pulsar sobre la imagen, para ver el vídeo)



1 comentario

Manifiesto #eLearning

Muchas gracias a Daniel Porras, de OjúLearning, por traducir el eLearningmanifesto propuesto por Michael Allen, Julie Dirksen, Clark Quinn y Will Thalheimer. En estos tiempos en que impera la chapuza y los escándalos por uso indebido de la formación online para “despistar” fondos públicos, este manifiesto es como una brisa de aire fresco que se cuela por la ventana. Lo suscribo de corazón y, con permiso de OjúLearning, lo copio directamente con algunas pequeñas modificaciones de estilo de mi cosecha.

«Creemos que la tecnología de aprendizaje ofrece la posibilidad de crear de forma única valiosas experiencias de aprendizaje . También creemos, con una sensación de tristeza y profunda frustración, que la mayoría de los proyectos e-learning no terminan cumpliendo lo que prometen.

Además, creemos que las tendencias actuales evocan un futuro de única mejora en el e-learning basado en implementaciones estéticas y relacionadas con el diseño.

Finalmente, hemos llegado a la conclusión de que para elevar el e-learning a la altura de su promesa, tenemos que empezar con el compromiso personal que nace de un nuevo conjunto de normas.

A través de la evaluación continua de los resultados de aprendizaje, la experiencia en proyectos e-learning puede optimizar el uso del tiempo del alumno, individualizar la experiencia de una participación plena, las necesidades de dirección, optimizar la práctica, y ajustar todo lo aprendido a la verdadera competencia en el desempeño.

A través de nuestro trabajo en el desarrollo de experiencias de e-learning y de ayudar a los demás a hacer lo mismo, creemos que tenemos que ir más allá del típico e-learning, llegando ya la hora de sembrar los valores y las características de Serious eLearning. «

Michael Allen // Julie Dirksen // Clark Quinn // Will Thalheimer

 tabla_serious_learning

Presta atención a los 22 principios básicos que son planteados en el Manifiesto eLearning:

1. No des por sentado que la formación es la solución

No asumimos que una intervención formativa es siempre el mejor medio para ayudar a las personas a una mejora en su desempeño.

2. No des por sentado que el eLearning es la respuesta

Cuando se requiere formación, no asumimos que e-learning es la única (o la mejor) solución.

3. Relaciona el aprendizaje con los objetivos de desempeño

Las habilidades que estamos desarrollando deben cubrir los objetivos de las organizaciones, los individuos, o de ambos.

4. Mejora el objetivo de rendimiento

Vamos a ayudar a nuestros estudiantes a alcanzar excelencia en el desempeño ; lo que les permite tener mejores habilidades, destrezas , confianza y disposición para actuar.

5. Ofrece prácticas realistas

Vamos a proporcionar a los estudiantes un nivel suficiente de práctica real; por ejemplo , las simulaciones, la toma de decisiones basado en escenarios , evaluaciones basadas en casos y ejercicios auténticos.

6. Genera contextos auténticos

Vamos a proporcionar a los estudiantes con la experiencia suficiente en la toma de decisiones en contextos auténticos .

7. Proporciona orientación y sugerencias

Vamos a proporcionar a los estudiantes la orientación adecuada y la retroalimentación para corregir errores , reforzar su comprensión y desarrollar habilidades de desempeño eficaces.

8. Ofrece consecuencias realistas

Al proporcionar feedback sobre el desempeño durante el aprendizaje , vamos a proporcionar a los estudiantes una idea de las consecuencias adaptadas al mundo real.

9. Adapta el aprendizaje a las necesidades del alumno

Podemos y debemos utilizar la capacidad del eLearning para crear entornos de aprendizaje que sean flexibles o de adaptación a las necesidades del estudiante .

10. Promueve la participación

Intentaremos involucrar a los estudiantes en el proceso de aprendizaje relacionando los objetivos actuales con experiencias previas y/o localizando aquellos aspectos que los motiven.

11. Valora el impacto a largo plazo

Vamos a crear experiencias de aprendizaje que tienen impacto a largo plazo, es decir, más allá del final de la formación. Por lo que no nos quedaremos con el mero aprendizaje para el momento.

12. Utiliza interactividad para conseguir un mayor compromiso (engagement)

Vamos a utilizar las capacidades interactivas únicas de e-learning para apoyar la reflexión, la aplicación , ensayo, elaboración, contextualización , debate , evaluación, sintetización , etcétera – no sólo en la navegación, el paso de página, las descargas , y la  búsqueda  de información.

13. Facilita apoyo para el seguimiento post-formación.

Vamos a complementar la instrucción con la combinación adecuada de post- formación adicional, proporcionando eventos de aprendizaje que: ayuden a reforzar los puntos clave de aprendizaje , a supervisar la gestión para la aplicación de aprendizaje y a crear mecanismos que permitan seguir aprendiendo en el puesto de trabajo.

14. Diagnostica las causas desde la raíz

Cuando se administran las solicitudes de formación, determinaremos la probabilidad de beneficios y si otros factores deben ser objeto de mejora. También nos esforzaremos por ser proactivos en la evaluación de los factores de desempeño organizacional sin esperar antes de que nos sugieran propuestas de mejora.

15. Utiliza soporte para el desempeño

Vamos a considerar la posibilidad de ayudas de trabajo , listas de control, planificadores y otras herramientas de apoyo al desempeño, que nos sirvan de complemento al estándar de interacciones de e-learning .

16. Mide la eficacia

El buen aprendizaje no se puede asegurar sin medición, eso sí, entendiéndose como proceso de mejora. Incluye lo siguiente :

  1. Medir los Resultados
    • Lo ideal es medir si el aprendizaje ha dado lugar a beneficios para el individuo y / o la organización.
  2. Medir los resultados de rendimiento reales
    • Lo ideal es poco después de la formación ( por ejemplo , de dos a seis semanas después ) , vamos a medir si el alumno ha aplicado el aprendizaje, el nivel de éxito , los factores de éxito y los obstáculos encontrados , y el nivel de apoyo del supervisor cuando se justifique .
  3. Medir la Comprensión y toma de decisiones durante el aprendizaje
    • Como mínimo, durante el aprendizaje , vamos a medir tanto la comprensión del alumno como la capacidad de toma de decisiones . Idealmente , también queremos medir estos parámetros por lo menos una semana después del aprendizaje.
  4. Medir las percepciones de Aprendizaje Significativo
    • Cuando medimos la percepción de los alumnos , vamos a medir sus percepciones de lo siguiente: su capacidad de aplicar lo que han aprendido , su nivel de motivación y el apoyo que recibirán en la aplicación del aprendizaje.

17. Es un proceso iterativo: Diseño , Desarrollo e Implementación

No vamos a suponer que nuestro primer paso es correcto, por lo que vamos a evaluar y refinar hasta que hayamos alcanzado nuestros objetivos de diseño .

18. Promueve la aplicación de los aprendizajes

Vamos a motivar a los alumnos para aplicar lo que han aprendido , vencer los  obstáculos y sentirse preparados para hacer frente a situaciones específicas.

19. Utiliza modelos conceptuales para favorecer la comprensión

Creemos que el desempeño debe basarse en modelos conceptuales para guiar las decisiones , y que tales modelos se deben presentar , vinculados a los pasos en los ejemplos y con quien practicar.

20. Usa  ejemplos y contraejemplos adecuados

Vamos a presentar ejemplos y contraejemplos , junto con los conceptos subyacentes.

21. Permite a los estudiantes aprender de los errores

El fracaso es una opción. Por lo que resulta positivo permitir que los alumnos cometan errores para que puedan aprender de ellos. Además , en su caso , modelaremos el error en la toma de decisiones y la fijación de dicho error.

22. Respeta a los estudiantes

Vamos a reconocer y aprovechar los conocimientos y habilidades que los estudiantes han adquirido previamente a través de su experiencia pasada y los contextos individuales.