Antes de dar tus primeros pasos en los adustos terrenos del aprendizaje de máquinas, primero debes considerar en tu equipaje algunos conocimientos previos necesarios para la comprensión óptima de cada tema. Estos pueden ser poco cuantiosos, pero habrá algunos por esencia imprescindibles, dependiendo de tus metas y de su importancia para la teoría y práctica.
En esta sesión preliminar a nuestras exploraciones te hablaré sobre estos menesteres: sus especificaciones, relevancia, y material didáctico para su aprendizaje, de forma que nos preparemos bien para sortear el terreno a explorar.
Los cimientos del machine learning
Así como hay conocimientos previos que no son completamente requeridos para lograr un aprendizaje efectivo de los temas del machine learning, hay algunos campos que son simplemente medulares e ineludibles al pretender alcanzar algunos objetivos particulares. Con el afán de obtener el panorama más general posible, dividiremos los requisitos en lo que se pueden considerar que son sus dos componentes principales, el par de pilares sobre los que reposa toda teoría y praxis del aprendizaje automático y de la inteligencia artificial en general: programación computacional y matemáticas.
Seguramente ya habías escuchado algo sobre esto, y es que su mismo nombre lo indica: el aprendizaje de máquinas está completamente ligado a la computación como herramienta de procesamiento, y a los métodos desarrollados para operar sobre conjuntos de datos; ¿y cómo se desarrollan estos métodos?, se hace a través de las matemáticas. Todo el espectro teórico del machine learning proviene del dominio matemático, e incluso ha surgido mucho antes de que las máquinas fueran capaces de ejecutar algoritmos de este tipo como hoy en día.
La respuesta a esto es relativa, ya que es dependiente de los fines que pretendas dar a tu ruta de aprendizaje: podrías enfocarte en uno, en otro, o incluso solamente estudiar los conceptos, objetivos y métodos sin experimentarlos propiamente (si es que solo vienes a empaparte un poco sobre el tema).
Revisemos más a detalle.
¿Qué necesito para aprender machine learning?
A continuación, te presentaré los prerrequisitos elementales para aprender machine learning de forma resumida y de acuerdo a tus posibles intenciones. Más adelante hablaremos en lo particular de cada uno.
En caso de querer solo aprender generalidades, sin programar ni explorar la teoría matemática:
- Este tipo de aprendizaje está dirigido a personas que buscan adentrarse en los tópicos sin dominarlos, que tienen como meta ser conscientes de las herramientas de análisis y predicción de datos de las que pueden disponer en su ramo empresarial o académico, sin desarrollarlas personalmente. Para esto, los requisitos son solo la disposición al aprendizaje y, si es posible, tener presentes raudos conocimientos de computación y matemáticas, los cuales ayudarán sustancialmente a comprender los temas. Y claro, hay que tener en cuenta que la información consultada para el aprendizaje de este tipo deberá ser relativamente (muy) básica.
En caso de querer implementar algoritmos de machine learning (como ingeniero en aprendizaje de máquinas, científico de datos, entre otros):
- Nociones teóricas y prácticas de programación a un nivel medio/avanzado.
- Nociones de matemáticas: probabilidad y estadística, álgebra lineal, geometría analítica y cálculo (deseables para una formación integral y altamente competitiva).
En caso de querer hacer investigación científica en este campo:
- Nociones teóricas y prácticas de programación a un nivel medio/avanzado.
- Conocimiento a profundidad las matemáticas implicadas. No hay artículo científico en machine learning que no se comunique mediante este lenguaje, el cual será también tu medio de expresión.
¿Has identificado tus metas? Hablemos sobre estos prerrequisitos.
¿Es necesario saber programar para aprender machine learning?
La respuesta rápida a esta cuestión es: sí.
Pero como he mencionado aquí arriba, eso depende de ti. Si lo que estás buscando es conocer un lado puramente descriptivo y general del machine learning, un mero acercamiento sin pretender implementar algoritmos de este tipo, entonces puedes aprender sobre ello sin escribir ni una línea de código.
Claro, lo recomendable para una comprensión óptima de esto es practicar, y para practicar hay que programar, pues el aprendizaje de máquinas se genera a partir de código computacional.
¿La IA y software especializado sustituirán a los programadores?
Una de las dudas emergentes sobre el rol de la programación en el ejercicio de la ciencia de datos, es si el estado actual y ulterior de las herramientas para crear código computacional (principalmente basadas en modelos generativos) sustituirán la loable labor de los programadores.
Esa es la percepción común, sin embargo, como un ávido consumidor de estas herramientas (yo creo que todos los que vivimos de esto las usamos), aún veo demasiado difícil que eso suceda. No me malinterpreten, más que una justificación de mi sueldo (:v), me parecería maravilloso que se pudiera evadir la necesidad de escribir código: la diversificación de las tecnologías relacionadas a los macrodatos (big data), las bibliotecas, y los lenguajes de programación emergentes, están empezando a dotar a la labor del científico de datos de una complejidad infernal. Por esto están surgiendo nuevos roles laborales, como el ingeniero en aprendizaje de máquinas, o desarrolladores y arquitectos de software enfocados en machine learning (MLOps), ya que llevar este tipo de soluciones a ambientes en producción (a servicio del usuario final) traen consigo el control y creación de un sinfin de elementos, sin mencionar las buenas prácticas, el mantenimiento, y la documentación de los productos. Una labor multitarea para lo cual una máquina podría presentar considerables deficiencias.
En la actualidad, algunos estudios apuntan a que las capacidades de programación de las LLMs (como chat GPT) no son capaces de alcanzar un porcentaje considerablemente alto (ni hablar del 100%) de precisión en tareas de programación. Además, se deben considerar los altos costos del uso de estos servicios, el cómo se define la calidad de sus entregables, y la alta complejidad que supone el programar para satisfacer las necesidades de negocio: flujo de comunicación entre las partes interesadas, adecuaciones, planeación, delegación de responsabilidades, etc. Todo señala a que es necesaria la intervención de un especialista; la IA como la conocemos actualmente, fungirá como herramienta para programadores en vez de convertirse en programadores per se.
En conclusión, recomiendo que estas herramientas se utilicen para generar código de manera más ágil, pero siempre teniendo conocimientos suficientes para ser capaces de adecuar y corregir los resultados. Dado el panorama actual, debemos asumir que el aprendizaje de código computacional aún juega un papel clave e ineludible en la formación de quienes buscan capacitarse para la creación y aplicación del machine learning.
¿Qué lenguaje de programación debo aprender si quiero hacer modelos de machine learning?
En la actualidad, existen varios lenguajes de programación que permiten crear algoritmos de aprendizaje de máquinas, pero el rey indiscutible en cuanto a su uso es sin duda Python.
De acuerdo a una encuesta realizada en 2024 por Developer Nation, aproximadamente el 73% de los desarrolladores dedicados al machine learning utilizan Python.
En este curso de machine learning todos los ejemplos mostrados están codificados en lenguaje Python; sin embargo, a pesar de ser el más popular, esto no es un impedimento para que aprendas a desarrollar modelos de esta índole en algún otro lenguaje. A continuación, te enlisto los lenguajes de programación más utilizados para ciencia de datos.
Los lenguajes de programación más utilizados para machine learning son:
- Python.
- Java.
- JavaScript.
- C/C++.
- R.
- Go.
- Julia.
¿Qué nivel de programación debo tener para aprender machine learning?
Debido a su marcada predominancia, y a que en este curso utilizaremos Python, a partir de ahora hablaremos sobre programación principalmente refiriéndonos a este lenguaje y lo que se recomienda saber para empezar a escribir modelos de aprendizaje automático con él; sin embargo, esto puede aplicarse de forma general a prácticamente cualquier otro.
Afortunadamente, el día de hoy Python y otros lenguajes computacionales cuentan con bibliotecas que facilitan el desarrollo de algoritmos de ciencia de datos (yo mismo he desarrollado algunas), las cuales puedes utilizar con conocimientos relativamente básicos.
Esto es lo que necesitas saber de Python para este curso, y en general, para la programación en machine learning:
- Tipos de datos y operadores.
- Estructuras de datos (listas, tuplas, diccionarios, etc).
- Condicionales (if, else).
- Ciclos/bucles (for, principalmente).
- Funciones.
- Bibliotecas.
- Conocimiento básico de clases y herencia.
Esto es para empezar a aprender, pero hay que ser conscientes de que, para puestos más especializados, y particularmente donde se necesita una implementación de algoritmos en producción, es necesario saber bien de programación orientada a objetos, buenas prácticas para desarrollo de software, tecnologías en la nube, y más; por lo que si tu intención es hacia una orientación de este tipo, debes prepararte lo más posible en el dominio del lenguaje y las herramientas con las que debe convivir para la implementación de productos y servicios basados en inteligencia artificial.
¿Dónde puedo aprender Python?
Existen un sin fin de recursos en línea para aprender Python (y cualquier otro lenguaje), además de libros y otras fuentes fuera de la red. En lo personal, te recomendaría hacer una búsqueda en internet y elegir alguna de las opciones desplegadas, la mayoría de estas son gratuitas y en español, y podrás elegir entre cursos enteros en YouTube o páginas dedicadas a la enseñanza como W3 Schools.
Si tuviera alguna referencia especial, te la daría, pero mi aprendizaje de Python fue de mucha práctica desenfocada y de una mescolanza de varias fuentes; lo que te puedo decir es que mi primer acercamiento fue el curso de Pildoras Informáticas en YouTube, el cual encontré fructífero y pedagógico, y actualmente ya cuenta con más de 2 millones de visualizaciones; puedes entrar a la lista de reproducción en este link.
Aquí tienes el primer video:
En cuanto a instalación de aplicaciones en tu computadora, para comenzar a programar puedes crear y ejecutar códigos de Python en línea de forma gratuita, lo cual recomiendo para un principiante. Para este curso utilizaremos la herramienta Google Colab, de la cual hablaremos en el próximo apartado.
Por último, cabe mencionar que las herramientas como Gemini, GPT, Claude, y demás LLMs, son de bastante ayuda al momento de aprender, por lo que no dudes en realizarles consultas, siempre y cuando aprendas también a hacerlo por tu cuenta (tú debes ser dueño y auditor de la calidad de los códigos computacionales generados por IA).
Con esto concluimos la sección sobre programación para aprendizaje de máquinas, y atenderemos una de las preguntas más recurrentes entre principiantes.
¿Es necesario saber matemáticas para aprender machine learning?
La respuesta corta a esta cuestión es: …sí.
Pero volveré a hacer hincapié en que esto es en función de tus objetivos.
Para programar un algoritmo de machine learning no necesitas conocer todas las matemáticas detrás de su funcionamiento, y es probable que en un futuro se utilicen muchas más interfaces prediseñadas para generar algoritmos de este tipo de manera sencilla, sin necesidad de que los usuarios tengan muchas (o ninguna) noción de las matemáticas implicadas, pero definitivamente no es lo más recomendable.
Puedes prescindir de las matemáticas, pero siempre será bueno que al menos tengas una idea de lo que hace tu algoritmo, y esta visión solo llegará mediante una percepción desde este campo de estudio.
Lo que te recomiendo es que, si deseas programar sin tener una comprensión profunda de las matemáticas, aprendas aunque sea un poco de estas y de cómo están involucradas en tus modelos.
Si solo estás en búsqueda de un conocimiento más superficial y descriptivo, toma en cuenta que puedes aprender sin estudiar a fondo desde este enfoque, pero lo más óptimo es que tengas algunos conocimientos de temas de álgebra lineal, probabilidad, estadística, y cálculo, ya que te ayudarán a identificar mejor de qué manera se aplica el aprendizaje de máquinas a la resolución de problemas en el ámbito de la ciencia de datos (y si vas a programar, te ayudarán en la elección de modelos y resolución de desperfectos).
¿Qué ramas de las matemáticas debo conocer para aprender machine learning?
Podría decirse que las matemáticas inmiscuidas en el desarrollo del aprendizaje de máquinas son relativamente avanzadas, al menos en las que conciernen a una comprensión desde la raíz hasta sus partes más complejas. La cantidad de estudios previos necesarios en matemáticas dependerá del nivel de conocimientos que desees adquirir. Un nivel muy alto requerirá de un dominio previo más profundo.
En resumen, se puede decir que las cuatro bases principales sobre los que está forjada la teoría matemática del machine learning son:
- Álgebra lineal.
- Geometría analítica.
- Cálculo.
- Probabilidad y estadística.
Es importante enfatizar la grandísima importancia del álgebra lineal para el machine learning, ya que representa una magnífica caja de herramientas para la manipulación de datos.
Para darte una orientación más concreta sobre qué temas puedes considerar en un pre-estudio, aquí abajo te dejaré una traducción del índice de la parte introductoria del libro mathematics for machine learning de Deisenroth, Faisal y Ong, el cual puedes encontrar de forma gratuita haciendo clic en este link.
Tópicos de matemáticas básicas para machine learning:
Álgebra Lineal
- Sistemas de ecuaciones lineales.
- Matrices.
- Espacios vectoriales.
- Independencia lineal.
- Base y rango.
- Mapeos lineales.
- Espacios afines.
Geometría analítica
- Normas.
- Producto interno.
- Longitudes y distancias.
- Ángulos y ortogonalidad.
- Base ortonormal.
- Producto interno de funciones.
- Proyecciones ortogonales.
- Rotaciones.
Descomposiciones matriciales
- Determinantes y traza.
- Eigenvalores y eigenvectores.
- Factorización de Cholesky.
- Descomposición en valores singulares.
- Aproximación de matrices.
Probabilidad y distribuciones
- Probabilidad y distribuciones
- Construcción de un espacio de probabilidad
- Probabilidades discretas y continuas
- Regla de la suma, regla del producto, teorema de Bayes
- Estadísticas e independencia
- Distribución Gaussiana
- Conjugados y la familia exponencial
- Cambio de variables / transformada inversa
Cálculo vectorial
- Derivadas de funciones de una variable.
- Derivadas parciales y gradientes.
- Gradientes de funciones vectoriales.
- Gradientes de matrices.
- Identidades útiles para cálculo de gradientes.
- Propagación hacia atrás y diferenciación automática.
- Linealización y series de Taylor multivariables.
Optimización continua
- Optimización usando descenso de gradientes.
- Optimización con restricciones y multiplicadores de Lagrange.
- Optimización convexa.
¿Cómo aprender las matemáticas del machine learning?
Para estudiar las matemáticas del aprendizaje de máquinas cuentas con numerosas y diversas opciones, no olvides que en este curso podrás aprender la teoría matemática detrás de cada objeto de aprendizaje, pero en lo que concierne al estudio de las matemáticas previas te recomiendo las siguientes fuentes:
Libros
Los libros son mi opción favorita, sin embargo, sé que para muchos a veces resultan embrollosos. Los libros generalmente son la opción que contiene la teoría mejor desarrollada y la formalidad característica de las matemáticas, proveyendo definiciones claras que no se prestan a ambigüedades.
Sí…, el gran problema que enfrentamos al encarar este tipo de recursos es la poca costumbre que tenemos de leer el lenguaje matemático. Para que los libros de este tipo no te parezca que están escritos en simbología indescifrable, recomiendo que estudies las matemáticas desde su base: desde la definición del campo de los números reales y sus axiomas, las operaciones básicas, y sus propiedades. Entre los libros que considero que no son tan densos (en cuanto a demostraciones matemáticas) y que tienen un enfoque aplicativo, te puedo recomendar los siguientes:
Generalidades
- Álgebra y trigonometría con geometría analítica, Swokowski – Cole.
Álgebra lineal
- Álgebra lineal, Grossman – Flores.
Cálculo variable y multivariable
- Cálculo 1 y 2, Larson – Edwards.
Probabilidad y estadística
- Probabilidad y estadística para ciencias e ingenierías, Walpole – Myers.
Cursos en YouTube
Una opción siempre viable es la inmensa cantidad de contenido habitando YouTube (y páginas similares), la cual proviene tanto de divulgadores independientes, como de grandes universidades de todo el mundo. Te puedo recomendar algunos cursos y canales en YouTube que he consumido y me han sido útiles por su alta calidad, puedes hacer clic en cada uno para echarles un vistazo:
- Álgebra lineal del MIT.
- Matemáticas para machine learning del Imperial College London.
- Canal 3Blue1Brown, en español.
- Canal oficial de la universidad de Stanford.
Esto que te acabo de mencionar son los elementos gratuitos de los que podrías sacar provecho; si buscas más, seguramente hallarás en línea un sin fin de opciones, pero tal vez de paga. Una excelente plataforma que es de paga, pero que a la vez permite solicitar apoyo económico, es Coursera. Te recomiendo insistentemente que busques aprender con recursos gratuitos: mientras más optimices tu inversión monetaria, mejor.
Y eso es todo, recuerda que en este curso podrás ir aprendiendo sobre matemáticas y programación. Si no tienes ningún conocimiento de estos, pero sí deseas obtenerlos, lo recomendable es que vayas haciendo el curso y estudiando lo demás de forma paralela, tomando mi contenido como una guía.
Ahora puedes comenzar con tus primeras lecciones y dar tu primer paso en tu incursión en este mundo:
Excelente informacion, soy nuevo y me esta gustando mucho como va tu curso
Gracias, Martín!
Gracias mil soy odontólogo y me brinda confianza tu introducción para iniciar este reto
Me da gusto, Miguel! Estoy añadiendo actualizaciones y nuevo contenido al curso, disculpa si demoro un poco