Essa repo foi criada pra manter todos os estudos que vou fazer para acompanhar o livro Introduction to Machine Learning - Andreas C. Müller & Sarah Guido. Caso você decida estudar utilizando meus notebooks, recomendo o Jupyter Notebook Viewer, uma vez que o GitHub não funciona bem com arquivos grandes como eles.
-
O primeiro capítulo é uma introdução aos conceitos iniciais de Machine Learning e utiliza o Iris dataset para demonstrar um exemplo de algoritmo de Machine Learning de Classificação (nesse caso, foi o k-NN numa situação multiclass).
-
O segundo capítulo é um pouco mais denso por tratar de diversos algoritmos de supervised learning. Por isso, decidi separá-lo em duas partes.
- A primeira parte revisa o k-NN e apresenta algoritmos lineares de regressão e classificação, como Linear Regression, Lasso Regression, Ridge Regression, Logistic Regression e Linear Support Vector Machines. Além disso, são introduzidos algoritmos mais simples como os classificadores Naive Bayers (GaussianNB, BernoulliNB e MultiomialNB) e mas também outros complexos como Decision Trees e seus Ensembles, como modelos de Random Forest e XGBoost. Discussões sobre implementação, parametrização, forças e fraquezas de cada um dos algoritmos são feitas nessa parte do livro também.
- A segunda parte apresenta alguns algoritmos mais complexos como o Kernelized SVMs (polinomial e gaussiano), além de dar algumas pinceladas na intuição por trás de Redes Neurais e Deep Learning. Nessa parte, também foram mostrados alguns conceitos relacionados às estimativas de incerteza de previsão de modelos classificadores utilizando funções como a
.predict_proba
, e como interpretá-las.
-
O terceiro capítulo explica alguns dos principais algoritmos de aprendizado não supervisionado, focando, em primeiro momento, naqueles para pré-processamento (como rescalonanadores) e para redução de dimensionalidade (como o PCA, o NMF e o t-SNE) e, na segunda parte do capítulo, nos algoritmos de clusterização. Para o estudo, foram utilizados datasets sintéticos bidimensionais (permitindo visualização) e um dataset do scikit-learn com rostos de famosos dos anos 2000. Além da aplicabilidade dos algoritmos, também foram discutidas as dificuldades de avaliação em modelos não supervisionados de clusterização.
-
O quarto capítulo apresenta e explica algumas das técnicas mais comuns de engenharia de features: binning, transformações logarítimicas e exponenciais, interações polinomiais e também os clássicos encodings possíveis para variáveis categóricas, como one-hot-encoding e label-encoding.
-
No capítulo cinco, foi discutido métodos de validação cruzada, hiperparametrização através do GridSearch e métricas de avaliação - tudo isso para melhorar os modelos discutidos nos capítulos 2 e 3. Entre os pontos tratados, foi dada muita importância para a forma correta de avaliação de modelos para aplicações reais (utilizando um set de testes completamente separado) e o uso de métricas válidas para o problema do negócio. Na minha opinião, faltou um pouco de atenção às principais métricas de regressão, que não foram tratadas no capítulo.
-
O capítulo seis introduziu a classe do scikit-learn chamada
pipeline
, uma ferramenta que ajuda a encadear algoritmos de pré-processamento e modelos. Essa classe é muito útil para a realização da validação-cruzada sem que haja vazamento de dados, da mesma forma que aumenta muito o potencial de hiperparametrizadores como o GridSearchCV. No entanto, as autoras não foram tão fundo no assunto e faltou mostrar como é realizada a criação de funções para pipeline utilizando o próprio scikit-learn, além do poderoso encapsulamento de pipelines. -
O capítulo sete apresentou brevemente o conceito de NLP e alguns passos de pré-processamento simples para tratar dados advindos de textos. Nesse capítulo, utilizamos um dataset contendo 50 mil reviews feitas no site do IMDb sobre filmes, séries e documentários e realizamos análise sentimental simples e modelagem de tópico.
An Introduction to Machine Learning with Python by Andreas C. Müller and Sarah Guido (O’Reilly). Copyright 2017 Sarah Guido and Andreas Müller, 978-1-449-36941-5.