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