7 conceitos simples de Machine Learning

Mais didático que isso, somente um desenho.

Anúncios
7 conceitos simples de Machine Learning

DL-Learner – Framework para Aprendizado de Máquina

The DL-Learner software learns concepts in Description Logics (DLs) from examples. Equivalently, it can be used to learn classes in OWL ontologies from selected objects. It extends Inductive Logic Programming to Descriptions Logics and the Semantic Web. The goal of DL-Learner is to provide a DL/OWL based machine learning tool to solve supervised learning tasks and support knowledge engineers in constructing knowledge and learning about the data they created.

Purposes of Class Expression Learning

  1. Learn Definitions for Classes: Based on existing instances of an OWL class, DL-Learner can make suggestions for class definitions to be included as an owl:equivalentClass or rdfs:subClassOf Axiom. As the algorithm is biased towards short and human readable definitions, a knowledge engineer can be supported when editing the TBox of an ontology (see Protege Plugin).
  2. Find similar instances: DL-Learner’s suggested class expressions can be used to find similar instances via retrieval (Concept definitions as search). Scalable methods allow the generation of recommendations on the fly, e.g. in a web scenario (see DBpedia Navigator – in experimental stage).
  3. Classify instances: The learned class descriptions can be used in a typical classification scenario, i.e. to decide for unknown instances whether they belong to a certain class. Common ILP benchmarks have been tested with DL-Learner. On the Carcinogenesis page, DL-Learner competes with other state-of-the-art ILP algorithms.

Example

  1. Instance Classification: A user maintains a list of favorites. Based on these favorites, OWL Concepts are learned with DL-Learner and presented to the user in Natural Language. Such a concept could be all articles about proteins that are written by researchers from Germany (e.g. in Manchester syntax: Proteins and hasAuthor some (Person and hasLocation some Germany)). New articles, which fall in this category and are added to the knowledge base, are presented to the user automatically, like a customized RSS feed.
  2. Protégé: In a family ontology, a Protégé user wants to create a definition for the Concept ‘Father’. He / She already asserted some instances to the class Father. Now, the DL-Learner Protege plugin presents the definition (in Manchester OWL syntax): Male and hasChild some Thing.

Implementation

The application is written in Java. A user manual can be found PDF Documenthere. Also there is an overview, a page about its architecture, and a feature list Features. DL-Learner is available as Open-Source at Sourceforge.

It has different learning algorithms, which offer several parameters for fine-tuning. It can solve four closely related learning problems: learning based on positive and negative examples, positive only learning, and learning definitions and subclass relationships in ontologies.

Scalability

As reasoning is heavily used by DL-Learners algorithms, special methods were introduced to increase performance:

  1. Fast Instance Checker is a reasoning component, that is custom tailored for the needs of DL-Learner. After an initial reasoning step on the basis of Pellet, results are pre-calculated and cached. Besides the significant performance boost, the component can optionally apply a form of closed world reasoning, which allows to learn expressions like forall and max/min cardinality. It is an approximate reasoning method, where as usual rare cases of incomplete reasoning results are justified by a huge increase in performance.
  2. DL-Learner can also provide class suggestions for very large knowledge bases, since it uses local fragment reasoning, i.e. only the relevant part (which is small) is used for learning new classes. This enables class learning in real time on knowledge bases like DBpedia. More information can be found PDF Documenthere.
DL-Learner – Framework para Aprendizado de Máquina

Aprendizado de Máquina com Docker

Docker

O Docker é uma plataforma aberta para desenvolvimento e compartilhamento de plataformas distribuídas que podem servir desde para simular implementações de aplicativos ou software; ou mesmo para emular máquinas virtuais.

Esta biblioteca do jetpack contém uma série de scripts para implementação de aprendizado de máquina utilizando a engine do Docker.

Aprendizado de Máquina com Docker

Lições da competição Kaggle inClass

Muito já foi falado do Kaggle aqui, mas um aspecto que eu acho extremamente positivo neste site de competições em aprendizado de máquina é que sempre há algumas formas bem criativas de resolução de problemas ligados à predição e de modelos classificadores.

Neste post do No Free Hunch um time vencedor postou alguns de seus métodos, e a lição principal que fica é a mesma que o Frank Harrell fala em seu excelente livro  que é de sempre olhar os dados.

A seguir alguns pontos fortes da entrevista sobre os métodos utilizados.

Sobre os métodos de processamento inicial dos dados

[…]From the very beginning, our top priority was to develop useful features. Knowing that we would learn more powerful statistical learning methods as our Stanford course progressed, we made sure that we had the features ready so we would be able apply various models to them quickly and easily. […]

[…]When we later applied the boosted decision trees model, we derived additional predictors that expressed the variance in the number of subscriptions bought – theorizing that the decision tree would be more easily able to separate “stable” accounts from “unstable” ones.

We created 277 features in the end, which we applied in different combinations. Surprisingly, our final model used only 18 of them.[…]

Sobre os métodos de aprendizado supervisionado utilizados

[…]Most importantly – and from the very beginning – we used 10-fold cross validation error as the metric to compare different learning methods and for optimization within models.

We started with multiple linear regression models. These simple models helped us become familiar with the data while we concentrated our initial efforts on preparing features for later use.[…]

Sobre o que foi utilizado como técnica

[…]We didn’t have much luck with SVM, BART and KNN. Perhaps we did not put enough effort into that, but since we already had very good results from using boosted trees, the bar was already quite high. Our biggest effort soon turned to tuning the boosted regression tree model parameters.

Using cross validation error, we tuned the following parameters: number of trees, bagfrac, shrinkage, and depth. We then tuned the minobinsnode parameter – we saw significant improvements when adjusting the parameter downwards from its default setting.

Our tuning process was both manual and automated. We wrote R scripts that randomly changed the parameters and set of predictors as then computed the 10-fold cross-validation error on each permutation. But these scripts were usually used only as a guide for approaches that we then further investigated manually. We used this as a kind of modified forward selection process.[…]

Lições da competição Kaggle inClass

Diferença entre Data Mining (Mineração de Dados) e Machine Learning (Aprendizado de Máquina)

Neste post do ARE os autores fazem uma tabela que se não representa 100% do que são essas duas disciplinas tão interligadas, ajuda ao menos colocar um pouco de luz na discussão.

Parâmetro Data Mining (Mineração de Dados) Machine Learning (Aprendizado de Máquina)
Definição Processo de extração de informação de um conjunto de dados e transformação de uma estrutura entendível para posterior uso. Tem como objetivo a construção e estudo de sistemas que podem aprender com os dados.
Foco Tem o foco na descoberta de propriedades desconhecidas dos nos dados. Tem foco na predição, baseado em características conhecidas e aprendidas pelos dados de treinamento.
Tamanho da Base de Dados É um processo automático ou semi-automático para performar em bases com grandes quantidades de dados. É geralmente performada em bases de dados pequenas para o aumento da acurácia.
Tipos Regras de Associação, Classificação,  Clustering (Agrupamento), Padrões Sequenciais, Sequência de Similaridade Supervisionado, Não-Supervisionado, Reforço
Relacionamento A Mineração de Dados usa diversas técnicas provenientes de Aprendizado de Máquina, mas com objetivos distintos. O Aprendizado de Máquina também usa técnicas de mineração de dados como “Aprendizado Não-Supervisonado” ou como “Passo de Pré-Processamento” para melhoria do modelo de aprendizado.
Aplicações Previsão, Classificação, Associação, Clustering (Agrupamento), Geração de Sequências Automação de Controle de Acesso de Funcionários, Proteção da Fauna, Predição de tempo de espera em salas de emergência, Identificação de falha cardíaca
Exemplos de Softwares Carrot2, GATE, UIMA, Weka, NLTK, Torch etc. Apache Mahout ,ELKI, H2O, OpenCV, OpenNN, Weka, MATLAB etc.

 

Diferença entre Data Mining (Mineração de Dados) e Machine Learning (Aprendizado de Máquina)

Comparação entre R e Python utilizando Florestas Aleatórias e Classificação

Neste post do blog do Yhat tem o código, os dados e os resultados.

Pessoalmente gosto muito da abordagem dos autores em comparação de classificadores usando as métricas de Acurácia, Erro Quadrático Médio e  para regressão e tempo de treinamento.

Para projetos curtos de avaliação de uma série de classificadores essas medidas são suficientes para dar uma linha de base. Essas medidas podem auxiliar na escolha de quais modelos estão com melhor convergência e podem indicar um melhor tratamento dos dados em termos de quais variáveis são pertinentes ao modelo escolhido.

 

 

Comparação entre R e Python utilizando Florestas Aleatórias e Classificação

Hello World em Aprendizado de Máquina

Para quem não sabe Hello World é uma expressão muito utilizada em programação, e é uma frase colocada em códigos para fins de aprendizado.

Neste post do Jason Brownlee do Machine Learning Mastery ele mostra como iniciar os estudos em aprendizado de máquina, seja para programadores ou não.

Esse tipo de post é perfeito para qualquer pessoa que deseja trabalhar com mineração de dados, pois diferentemente do aprendizado estruturado (que é bom), e do aprendizado orientado a resolução de problemas (que é ruim), e do aprendizado não-estruturado orientado à curiosidade para fins de descoberta (que é excelente).

Depois desse post, não tem mais desculpas para não começar com aprendizado de máquina.

 

Hello World em Aprendizado de Máquina

Aprendizado de Máquina não é uma competição do Kaggle

Neste post da Julia Evans ela faz um paralelo entre um trabalho real de aprendizado de máquina que envolve conceitualização do projeto, escolha de métricas de desempenho, e alguns aspectos de pré-processamento de dados que são responsáveis pelos 80% do trabalho em análise de dados/aprendizado de máquina; com as competições do Kaggle que muitas vezes os competidores apenas escolhem uma técnica, fazem Cross-Validation e o problema está resolvido.

Aprendizado de Máquina não é uma competição do Kaggle

Planilha de Aplicações de Aprendizado de Máquina

Diretamente do excelente site do Emanuel Ferm, ele trás uma planilha de estudos pessoais que ele usa para ver o determinado contexto de aplicação de alguma técnica de aprendizado de máquina.

cheat3

 

Planilha de Aplicações de Aprendizado de Máquina

Algumas coisas para saber sobre Aprendizado de Máquina

Neste trabalho do Pedro Domingos da Universidade de Washington é um manual mais do que completo para quem quer começar a entender o que é o Aprendizado de Máquina, disciplina esta tão ligada com a Mineração de Dados.

A Few Useful Things to Know about Machine Learning

 

Algumas coisas para saber sobre Aprendizado de Máquina

Aprendizado de Máquina Utilizando Função de Custo

Um vídeo bastante elucidativo sobre o quanto a abordagem sensível ao custo pode auxiliar na construção de modelos preditivos ou de classificação.

Aprendizado de Máquina Utilizando Função de Custo

4 projetos de Aprendizado de Máquina para estudos auto-didata

Basicamente divididos em 4 estratégias de estudo:

1. Study a Machine Learning Tool
2. Study a Machine Learning Dataset
3. Study a Machine Learning Algorithm
4. Implement a Machine Learning Algorithm

4 projetos de Aprendizado de Máquina para estudos auto-didata

Lição de Aprendizado de Máquina do Dia – Classificação e Regressão

Uma explicação que cabe uma reflexão:

“[…]Thus, regression in statistics is different from regression in supervised learning.
In statistics,
• regression is used to model relationships between predictors and targets, and the targets could be continuous or categorical.
• a regression model usually includes 2 components to describe such relationships:
o a systematic component
o a random component. The random component of this relationship is mathematically described by some probability distribution.
• most regression models in statistics also have assumptions about thestatistical independence or dependence between the predictors and/or between the observations.
• many statistical models also aim to provide interpretable relationships between the predictors and targets.
o For example, in simple linear regression, the slope parameter, , predicts the change in the target, , for every unit increase in the predictor, .
In supervised learning,
• target variables in regression must be continuous
• regression has less or even no emphasis on using probability to describe the random variation between the predictor and the target
o Random forests are powerful tools for both classification and regression, but they do not use probability to describe the relationship between the predictors and the target.
• regression has less or even no emphasis on providing interpretable relationships between the predictors and targets.
o Neural networks are powerful tools for both classification and regression, but they do not provide interpretable relationships between the predictors and the target.
[…]”

Lição de Aprendizado de Máquina do Dia – Classificação e Regressão

Definições sobre Mineração de Dados, Estatística, e Aprendizado de Máquina

Esse post do Geomblog de maneira bem simples (beirando a genialidade) define bem essas disciplinas da seguinte forma:

  • Mineração de Dados é a arte de encontrar padrões nos dados;
  • Estatística é a ciência matemática associada com o desenho de inferências de dados com ruído; e
  • Aprendizado de Máquina é [uma ramificação da Ciência da Computação] que desenvolve tecnologia para inferência automatizada (sua caracterização original era como uma ramificação da engenharia).
Definições sobre Mineração de Dados, Estatística, e Aprendizado de Máquina