sexta-feira, 31 de outubro de 2014

Aprendizado de Máquina com Scikit-Learn

Neste post pretendo dar continuidade ao post anterior adentrando dessa vez a área de Aprendizado de Máquina (Machine Learning). Agradeço a essencial contribuição do amigo Jason Brownlee que não hesitou em me conceder autorização para seguir a abordagem de suas publicações nesta área.

Antes de falar um pouco mais sobre os algoritmos de Machine Learning (assunto para próximos posts) escrevo um pouco sobre o Scikit-Learn, uma biblioteca de Machine Learning para Python que tem sido amplamente utilizada, sendo defendida por muitos como sendo atualmente a melhor biblioteca para este tipo de aplicações.

Surgimento

Scikit-Learn surgiu a partir de um projeto desenvolvido para o Google Summer of Code de 2007 por David Cournapeau. Mais tarde, Later Matthieu passou a colaborar no projeto como parte de sua tese de doutorado. Em 2010, a empresa INRIA se envolveu e ajudou a publicação da primeira release (v0.1 beta).

Atualmente o projeto é mantido por uma comunidade própria e é patrocinado por INRIA, Google, Tinyclues e a Python Software Foundation.


A biblioteca

Scikit-Learn oferece um amplo conjunto de algoritmos de Machine Learning supervisionados e não-supervisionados acessíveis a partir de uma interface consistente e de fácil usabilidade em Python.

A biblioteca é baseada em um conjunto de outras bibliotecas:

NumPy - Pacote para manipulação de um arrays N-dimensional
SciPy - Pacote para computação científica
Matplotlib - Pacote para gráficos 2D e 3D
IPython - Pacote para terminal interativo de comandos
Sympy - Pacote para matemática simbólica
Pandas - Pacote para análise de estruturas de dados


Pronta para ambientes de produção

Além de oferecer suporte e robustez exigidos por ambientes de produção, a biblioteca Scikit-Learn também foca em usabilidade, limpeza de código, colaboração, documentação e desempenho. Neste último quesito, as funções/rotinas disponibilizadas dispõem das facilidades da linguagem Python, mas possuem mecanismos implementados em linguagens de baixo nível, como C, de forma a otimizar ao máximo a utilização de recursos de hardware.


Funcionalidades

Enquanto esta biblioteca foca mais em modelos estatísticos, outras como NumPy e Pandas são mais adequadas para obtenção, tratamento e análise descritiva de dados.

Algumas funcionalidades oferecidas são:

Clustering - cobre algoritmos não-supervisionados para agrupamento de dados não categorizados, como K-means.
Cross Validation - Técnica para validação de modelos preditivos de algoritmos supervisionados contra dados não vistos.
Datasets - Oferece um conjunto de bases de dados para aplicação das diferentes técnicas de aprendizado.
Dimensionality Reduction - para redução do número de atributos a serem analisados de forma a otimizar a análise.
Ensemble methods - para combinação das predições de diversos modelos supervisionados
Feature extraction - para definição de atributos em dados não estruturados como imagem e texto.
Feature selection - para identificação de atributos estatisticamente relevantes para criação de modelos preditivos supervisionados.
Parameter Tuning - para otimização de execução de modelos preditivos supervisionados.
Manifold Learning - para análise descritiva de dados complexos e multi-dimensionais


Alguns modelos preditivos supervisionados oferecidos pela biblioteca são Generalized Linear Models, Discriminant Analysis, Naive Bayes, Lazy methods, Neural Networks, Support Vector Machines e Decision Trees.


Vantagens sobre outras ferramentas

Este é um tópico interessante de desenvolver em outro post, com comparações específicas. O ponto mais forte a favor da biblioteca Scikit-Learn, no entanto, é usar Python para sua interface de programação, permitindo assim o uso com outros sistemas de produção nesta plataforma. R, por exemplo, não permite esta facilidade, mas por outro lado é uma linguagem muito mais madura para análises estatísticas avançadas e análise exploratória de dados.

Referência

Credito a principal referência desde post ao texto Jump-start Scikit-learn por Jason Brownlee. Não deixe de conferir seu material em machinelearningmastery.com. Obrigado, Jason, pela autorização para usar seu material neste post.


Sugestões, críticas, correções são bem-vindas! Não hesite em comentar!


Até a próxima!


Nenhum comentário:

Postar um comentário