====== Machine Learning ====== También conocido como **aprendizaje automático**, es una disciplina que estudia y desarrolla algoritmos para aprender de la información o hacer predicciones sobre la información. Ejemplos de posibles aplicaciones: * Decidir si un e-mail entrante es spam o no. * Analizar transacciones bancarias para identificar intentos de fraude. ===== Tipos de aprendizaje ===== ==== Aprendizaje supervisado ==== A partir de un conjunto de datos ya etiquetados, el algoritmos predice la etiqueta que le corresponderá a la nueva información que no es conocida previamente. Por ejemplo, en la detección de spam, se podría entrenar un algoritmo con mails etiquetados como spam o no spam y que sea capaz de identificar si los nuevos e-mails corresponderá a spam o no spam. ==== Aprendizaje no supervisado ==== A partir de un conjunto de datos sin clasificar/etiquetar, el algoritmo encuentra la estructura escondida en los datos. ===== Terminología ===== * **Sample** (muestra): representación del objeto a tratar (email, transacción, conductores...) * **Feature**: características de la muestra (edad, sexo del conductor...) * **Label** / **target**: resultado deseado (//ground truth//) asociado con la muestra de entrada (spam o no spam, sobrevivió o no sobrevivió) * **Training data**: conjunto de pares (muestra, etiqueta) utilizados para entrenar el modelo. * **Test data**: conjunto de muestras usado para realizar predicciones. ===== Evaluación ===== Matriz de confusión. Métricas: * Acierto: (#TP + #TN) / total * Precisión: #TP / (#TP + #FP) * Recall: #TP / (#TP + #FN) La **precisión** nos indica cuánto de lo que hemos predicho es correcto y **recall** cuánto de lo que es correcto, lo ha predicho el algoritmo. En Python el módulo ''scikit-learn'' es muy usado para trabajar con aprendizaje supervisado. Ejemplo: https://github.com/bonzanini/VideoCourse-DataAnalysisPython/blob/master/notebooks/Video%204.3%20-%20Supervised%20Learning%20with%20scikit-learn.ipynb