-
Título: Aprendizaje automático con
scikit-learn
-
Todo el material de la charla esta en github:
https://github.com/rafacarrascosa/scikit-learn-pycon-ar-2013
-
Quien soy?
- Rafael Carrascosa.
- Soy programador.
- Me especializo en PLN y ML.
- Trabajo para Machinalis.
- También trabajo de docente.
-
Introducción
-
Clasificación
- Superficies de decisión (iuju!)
-
Clustering
-
Regression
-
Cierre
-
Aprendizaje automático (Machine Learning) en python
-
Open source (BSD)
-
~3 años de edad (de 2007 a 2010 no era público)
-
~1800 stars en github (django ~7800, numpy ~1000)
-
Al
ML
le conciernen algoritmos para aprender funciones a partir de ejemplos. -
Un algoritmo de
ML
es una factory de funciones: Toma ejemplos y produce una función.- Por ejemplo: Un detector de spam toma ejemplos de spam y produce una función que puede decidir si algo es spam o no.
-
Todo trabajo con
ML
tiene una etapa de entramiento. -
Todo trabajo con
ML
tiene una etapa de evaluación.
En el contexto de scikit-learn
, clasificación es la tarea de aprender
a partir de ejemplos una función de la pinta:
Donde
A cada dimension de
- Detección de spam, ejemplo:
$Category = \lbrace {spam}, {nospam} \rbrace$ - OCRs, ejemplo:
$Category = \lbrace a, b, c \dots , 0, 1, 2, \dots \rbrace$ - Procesamiento del Lenguage Natural, ejemplo
$Category = \lbrace {verbo}, {sustantivo}, {adjetivo}, \dots \rbrace$ - Un largo laaaargo etc.
Determinar el sexo de una persona (masculino o femenino) en base a su altura y a su peso. El problema sería aprender:
Donde
Se esperaría que:
En el contexto de scikit-learn
, clustering es la tarea de agrupar
automáticamente datos que son similares entre si. Es decir, aprender
automáticamente una función:
Donde los datos que terminan agrupados juntos son mapeados por
Notar que el dataset no necesita tener una atributo target.
- Biología: inferencia de comunidades, agrupación de genomas humanos
- Investigación de mercado: Grupos de consumidores
- Análisis de redes sociales: Grupos de personas
- Etc.
-
Hierarchical (WARD).
-
Affinity propagation
-
Mean shift
-
Spectral clusterin
En el contexto de scikit-learn
, regresión es la tarea de aprender
a partir de ejemplos una función de la pinta:
- Inumerables aplicaciones en economía, p.ej. Tendencias en la bolsa de valores
- Establecer relaciones causa-efecto en varias áreas de la ciencia
- Ey! es
$\mathbb{R}^n$ a$\mathbb{R}$ , la imaginación es el límite!
Determinar la cantidad de autos que van a pasar por un peaje a lo largo del día en base a los autos que pasaron a las 3am.
Donde
- Ordinary least squared
- Ridge regression
- Lasso
- Elastic net
- Least Angle Regression
- Bayesian Regression
- Perceptron
- Support Vector Regression
- Algunos ensemble methods
- Etc...
- Preproceso de datos:
- Scaling, Normalizacion, Binarizacion
- Label handling, Data imputation
- Feature extractors (p.ej: tf-idf)
- Reduccion de dimensionalidad:
- PCA
- SVD
- Non-negative matrix factorization
- Evaluación y model selection:
- Evaluacion: precision, recall, accuracy, cross validation, etc.
- Grid Search
- Metricas para clusters.
-
Dimensiones altas!
-
Caso de uso: Yalign