Machine Learning
Stanford University & Instituto Politécnico Nacional
ESIME Unidad Zacatenco
Ingeniería en comunicaciones y electrónica
Jorge Peña
INTRODUCCIÓN
El machine learning o aprendizaje automático, como su nombre lo dice, es cuando
un software aprende derivado de lo que observa de ti o tu entorno, tal como tus
acciones, comportamiento, búsquedas en internet, etc., hay muchos ejemplos y uno
de ellos es el filtro que se tiene de los correos de spam, el ordenador aprende a
identificar dicho correo y lo mueve a la carpeta de correos spam.
En si es la ciencia que posibilita que un ordenador o PC pueda aprender sin ser
expresamente programado.
Ipso facto ¿Qué es el machine learning?
Sabemos que el machine learning son algoritmos los cuales hacen que la PC o
computador pueda ir actualizando su toma de decisiones para un mejoramiento o
aprendizaje continuo. En 1950 Arthur Samuel creo un programa de damas chinas
en el cual el propio Arthur jugaba y cada vez que jugaba el programa por el
algoritmo con el cual estaba programado aprendía las jugadas y movimientos, para
que la siguiente partida dicho programa fuera mejorando a tal grado de ser mejor
jugador que el mismo Arthur, por lo tanto, Arthur Samuel definió el aprendizaje
automático como el campo de estudio que da a las computadoras la capacidad de
aprender sin enseñarles explícitamente, pero este es un concepto muy antiguo, por
lo que Tom Mitchell en la década de los 2010’s definió que a raíz de n tareas T y
n probabilidades P se puede mejorar una experiencia tipo E, en si por cada tarea
echa por el usuario que registra el algoritmo hay una probabilidad que se suma
para crear una experiencia en conjunto.
Pero cuando hablamos de machine learning como hemos dicho también hablamos
de algoritmos, hay varios tipos de algoritmos de aprendizaje, pero los dos tipos
principales de algoritmos son:
1. Algoritmos de aprendizaje supervisado.
Dichos algoritmos consisten en enseñar a la PC o computador como hacer algo.
2. Algoritmos de aprendizaje no supervisado.
Dichos algoritmos consisten en hacer que la PC o computador aprendan por si
solos.
APRENDIZAJE SUPERVISADO
Uno de los problemas más comunes en el machine learning es el aprendizaje
supervisado, no por su dificultad, sino por su manera en la cual se aplica.
Antes de entrar en definiciones utilicemos un ejemplo muy simple del aprendizaje
supervisado: Tenemos los datos de diferentes precios en función de los metros
cuadrados del terreno, y un amigo quiere vender su casa, pero no sabe que precio
dar, su casa tiene 70𝑚2 por lo tanto necesita obtener un precio adecuado para la
venta de su casa o terreno, podemos utilizar una recta con origen en el primer
precio, o podemos utilizar una función cuadrática con origen en el primer precio,
por lo tanto la gráfica se ve de la siguiente manera y tendrá diferentes precios:
𝑃(𝑚2 )
600
500
400
Precio en 1000’s USD 300
200
100
0
0 50 70 1 0 0 150 200 250 300
Tamaño en 𝑚2
El precio que tenemos respecto a la recta es ≈ 150k USD mientras el precio que
tenemos en la función cuadrática es ≈ 250k USD, por lo tanto, podemos ver que en
la función cuadrática es la que conviene utilizar más. Este es un ejemplo del
algoritmo de aprendizaje supervisado, por lo tanto, el término aprendizaje
supervisado se refiere a que dimos al algoritmo un conjunto de datos, los cuales
son llamados “respuestas correctas”. Es decir, dimos un conjunto de datos de casas
en los cuales para cada ejemplo indicamos cuál es el precio correcto. Se indicó el
precio real por el cual se vendió la casa y la tarea del algoritmo fue solo generar
más cantidad de estas respuestas correctas, así como se hizo para la casa nueva
que su amigo quiere vender.
A esto también se le llama un problema de regresión, Un problema de regresión
es aquel donde intentamos predecir la salida de un valor continuo, por lo tanto,
podemos decir que la regresión intenta predecir el valor de un atributo de valor
continuo.
Otro ejemplo de aprendizaje supervisado es el siguiente: Se intenta predecir cual
es la probabilidad de que un tumor sea benigno o maligno en el cáncer de mama,
donde tenemos el resultado en función del tamaño del tumor, con 10 resultados
diferentes.
𝑅(𝑡)
1.2
Si 1
0.8
0.6
¿Maligno?
0.4
0.2
No 0
0 2 4 6 8 10 12
Tamaño del tumor
Este problema se le denomina problema de clasificación. Se refiere al hecho, de
que intentamos predecir un valor discreto, una salida cero o uno (maligno o
benigno). En la mayoría de los problemas de clasificación tenemos múltiples
opciones o variables con diferentes significados cada una, si tomamos como
ejemplo la predicción de cáncer podemos tener hasta 3 opciones de tipo de
cáncer.
0, 1, 2, 3
Benigno Tipo de cáncer
Como hemos visto en el machine learning podemos utilizar un numero finito de
valores o características, pero la mayoría de las veces necesitamos un numero
infinito de valores ya que no sabemos cuántos valores o características utilizaremos
dentro de un problema, entonces si nuestro algoritmo de aprendizaje tiene muchos
atributos, valores o características con las cuales hacer predicciones ¿Cómo lidiar
con un número infinito de características? ¿Cómo se almacena un número infinito
de valores en una PC u ordenador si este mismo tiene un límite de memoria?
Resulta que tenemos un algoritmo llamado Maquina de Vector Soporte este
conlleva un truco matemático limpio que nos permite que un ordenador se enfrente
a un número infinito de características, nos adentraremos más en un futuro con
este tipo de algoritmo
Para poder enfatizar correctamente en este capítulo decimos que en el lenguaje
supervisado nosotros tenemos y damos conjuntos o datos que sabemos que son
correctos, teniendo una idea que hay una relación entre dichos datos y
características que damos, ósea entre el input y el output.
Dentro de los problemas del aprendizaje supervisado hay dos categorías principales
los problemas de regresión (regression) y problemas de clasificación (clasification).
En los problemas de regresión tenemos variables en un mapa o grafico los cuales
son valores continuos, y en los problemas de clasificación como su nombre lo dice,
los valores se clasifican a través de finitas o infinitas variables, datos y/o
características.
APRENDIZAJE NO SUPERVISADO
El aprendizaje no supervisado es el segundo problema más común que se tiene en
el machine learning.
Las gráficas o datos que se dan en el aprendizaje no supervisado son diferentes al
aprendizaje supervisado, por ejemplo, en el aprendizaje supervisado teníamos
datos los cuales podíamos distinguir, mientras que en el aprendizaje no supervisado
tenemos datos homogéneos o que se ven de la misma manera.
Grafica de aprendizaje supervisado
1.2
0.8
𝑋
0.6
2
0.4
0.2
0
0 0.2 0.4 𝑋01. 6 0.8 1 1.2
Como podemos ver en la grafica de aprendizaje supervisado diferenciamos dos
tipos de datos los cuales pueden representar cualquier cosa, pero para facilidad
practica podemos decir que los puntos rojos representan tumores cancerígenos
malignos, y los puntos azules con blanco presentan tumores cancerígenos benignos.
Grafica de aprendizaje no supervisado
1.2
0.8
𝑋
0.6
2
0.4
0.2
0
0 0.2 0.4 𝑋01. 6 0.8 1 1.2
Como podemos ver en la grafica de aprendizaje no supervisado nos dan datos
que son diferentes a el aprendizaje supervisado, en esta grafica tenemos datos
que tienen una misma etiqueta, ninguna o que todos tienen el mismo aspecto.
Nos dan el conjunto de datos, pero no nos dicen que hacer con ellos y no nos
dicen que es cada dato puntualmente.
El algoritmo de aprendizaje no supervisado lo que hace con estos datos es dividirlos
y agruparlos de tal manera que nos queden dos grupos o divisiones.
A este tipo de trabajo se le denomina algoritmo de agrupamiento.
Un ejemplo de este tipo de algoritmo se puede representar con Google news,
Spotify, YouTube music, Amazon, etc., ya que, al momento de entrar a alguna
sección de noticias, música o compras, los artículos o canciones se relacionarán o
agruparán de tal manera que el tema principal siempre sea la cabecera o el nodo
principal.
Aplicación
Subgéneros Genero
Grupo de artistas
Como podemos ver en el diagrama anterior lo que hace el algoritmo de
agrupamiento es agrupar una colección de artistas en un género principal definido
(música electrónica).
Pero el aprendizaje no supervisado y los algoritmos de agrupamiento tienen un
mundo entero de aplicaciones tales como servidores, analíticas de redes sociales,
segmentación de marketing, analíticas de datos para la astronomía, etc.
Aparte del algoritmo de agrupamiento tenemos otro tipo de algoritmo llamado
fiesta de cóctel, pero ¿Por qué fiesta de cóctel?
Alguna vez hemos estado en un cóctel, donde al haber múltiples personas las cuales
hablan al mismo tiempo es una tarea difícil poder escuchar a la persona que tienes
enfrente de ti o con la que estas hablando, por lo cual, digamos que es un cóctel
de dos personas en una habitación, tenemos dos micrófonos los cuales registran
las voces de las personas pero de diferentes ángulos, posiciones, secciones, etc., a
lo mejor la persona 1 hablara más fuerte en el micrófono 1 que en el 2, y la persona
2 hablara más fuerte en el micrófono 2 que en el 1, por lo tanto podemos decir
que las personas y los micrófonos quedan de la siguiente manera.
𝑃1
𝑃2
La persona 1 cuenta del 1 a 10 en inglés, mientras que la persona 2 cuenta del 1 a
10 en español por lo que la pista de sonido de la persona 1 queda de la siguiente
manera:
𝑃1
Mientras que la pista de sonido de la persona 2 queda de la siguiente manera:
𝑃2
Entonces si aplicamos el algoritmo fiesta de coctel tenemos que los audios
superpuestos se modificaran y combinaran de tal manera que el audio de la persona
1 y la persona dos quedaran de la siguiente manera:
𝑃1
𝑃2
Los resultados de los audios nos dan que la persona 1 dice la numeración sin
ninguna intromisión del audio de la persona 2, y de la misma manera pasa con la
persona 2, es algo muy impresionante y de seguro te estarás preguntando que dicho
algoritmo ha de tener demasiadas líneas de código y se tiene que vincular a muchas
librerías de Java, Python, C#, etc., pero si te digo que gracias al trabajo de
científicos e ingenieros dichos resultados se pueden hacer en una sola línea de
código.
[W,s,v]=svd((repmat(sum(x.*x,1),size(x,1),1).x*)*x’);
Como podemos ver, si tenemos un entorno de programación adecuado tenemos la
posibilidad de implementar algoritmos de aprendizaje relativamente cortos cuando
se programan, para estos casos utilizaremos GNU Octave un programa y lenguaje
de programación programado en C++, pero de igual manera podemos utilizar
MATLAB.
Descomponiendo la línea de código podemos visualizar diferentes funciones como,
por ejemplo.
svd = Descomposición del valor singular
Si implementamos Octane con nuestro entrono de desarrollo tenemos un
desarrollo en la practica más estable, ya que si lo hacemos con el puro entorno de
desarrollo tendremos que utilizar varias líneas de código y librerías.
Dicho todo lo anterior, podemos englobar el aprendizaje no supervisado como
problemas los cuales no sabemos cómo se verán los resultados. Podemos crear o
derivar estructuras para los datos dados que no necesariamente deben de estar
clasificados en un entorno finito o infinito.
Podemos derivar dichas estructuras en grupos los cuales tengan un relación o
correlación entre las variables que tienen los datos. También sabemos que el
aprendizaje no supervisado no esta basado en los resultados predichos.
(Fin parte 1).