Machine learning :Aprendizaje Automatico

Basicamente a lo que decimos Machine Learning se la puede dividir en dos ramas: Aprendizaje supervisado y Aprendizaje no Supervisado

Aprendizaje Supervisado:

Modelos De Machine Learning

Dale click a la imagen para ver en mas detalle el modelo que queres ver.

Modelos Simple:

-KNN

Modelos Redes Neuronales:

-Deep Learning, Red Neuronal, Perceptron, Logistic Regression

Modelos Basados en Arboles:

Catboost,Random Forest, Decision Tree, XGboost.

Una rama se dedica al aprendizaje Supervisado donde se caracteriza por tener etiquetas o label ( target )que es aquello que queremos predecir sobre nuestro dataset, en base a los problemas que vamos a predecir, decimos que hay problemas de regresion .

Vamos a tener un dataset que tiene M filas (rows u observaciones) y “n” columnas( features o variables), estas columnas nosotros las podemos modificar, crear y son la parte fundamental del proceso de creacion de un modelo de machine learning, y eso es lo que se conoce como el proceso de “Feature Engineering”

Lo que queremos hacer a partir del dataset es entrenar( es decir derivar a partir de los datos un modelo, y a partir de ese modelo predecir ) a algoritmo de Machine Learning que nos permitira predecir el target(label) a partir de las features(columnas )

Como podemos evaluar el modelo entrenado?

Hacer predicciones con datos con el cual ya sabemos los valores a predecir(label) y ver si el modelo acerto o no con esos datos que ya sabemos cual sera su resultado. Para eso dividimos el set datos en training set o test set. El training set lo usamos para entrenar, y el test set lo usamos para medir la performace de nuestro modelo. Es importante para evaluar nuestro modelo usar el mismo set de entrenamiento, porque el modelo deberia predecir cosas que necesariamente no son iguales a las cosas con que entreno. La medicion , implica el uso de una metrica de performance.

Que metricas usar?

Las metricas a usar dependen si tenemos un problema de clasificacion o regresion.Ejemplo, una metrica para el problema de Clasificacion se conoce como accuracy, que es el porcentaje de datos que clasificamos correctamente, es decir, si tenemos un dataset de 10 datos, y clasificamos bien 7 y 3 mal, entonces tenemos un accuracy de 0.7 (70%) , tambien podemos usar recall , presicion o AUC( Area bajo la curva).

Formas de Separar del dataset el train y test set (Split train-test )

Para poder hacer el split entre el set de entrenamiento y el set de test, hay algunas opciones:

-Split al azar de los regitros que tenemos en el set de datos, por ejemplo 85 % para entrenar y 15 % para test , pero hay que tener cuidado en algunos features que son de tiempo, es muy probable que hacer un split al azar sea incorrecto Ejemplo si nosotros queremos predecir si una persona hara un checkout en nuestra tienda online, entonces esa persona tendra un serie de eventos a partir del cual derivamos los features, es muy importante que el modelo no entrene con datos que son posteriores, el cual ya estan en el set de test , porque si una persona ya se compro una pelota, es muy probable que se compre unos botines, pero si nosotros entrenamos nuestro modelo indicando que la persona tiene unos botines, entonces el modelo va a inferir que tiene una pelota, y eso enrealidad ocurrio luego, entonces es muy importante cuando tenemos una columna tiempo hacer el split entre el set de train y el set de test por esa variable de tiempo, por decir, en nuestro modelo entrenamos con nuestro set train desde enero hasta agosto, y para predecir usamos nuestro set test posterior a agosto.

-Evitar time-travelling mas o menos esta explicado arriba , pero decimos que esto pasa cuando tenemos datos posteriores( que tendra nuestro set test) en nuestro set de entrenamiento, es decir que el modelo se entreno en el futuro , y es erroneo, porque en produccion no pasa esto, pero hay casos donde se puede obviar esta columna tiempo, como ubicar objetos dentro de una imagen, el tiempo no tiene importancia.

-Para las metricas es importante que nuestro set test tenga distribucion productiva, es decir, que el set de test debe tener la misma representacion para predecir tanto en local como en produccion, ya que aveces no es tan importante que nuestro set de entrenamiento seas identico en local que en produccion porque en este ultimo podemos limpiar datos, sacar datos que no nos interesa ect.

Set Desbalanceados

Si el set de datos esta muy desbalanceado puede ser dificil entrenar el modelo, posibles soluciones para esto:

Oversamplear la clase minoritaria

Es decir crear nuevos registros de la clase minoritaria, pero no siempre es factible, ejemplo inventar personas con ciertas caracteristicas, y ventaja no perdemos datos),

Subsamplear clase mayoritaria

Reducimos nuestra clase mayoritaria, la ventaja es que no inventamos datos, pero su desventaja es que perdemos muchos datos, tecnicas que usamos para esto, elegir un sample al azar, hacer un k-means y quedarnos con los k registros mas cercanos que estan a esos k centroides que encontramos con k-means para que encuentre todas las posibles variantes de estos datos y no sean muy repetitivos cosa que podria pasar con el primer ejemplo que dimos)

Manejar el desbalanceo con hiperparametros

En algunos modelos tenemos la posibilidad de entrenar con datos desbalaneados, e indicarle mediante un hiperparametro que clase esta muy desbalanceada con respecto a la otra Ejempo: en xgboost con el hiperparametro scape_post_weight que nos permite indicar el peso de la clase minoritaria con respecto a la mayoritaria

Ejemplo Practico:

Queremos hacer un modelo que prediga si algo es spam o no, entonces el problema viene a partir de nuestro se de entrenamiento, ya que aproximadamente del total de mail el 1 porciento es spam, por lo tanto la machine learning dira entro y tengo 99 accuracy, entonces me dedico a analizar la clase mayoritaria dejando de lado el 1% de spam, y eso erroneo, lo que se hace es obligar al algoritmo a decidir, es decir pasarle ejemplo un 50 por ciento de spam y 50 por ciento de no spam, por lo tanto lo obligaremos a analizar correctamente los datos, ya que supongamos que se pone vago el algoritmo es decir no hace nada, te va a dar un accuracy de 0,5 es decir el peor accuracy posible, ya que si tenemos un accuracy menor como 0,2 entonces solamente invertiendo la prediccion lograremos hacer un accuracy del 0,8, entonces cuando balanceamos obligamos al algortimo a predecir a partir de los datos, y no por la distribucion de los etiquetas(target).

Evaluando el Modelo

Error de Entrenamiento

Entrenamos el modelo con el set train y luego hacemos predicciones para ese mismo set train, olvidandonos del target, y predecilos a traves del modelo generado , esto nos va a dar cierto error que llamaremos error de entrenamiento.

Error de Test

Entrenamos con el set-train y luego hacemos predicciones para nuestro test-set evaluando con la metrica que elegimos.

Que es entrenar un Modelo?

Entrenar un modelo (un modelo esta caracterizado por un conjunto de parametros ejemplo si nuestro modelo es un polinomio de grado n, entonces nuestros parametros son los coeficientes n+1 )es resolver un problema de optimizacion, el modelo busca parametros, las bibliotecas de machine learning resuelven el problema de optimizacion, para ese algoritmo de machine learning para minimizar o maximizar la metrica elegida,dependiendo de la metrica a usar va a variar la tecnica de optimizacion a usar.

Que es un Modelo ya entrenado?

Un modelo entrenado ya queda representado con sus parametros. ejemplo si entrenamos un polinomio de grado 2 , entonces los coeficientes son sus parametros

Regresion:

Donde queremos predecir un valor numerico ejemplos predecir cuanto valdra cierta tierra de acuerdo a sus datos asociados( hay subtes, las casas cerca de ahi son de tierra, ect)

Categoricos:

o problemas de clasificacion donde el target es categorico ejemplo si algo es o no un felino, si alguien hara un checkout en una pagina web o no , si a este usuario le gustara esta comida o no , ect .

Distincion entre un problema de clasificacion y regresion

Hay casos en que la disticion de los problemas de clasificicacion y regresion se torna confusa, ejemplo en los problemas de clasificacion binaria en que las clases pueden ser 1 o 0 , es comun plantearlo como un problema de regresion que va de 0 a 1. Miremos este caso: vamos a prededir si alguien va a tener diabetes o no, que es un problema de clasificiacion binaria donde el label (target ) puede ser 0 o 1, tambien podriamos plantearlo como una regresion entre 0 y 1, y que el resultado sea la probabilidad que la persona tenga diabetes o no, una probabilidad cercana a 1 nos dira que es muy probable que la persona tenga diabetes, o una probabilidad cercana a cero, que es muy probable que no lo tenga, y 0,5 significa que el modelo no se decide, osea que podria o no tener deabetes.

Encontrar puntos que no son normales de acuerdo a la gran distribucion de puntos en nuestro set de datos

Maquina de aprendizaje vs Inteligencia Artificial vs Deep Learning vs Reinforcement Learning

Analizemos los conceptos por separado primeramente:

Inteligencia Artificial

La inteligencia artificial es el estudio informatico en la creacion, investigacion, tecnicas , mediante el cual las computadoras obtienen comportamiento inteligentes similares al ser humano.

Estas habilidades comprenden desde: Entender situaciones y contextos, identificar objetos y obtener significados, aprender hacer nuevas cosas, reconocer imagenes, y NPL entender el lenguaje natural.

Maquina de aprendizaje

La maquina de aprendizaje es un rama de la inteligencia artificial el cual procesa gran cantidad de datos, encontrando patrones , aprendiendo de ellos, con el objetivo de predecir algun resultado, sin una regla preconfigurada por los humanos se los dicte.

Deep Learning

La Deep Learning es el nombre que se le da a las técnicas de machine learning que emplean redes neuronales con capas muy profundas que les permite entrenarse a el mismo, logrando que la IA ademas de aprender conceptos, analizar contexto y entornos demasiados complejos automaticamente. Esto utiliza el tesla en sus autos para indentificar objetos que los rodean como alguna persona que se le cruze, semaforo ect.

Deep Learning vs ML vs IA

Concluyendo, la IA es la capacidad de jugar al futbol, la ML es una tecnica de entrenamiento para aprender a jugar futbol, y la DP te posibilita la capacidad de entrenarse a si mismo para comprender conceptos y entornos mas complejos sobre el juego

Clustering

Es decir agrupar nuestros puntos del dataset de forma automatica en conjuntos que sean similares .