Python para todos: ¿Por qué usamos números aleatorios ?

Paloma Recuero de los Santos    10 junio, 2020

Esta nueva miniserie de “Python para todos” consta de dos partes. En la primera, este post, explicaremos por qué necesitamos poder generar números aleatorios para entrenar nuestros modelos de aprendizaje automático. En la segunda parte, que publicaremos próximamente, veremos varias formas de hacerlo con Python.

¿Qué son los números aleatorios?

Un número aleatorio es un número obtenido al azar. El ejemplo clásico es lanzar una moneda, o un dado (no trucado). Cada cara de la moneda o del dato, tiene siempre la misma probabilidad de salir, independientemente del resultado anterior. O del resultado de lanzar el otro dado, si lanzamos simultáneamente dos de ellos.

En general cuando se requiere una impredecibilidad en unos determinados datos, se utilizan números aleatorios.

Números aleatorios y modelos Machine Learning

En Ciencia de Datos, como en cualquier otra rama de la Ciencia, se construyen modelos que nos ayuden a representar la realidad o los fenómenos concretos que queremos estudiar. Pero esta realidad, y nosotros mismos, los seres humanos somos altamente impredecibles. Por ello, si queremos que nuestros modelos predictivos se aproximen a la realidad, deben funcionar como ésta: de forma aleatoria.

Algunos ejemplos de este tipo de fenómenos son:

  • Evolución del clima
  • Resultado de unas elecciones
  • Erupción del un volcán
  • Evolución del desempleo
  • Epidemias…
  • etc

Por tanto, en Machine Learning se trabaja a menudo con generadores de números aleatorios porque éstos permiten a los modelos matemáticos representar la realidad.

Generación de números aleatorios

Aunque sea tan sencillo como “lanzar un dado”, cuando necesitas generar, por ejemplo, un millón de datos, hay que buscar alternativas más eficientes.

¿Por qué no generarlos por ordenador entonces?

Esta es un pregunta interesante. Un ordenador es una máquina que repite, a gran velocidad eso sí, los pasos que le pedimos que haga. Sin embargo, es imposible generar algo impredecible en un ordenador.

Uno de los primeros científicos interesados en este tema ,el físico John von Neumann, reconocía que la tarea en sí era imposible y acuñó la frase:

“Aquel que trate de producir dígitos aleatorios mediante métodos aritméticos está, por supuesto, pecando”.

Any one who considers arithmetical methods of producing random digits is, of course, in a state of sin (John von Neumann)
“Any one who considers arithmetical methods of producing random digits is, of course, in a state of sin
(John von Neumann)

Recientemente han surgido alternativas interesantes, como basar la generación de números aleatorios en procesos físicos realmente impredecibles, como son los procesos cuánticos.

Sin embargo, lo más habitual es “tirar por el camino de enmedio” y trabajar con números pseudoaleatorios, que se obtienen a partir de operaciones aritméticas, y se parecen mucho a los números aleatorios. No sirven para todos los casos, por ejemplo en ciberseguridad es muy importante que sean realmente aleatorios, pero para la mayoría de los problemas, funcionan.

Una vez aclarado el porqué son necesarios los datos aleatorios en Machine Learning, ya sólo nos queda ponernos manos a la obra y aprender a generarlos en Python. Pero ésto, ya lo dejamos para el próximo post. ¡No te lo pierdas!

Para mantenerte al día con LUCA visita nuestra página web,  suscríbete a LUCA Data Speaks o síguenos en TwitterLinkedIn YouTube.

Deja un comentario

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