Algoritmos
Qué son y por qué son importantes
Un algoritmo es una lista de instrucciones paso a paso diseñadas para realizar una tarea específica o resolver un problema concreto. Si lo pensamos así, los algoritmos son omnipresentes. Una receta de sopa de cebolla francesa, por ejemplo, es un algoritmo. Los pasos o entradas se combinan para obtener un resultado o salida. En los ordenadores, los algoritmos funcionan básicamente de la misma manera. Son una parte fundamental de la informática moderna, tanto si se usan para convertir números binarios en letras que le permitan leer lo que aparece en la pantalla de su tableta o para recomendarle que invierta en ciertas acciones según su tolerancia al riesgo. En esta página nos centraremos en los algoritmos informáticos, y sus diferentes tipos, básicos, machine learning, gradient boosting, etc.
Una breve historia de los algoritmos
Aunque los algoritmos parezcan un invento moderno, en realidad el término se remonta a un milenio atrás, cuando el matemático persa Muḥammad ibn Mūsā al-Khwārizmī (latinizado como «Algoritmi») hizo importantes contribuciones a las matemáticas. El concepto se extendió en el siglo XIX, cuando el matemático alemán Carl Friedrich Gauss inventó un sencillo algoritmo para determinar en qué día del calendario cae la Pascua.
Los algoritmos aparecieron por primera vez en la informática a mediados del siglo XX, cuando el famoso informático británico Alan Turing ideó una teoría sobre cómo las máquinas podían ejecutar una serie de instrucciones complejas. Aunque Turing nunca presenció ninguna victoria de su rudimentario algoritmo de ajedrez «Turochamp» contra a un humano, este sirvió de base para lo que hoy conocemos como inteligencia artificial.
A medida que la potencia de la informática se incrementó en las décadas siguientes, también lo hizo la necesidad de utilizar algoritmos más complejos. Hoy en día, los algoritmos son fundamentales en la informática moderna, ya que nos ayudan a conducir de A a B, a decidir la próxima película que vamos a ver o incluso a enamorarnos.
Muchos programas informáticos son, en esencia, una secuencia de algoritmos escritos de forma que el ordenador pueda entenderlos.
El análisis predictivo y la IA ofrecen al cliente una experiencia superior
El equipo de baloncesto estadounidense Orlando Magic utiliza los datos de las aplicaciones móviles y algoritmos de aprendizaje automático para personalizar la experiencia de los aficionados y cuadruplicar las compras hechas desde la aplicación.
Los algoritmos en la actualidad
Cómo funcionan los algoritmos
Los algoritmos necesitan cinco propiedades para funcionar:
- Entradas: los datos bien definidos que se transformarán durante el cálculo.
- Salidas: los datos que se obtienen a partir de ese cálculo.
- Concreción: los pasos específicos del cálculo.
- Eficacia: los pasos factibles para hacer el cálculo.
- Finitud: el número de pasos finito para el cálculo.
Esto nos remite a los algoritmos basados en las matemáticas y en las reglas.
Algoritmos basados en las matemáticas
La mayoría de los algoritmos tienen un carácter numérico, por lo que no es de extrañar que muchos estén basados en las matemáticas. Tomemos el ejemplo más sencillo: 1 + 1 = 2. Se trata de un algoritmo matemático en el que los unos son las entradas y el dos es la salida. Si extrapolamos este ejemplo, obtenemos algunos de los algoritmos más importantes que se utilizan en la actualidad, como los que descomponen las señales en frecuencias, codifican los ordenadores o incluso determinan el posicionamiento de una página web en Google.
Algoritmos basados en reglas
A medida que los humanos aprendemos más sobre la IA, vemos que algunas cosas no se pueden explicar solo con construcciones matemáticas. Si está desarrollando un software de análisis de texto, por ejemplo, y necesita un algoritmo para pluralizar un sustantivo, no puede limitarse a añadir una "S" a cada sustantivo. Hay que tener en cuenta las excepciones, como «matriz» y «matrices». Existen reglas para esos casos especiales. Los algoritmos basados en reglas son los más adecuados para analizar datos en los que se mezclan atributos numéricos y cualitativos.
Naturalmente, se pueden utilizar varios tipos de algoritmos para resolver un problema determinado; por ejemplo, para predecir los ingresos que va a tener una persona. Para este cálculo, cabría utilizar un algoritmo basado en las matemáticas que pondere variables como la edad, la ubicación, la formación, etc. También se podría utilizar un algoritmo basado en reglas que pronostique los ingresos según la edad y el código postal, por ejemplo. Entonces, ¿cuál es mejor?
Esto nos lleva a los algoritmos que compiten entre sí. A menudo, los algoritmos se enfrentan entre sí para ver cuál es el más eficaz. Volviendo al ejemplo de la sopa, varias recetas diferentes pueden seguir dando como resultado una sopa de cebolla francesa. Lo mismo ocurre con los algoritmos informáticos. Es posible que el algoritmo A sea más lento pero más preciso que el algoritmo B. Sin embargo, B es más fácil de validar. Saber cuál es el algoritmo adecuado para una tarea concreta depende de los criterios con los que se evalúa. ¿Cumple con su cometido? ¿Cumple la tarea rápidamente? ¿Es eficaz?
Los tipos de algoritmos más utilizados
Los algoritmos pueden clasificarse dentro de estas categorías: básicos y avanzados.
Básicos
Aunque no lo parezca, los algoritmos son el motor de las funciones informáticas más básicas. Echemos un vistazo a tres algoritmos básicos muy utilizados hoy en día.
Algoritmos de compresión
La mayoría de la gente utiliza el ordenador para hacer tareas básicas, como leer un artículo o ver imágenes. Esto se consigue gracias a que los algoritmos comprimen los archivos para que estos se puedan ver, compartir y restaurar. Piense en un archivo JPG. Cuando ve una foto de su sobrino, en realidad está mirando una imagen de mapa de bits que ha sido procesada por un algoritmo de compresión con pérdida que transforma millones de representaciones numéricas de píxeles en la imagen de la pantalla que le saca una sonrisa.
Algoritmos de búsqueda binaria
La búsqueda binaria es un algoritmo de búsqueda rápida que funciona sobre la técnica de divide y vencerás. Imagínese que está buscando en su ordenador portátil el documento 2020declaracionrenta.PDF. Con una búsqueda binaria, el algoritmo elige una observación en medio del conjunto de datos y comprueba si el subject_id encontrado es el subject_id que se busca. En caso afirmativo, el algoritmo se detiene. Si no, como la tabla está ordenada, el algoritmo determina si la observación que busca se encuentra antes o después de la que ha encontrado y redefine el rango de búsqueda a la mitad del archivo original. A continuación, el algoritmo elige la observación que se encuentra en el centro del nuevo rango de búsqueda y repite el proceso hasta encontrar el PDF. Pues sí, el año pasado pagó menos impuestos de los que le correspondían.
Algoritmos de multiplicación
Son incluso más simples que los anteriores. Es más, uno de los algoritmos más populares es el que se encarga de multiplicar números. Casi todo lo que puede hacerse con un algoritmo implica la multiplicación de dos o más números. Incluso cuando se trata de campos basados en palabras, como en el análisis de textos, evaluamos cosas como la frecuencia de las palabras y los documentos, en las que suele haber un multiplicador implicado.
Avanzados
En el extremo opuesto se encuentran los algoritmos avanzados. Estos usan los algoritmos básicos como base desde la que desarrollar nuevas ideas. Normalmente se usan para tratar grandes conjunto de datos.
Algoritmos de Machine Learning
El Machine Learning utiliza algoritmos que reciben y analizan los datos de entrada para predecir los valores de salida dentro de un rango aceptable. Lo más interesante es que aprenden de otros algoritmos. A medida que los algoritmos de Machine Learning se alimentan de nuevos datos, aprenden y optimizan sus operaciones para mejorar el rendimiento, con lo que van desarrollando su inteligencia con el tiempo. Existen cuatro tipos de algoritmos de Machine Learning: supervisado, semisupervisado, no supervisado y por refuerzo.
Los algoritmos de deep learning
Los algoritmos de deep learning o deep learning utilizan múltiples capas para extraer progresivamente características de alto nivel a partir de los datos de entrada. Al imitar el cerebro humano, estos algoritmos intentan extraer conclusiones similares a las de los humanos analizando continuamente los datos mediante lo que se conoce como redes neuronales artificiales. El resultado de estos algoritmos tan complejos puede cambiar la vida de las personas, como permitir que los coches se conduzcan solos o traducir libros del inglés al árabe en un abrir y cerrar de ojos.
Algoritmos de gradient boosting
Los modelos predictivos ayudan a las empresas a hacer cosas como predecir las ventas y fijar el precio de los productos con arreglo a la demanda prevista. El gradient boosting o incremento de gradiente es un potente algoritmo para construir estos modelos predictivos. Funciona potenciando los árboles de decisión débiles para convertirlos en árboles de decisión fuertes, mejorando así la precisión de las predicciones. El algoritmo destaca por su rapidez y precisión, especialmente ante conjuntos de datos de gran tamaño y complejidad.
¿Qué algoritmo debe utilizar?
Los principiantes suelen plantearse qué algoritmo deben utilizar. La respuesta depende de muchos factores, entre ellos:
- El tamaño, la calidad y la naturaleza de los datos.
- El tiempo de cálculo disponible.
- La urgencia de la tarea.
- Qué quieres hacer con los datos.
Ni siquiera un científico de datos experimentado sabe qué algoritmo es mejor hasta después de haber probado varios algoritmos. A la hora de decantarse por uno, es aconsejable tener en cuenta los siguientes aspectos: la precisión, el tiempo de entrenamiento y la facilidad de uso. Muchos usuarios dan prioridad a la precisión, mientras que los principiantes tienden a preferir los algoritmos que ya conocen. Cuando se trabaja con un conjunto de datos, lo primero que hay que considerar es cómo obtener resultados, sin importar cómo sean esos resultados. Una vez que obtenga resultados y se familiarice con los datos, puede dedicar más tiempo a utilizar algoritmos más sofisticados comprender mejor los datos y así mejorar aún más los resultados. Más información sobre cómo elegir los algoritmos.