Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lectura 3
Lectura 3
Machine learning
3.1 Aprendizaje supervisado
3.1.1 Conceptos generales
Machine learning desarrolla algoritmos que hace que las máquinas aprendan
por su cuenta, y permite que respondan determinadas preguntas con un cierto
grado de certeza. Para poder aplicar estos algoritmos existen dos tipos de
aprendizajes: supervisado y no supervisado.
Sueldo vs antigüedad
140.000,00
120.000,00
100.000,00
20.000,00
-
0 20 40 60 80 100 120
𝑦̂ = 𝜃0 + 𝜃1 𝑋
Se puede observar que es una función lineal, en donde 𝑋 es la variable de
entrada (la antigüedad del empleado) y la 𝑦̂ es la variable a predecir (sueldo
del empleado). Mientras que las constantes 𝜃0 y 𝜃1 representan la inclinación
y la posición de la recta para representar el dataset a predecir.
𝑚
1
𝐽(𝜃0 , 𝜃1 ) = ∑(𝑦̂ 𝑖 − 𝑦 𝑖 )2
2𝑚
𝑖=1
Una vez que se sabe cómo generar la hipótesis y cómo medir que tan buena
es, hay que continuar por encontrar la mejor hipótesis para el problema a
predecir. Para esto se utiliza gradient descent que permite optimizar el
algoritmo cambiando los parámetros 𝜃0 , 𝜃1 en cada iteración hasta encontrar
el costo de función mínimo.
Antigüedad Salario
1.1 39343.00
1.3 46205.00
1.5 37731.00
2.0 43525.00
2.2 39891.00
2.9 56642.00
3.0 60150.00
3.2 54445.00
3.2 64445.00
3.7 57189.00
3.9 63218.00
4.0 55794.00
4.0 56957.00
4.1 57081.00
Una vez que contamos con la información es necesario validar qué tipo de
relación tienen los datos, y de acuerdo con un diagrama de dispersión se llega
a la conclusión que es lineal:
Figura 4: Dispersión de antigüedad vs. salario
1) Dividir el dataset en dos muestras: por un lado, los datos que se van a
utilizar para que el modelo aprenda y la otra, para probar el modelo.
En Python sería:
Donde:
i. 𝑋_𝑡𝑟𝑎𝑖𝑛: un conjunto de valores de antigüedades que
se usan para entrenar el modelo de regresión.
ii. 𝑋_𝑡𝑒𝑠𝑡: un conjunto de valores de antigüedades que
se usan para probar el modelo.
iii. 𝑌_𝑡𝑟𝑎𝑖𝑛: son los salarios de las antigüedades
𝑋_𝑡𝑟𝑎𝑖𝑛 que se toman para entrenar al modelo y
saber que predecir.
iv. 𝑌_𝑡𝑒𝑠𝑡: son los salarios de las antigüedades.
𝑋_𝑡𝑒𝑠𝑡 que se utilizan para determinar cómo predice
el modelo.
2) Entrenar el modelo de regresión lineal con las muestras de
entrenamiento:
Resultado de la sentencia:
𝑌 = 2.5792𝑒 + 04 + 9450.0𝑋
5) Visualizar la función lineal con respecto a los datos reales del salario
de los empleados con respecto a la antigüedad:
Figura 5: Resultado del modelo antigüedad vs. salario
Para finalizar, se pueden obtener datos estadísticos para saber qué tan
confiable es el modelo resultante. Para continuar con el ejemplo y con el uso
de Python sería de la siguiente forma:
3.1.3 Clasificación
En el caso de querer predecir o clasificar datos que no son tipos de datos
continuos existen diversos algoritmos adaptados para resolver este tipo de
problemas, entre ellos se encuentra la regresión logística, árboles de decisión,
random forest, etc. En esta sección se va a demostrar el uso de la regresión
logística y cómo trabaja, teniendo en cuenta que es un algoritmo simple, fácil
de implementar y es robusto para utilizar en muchas tareas.
¿Cómo clasificar si son más de dos clases? existen dos métodos para realizar
una clasificación para más de dos clases. Por ejemplo, si se desea clasificar
las siguientes frutas: manzana (0), banana (1) y naranja (2), ya no estaríamos
bajo valores binarios, por lo tanto, sería más difícil clasificar por medio del
uso de regresión logística con una clasificación binaria. Entonces, existen
algunas alternativas para dar solución a este caso de problemas:
Uno versus todos: en este se debería entrenar 3 modelos, uno para cada
clase (manzana, banana y naranja), de esta forma existe un modelo para
detectar manzana con un resultado 1, y 0 en el caso que sea cualquiera
de las otras, y replicando esta lógica para el resto de las frutas.
Uno versus uno: crear un modelo para cada par de frutas. En este caso
sería un modelo para predecir manzana vs. banana, otro para distinguir
entre manzana vs. naranja, y así continuar para cada par de frutas.
Sueldo ¿Compró?
Género Edad
estimado
Male 45 26000 1
Male 46 28000 1
Female 48 29000 1
Male 45 22000 1
Female 47 49000 1
Male 48 41000 1
Female 45 22000 1
Male 46 23000 1
Male 47 20000 1
Male 49 28000 1
Female 47 30000 1
Male 29 43000 0
Male 31 18000 0
Male 31 74000 0
Female 27 137000 1
Female 21 16000 0
Female 28 44000 0
1) Dividir el dataset en dos muestras, por un lado los datos que se van a
utilizar para que el modelo aprenda y la otra para probar el
modelo. En Python sería:
4) Visualizar la función lineal que realiza la división entre los clientes que
compran (el valor es igual a 1) y cuáles no (el valor es igual a 0), a
partir de eso se puede predecir los próximos clientes que tengan las
mismas características de alguna de las clasificaciones y predecir su
comportamiento:
Figura 10: Clasificador de clientes
3.2.2 Clustering
Todos los problemas de aprendizaje no supervisado se destacan en hacer
inferencias sobre un conjunto de datos (datasets) para lograr alguna
predicción en particular. En el caso de clustering, que es un modelo no
supervisado, consiste en agrupar una colección de datos agrupados entre sí
porque comparten ciertas similitudes. Por ejemplo, se puede aplicar un
algoritmo de clustering para segmentar una cartera de clientes en grupos
similares, ya sea por sus actividades, su género, cosas que les gusta y no en
las redes sociales, edad, su historial de actividad con respecto a la empresa,
etc. A partir de esta segmentación se pueden crear campañas de marketing
personalizadas, detectar síntomas para ciertas enfermedades, agrupar
noticias según el tipo de información que tiene (como lo hace Google News),
o para gran cantidad de aplicaciones.
Una vez definido el valor de K, es decir de la cantidad de clusters con los que
se van a trabajar el algoritmo sigue los siguientes pasos:
𝑘𝑚𝑒𝑎𝑛𝑠 = 𝐾𝑀𝑒𝑎𝑛𝑠(𝑛_𝑐𝑙𝑢𝑠𝑡𝑒𝑟𝑠 = 4)
𝑘𝑚𝑒𝑎𝑛𝑠. 𝑓𝑖𝑡(𝑋)