Aprendizado de máquina: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
Horadrim (discussão | contribs)
Melhoria do verbete a partir do inglês.
Linha 1: Linha 1:
{{sem-fontes|data=junho de 2010}}
{{sem-fontes|data=junho de 2010}}
A '''aprendizagem automática''' ou '''aprendizado de máquina (em inglês: "machine learning")''' é um sub-campo da [[inteligência artificial]] dedicado ao desenvolvimento de [[algoritmo]]s e técnicas que permitam ao [[computador]] aprender, isto é, que permitam ao computador aperfeiçoar seu desempenho em alguma tarefa. Enquanto que na inteligência artificial existem dois tipos de [[raciocínio]] - o [[Raciocínio indutivo|indutivo]], que extrai regras e padrões de grandes conjuntos de dados, e o [[Dedução|dedutivo]] - o aprendizado de máquina só se preocupa com o indutivo.
A '''aprendizagem automática''' ou '''aprendizado de máquina (em inglês: "machine learning")''' é um sub-campo da [[ciência da computação]]<ref name=":0">{{citar web|url=https://global.britannica.com/technology/machine-learning|titulo=Definição: machine learning|data=|acessodata=|obra=Enciclopedia Britannica|publicado=|ultimo=|primeiro=|lingua=Inglês}}</ref> que evoluiu do estudo de [[reconhecimento de padrões]] e da [[teoria da aprendizagem computacional]] em [[inteligência artificial]]<ref name=":0" />. Em 1959, [[Arthur Samuel]] definiu aprendizado de máquina como o "campo de estudo que dá aos computadores a habilidade de aprender sem serem explicitamente programados"<ref>{{citar livro|url=https://books.google.com.br/books?id=Dn-Gdoh66sgC&pg=PA89&redir_esc=y#v=onepage&q&f=false|titulo=Too Big to Ignore: The Business Case for Big Data|ultimo=Simon|primeiro=Phil|editora=Wiley|ano=Março, 18, 2013|isbn=978-1-118-63817-0|local=|paginas=89|acessodata=}}</ref>(livre tradução). A aprendizagem automática explora o estudo e construção de [[Algoritmo|algoritmos]] que podem [[Aprendizagem|aprender]] de seus erros e fazer previsões sobre [[dados]]<ref>{{citar web|url=http://ai.stanford.edu/~ronnyk/glossary.html|titulo=Glossary of terms|data=|acessodata=|obra=Machine Learning 30: 271–274|publicado=|ultimo=Kohavi|primeiro=Ron|ultimo2=Provost|primeiro2=Foster|ano=1998}}</ref>. Tais algoritmos operam construindo um modelo a partir de inputs amostrais a fim de fazer previsões ou decisões guiadas pelos dados ao invés de simplesmente seguindo inflexíveis e estáticas [[Programação de computadores|instruções programadas]]. Enquanto que na inteligência artificial existem dois tipos de [[raciocínio]] - o indutivo, que extrai regras e padrões de grandes conjuntos de dados, e o [[Dedução|dedutivo]] - o aprendizado de máquina só se preocupa com o indutivo.


Algumas partes da aprendizagem automática estão intimamente ligadas (e muitas vezes sobrepostas) à estatística computacional; uma disciplina que foca em como fazer previsões através do uso de computadores, com pesquisas focando nas propriedades dos métodos estatísticos e sua [[complexidade computacional]]. Ela tem fortes laços com a [[Otimização|otimização matemática]], que produz métodos, teoria e domínios de aplicação para este campo. A aprendizagem automática é usada em uma variedade de tarefas computacionais onde criar e programar [[Algoritmo|algoritmos]] explícitos é impraticável. Exemplos de aplicações incluem filtragem de spam, [[reconhecimento ótico de caracteres]] (OCR)<ref>{{citar periódico|ultimo=Wernick, Yang, Brankov, Yourganov and Strother|primeiro=|data=Julho, 2010|titulo=Machine Learning in Medical Imaging|jornal=IEEE Signal Processing Magazine|volume=27|numero=4|paginas=25-38|doi=|url=|acessadoem=}}</ref>, [[processamento de linguagem natural]], [[Motor de busca|motores de busca]], [[Diagnóstico|diagnósticos médicos]], [[bioinformática]], [[reconhecimento de fala]], [[reconhecimento de escrita]], [[visão computacional]] e locomoção de [[Robô|robôs]]. O aprendizado de máquinas é às vezes confundido com [[mineração de dados]]<ref>{{citar periódico|ultimo=Mannila|primeiro=Heikki|ano=1996|titulo=Data mining: machine learning, statistics, and databases|jornal=Int'l Conf. Scientific e Statistical Database Management. IEEE Computer Society|doi=|url=|acessadoem=}}</ref>, que é um sub-campo que foca mais em análise exploratória de dados e é conhecido como aprendizado não supervisionado<ref>{{citar periódico|ultimo=Friedman|primeiro=Jerome H.|ano=1998|titulo=Data Mining and Statistics: What's the connection?|jornal=Computing Science and Statistics 29 (1): 3–9|volume=|doi=|url=|acessadoem=}}</ref>. No campo da análise de dados, o aprendizado de máquinas é um método usado para planejar modelos complexos e algoritmos que prestam-se para fazer predições- no uso comercial, isso é conhecido como análise preditiva. Esses modelos analíticos permitem que pesquisadores, cientistas de dados, engenheiros, e analistas possam "produzir decisões e resultados confiáveis e repetíveis" e descobrir os "insights escondidos" através do aprendizado das relações e tendências históricas nos dados.<ref>{{citar web|url=http://www.sas.com/it_it/insights/analytics/machine-learning.html|titulo=Machine Learning: What it is and why it matters|data=|acessodata=10-10-2016|obra=|publicado=SAS The Power to Know|ultimo=|primeiro=|lingua=en}}</ref>
Algumas partes da aprendizagem automática estão intimamente ligadas à [[mineração de dados]] e [[estatística]]. Sua pesquisa foca nas propriedades dos [[método estatístico|métodos estatísticos]], assim como sua [[complexidade computacional]]. Sua aplicação prática inclui o [[processamento de linguagem natural]], [[motor de busca|motores de busca]], [[diagnóstico|diagnósticos médicos]], [[bioinformática]], [[reconhecimento de fala]], [[reconhecimento de escrita]], [[visão computacional]] e locomoção de [[robô]]s.
== Resumo ==
Tom M. Mitchell forneceu uma definição mais formal amplamente citada: "Se diz que um programa de computador aprende pela experiência ''E'' com respeito a algum tipo de tarefa ''T'' e performance ''P'' se sua performance ''P'' nas tarefas em ''T'', como medidas por ''P'', melhoram com a experiência ''E''."<ref>{{citar livro|titulo=Machine Learning|ultimo=M. Mitchell|primeiro=Tom|editora=McGraw Hill|ano=1997|isbn=0-07-042807-7|local=|paginas=2|acessodata=}}</ref> Esta definição é notável pois define aprendizado de máquina em termos fundamentalmente operacionais ao invés de cognitivos, de forma a seguir a proposta de [[Alan Turing]] em seu artigo "[[Computadores e inteligência]]" de que a pergunta "Podem as máquinas pensar?" seja substituída pela pergunta "Podem as máquinas fazer o que (nós como entidade pensantes) podemos fazer?"<ref>{{citar livro|url=http://eprints.soton.ac.uk/262954/|titulo=The Annotation Game: On Turing (1950) on Computing, Machinery, and Intelligence|ultimo=Harnad|primeiro=Steven|obra=in Epstein, Robert; Peters, Grace: Parsing the Turing Test: Philosophical and Methodological Issues in the Quest for the Thinking Computer|editora=Springer|ano=2008|paginas=23-66|lingua=en|acessodata=10-10-2016}}</ref>


=== Tipos de problemas e tarefas ===
Abordagens:
As tarefas de aprendizado de máquina são tipicamente classificadas em três amplas categorias, dependendo da natureza do "sinal" ou "feedback" de aprendizado disponível para um sistema de aprendizado. Estes são:<ref name=":1">{{citar livro|url=https://drive.google.com/file/d/0ByctuzDL9lM9ZGFhNGQ1NjgtODAwOS00NDAyLWE3MDgtZWFjZTRhNDE4MGY5/view?hl=en_GB|titulo=Artificial Intelligence: A Modern Approach|ultimo=Russell|primeiro=Stuart|ultimo2=Norvig|primeiro2=Peter|editora=Prentice Hall|ano=2003 [1995]|isbn=978-0137903955|edicao=2|local=|paginas=|lingua=en|acessodata=}}</ref>
* [[Aprendizagem supervisionada]] (Ex: [[etiquetar]])
* ''Aprendizagem supervisionada'': É apresentado ao computador exemplos de imputs e outputs desejados, dados por um "professor", e o objetivo é aprender uma regra geral que [[Mapa (matemática)|mapea]] os inputs aos outputs.
* [[Aprendizagem não supervisionada]] ([[clustering]], [[estatística]])
* ''Aprendizagem não supervisionada'' ([[clustering]], [[estatística]]): Nenhum tipo de etiqueta é dado ao algoritmo de aprendizado, deixando-o sozinho para encontrar estrutura em seus inputs. A aprendizagem não supervisionada pode ser um objetivo em si mesma (descobrir novos padrões nos dados) ou um meio com um fim.
* [[Aprendizagem por reforço]] (informação de entrada como feedback)
* ''Aprendizagem por reforço'': Um programa de computador interage com um ambiente dinâmico no qual ele deve desempenhar um determinado objetivo (como por exemplo, dirigir um veículo), sem um professor lhe dizer explicitamente se ele chega perto de seu objetivo ou não. Outro exemplo é aprender a jogar um determinado jogo justamente jogando contra um oponente.
* [[Transdução]] (semelhante ao supervisionado, mas sem uma função explícita)
Entre a aprendizagem supervisionada e não supervisionada está a aprendizagem semi-supervisionada, na qual o professor dá um sinal de treinamento incompleto: um conjunto de treinamentos com alguns (muitas vezes vários) dos outputs desejados ausentes. Transdução é um caso especial deste princípio onde o conjunto inteiro das instâncias do problema é conhecido no momento do aprendizado, exceto que parte dos objetivos está ausente.
* [[Aprendizado multitarefa]]

Entre outras categorias de problemas de aprendizado de máquina, o meta aprendizado aprende seu próprio viés indutivo baseado em experiência prévias. A [[robótica epigenética]], elaborada para a aprendizagem de robôs, gera suas próprias sequências (também chamadas de currículo) de situações de aprendizado para adquirir cumulativamente repertórios de novas habilidades através de uma exploração autônoma de si e da interação social com professores humanos, fazendo uso de mecanismo guias tais como aprendizagem ativa, maturação, sinergias motoras e imitação.

Outra categorização de tarefas de aprendizado de máquina surge quando se considera o ''output'' desejado em um sistema de aprendizado de máquina:
* Em classificação, inputs são divididos em duas ou mais classes, e o que aprende deve produzir um modelo que designa inputs não vistos à uma ou mais (classificação multi-etiquetada) dessas classes. Isto é tipicamente abordado de forma supervisionada. Filtragem de spam é um exemplo de classificação, onde o input são as mensagens de emails (ou outros) e as classes são "spam" ou "não spam".
* Em [[regressão]], também um problema supervisionado, os outputs são contínuos ou invés de discretos.

* Em [[clustering]], um conjunto de inputs será dividido em grupos. Diferente da classificação, os grupos não são conhecidos previamente, fazendo do clustering uma tarefa tipicamente não supervisionada.
* Estimação de densidade encontra a distribuição de inputs em algum espaço.
* Redução dimensional simplifica os inputs ao mapea-los em um espaço de menor dimensão. O modelo tópico é um problema relacionado, onde se dá uma lista de documentos em [[Língua natural|linguagem humana]] ao programa pedindo a ele, como tarefa ,encontrar quais documentos tratam de temas similares.

== História e relação com outros campos ==
Como um esforço científico, o aprendizado de máquina cresceu a partir da busca pela inteligência artificial. Ainda nos princípios da IA como disciplina acadêmica, alguns pesquisadores já se interessavam em fazer máquinas aprenderem a partir de dados. Eles tentaram abordar o problema desde vários métodos simbólicos, assim como com o que foi então nomeado de "[[rede neural artificial]]"; estes eram majoritariamente [[Perceptron|perceptrons]] e outros modelos que mais tardes foram entendidos como reinvenções de [[Modelo linear generalizado|modelos linear generalizados]] de estatística. A [[lógica probabilística]] também foi usada, especialmente em diagnósticos médicos automatizados.<ref name=":1" /><sup>:488</sup>

No entanto, uma crescente ênfase na abordagem lógica, baseada em conhecimento, causou uma brecha entre a IA e o aprendizado de máquina. Sistemas probabilísticos eram atormentados por problemas teoréticos e práticos de aquisição e representação de dados.<ref name=":1" /><sup>:488</sup> Em 1980, [[Sistema especialista|sistemas especialistas]] haviam dominado a IA, e a estatística estava fora de uso.<ref name=":2">{{citar periódico|ultimo=Langley|primeiro=Pat|ano=2011|titulo=The changing science of machine learning|jornal=Machine Learning|volume=82|numero=3|paginas=275–279|doi=10.1007/s10994-011-5242-y|url=http://link.springer.com/article/10.1007%2Fs10994-011-5242-y|acessadoem=10-10-2016|idioma=Inglês}}</ref> Trabalhos em aprendizado baseado em conhecimento/simbólico continuaram com a IA, levando até a programação lógica indutiva, mas agora as pesquisas mais voltadas para a estatística estavam fora do campo da IA, em [[reconhecimento de padrões]] e [[recuperação de informação]].<ref name=":1" /><sup>:708–710; 755</sup> Pesquisas em redes neuronais haviam sido abandonadas pela IA e ciência computacional em torno do mesmo período. Essa linha, também, foi continuada forma dos campos da IA e da ciência da computação, como "conexionismos", por pesquisadores de outras disciplinas incluindo [[John Hopfield|Hopfield]], Rumelhart e Hinton. Seu sucesso principal veio em meados dos anos 80 com a reinvenção da propagação para trás.<ref name=":1" /><sup>:25</sup>

O aprendizado de máquina, reorganizado como um campo separado, começou a florescer nos anos 90. O campo mudou seu objetivo de alcançar a inteligência artificial para abordar problemas solucionáveis de natureza prática. Ele abandonou o foco em abordagens simbólicas que havia herdado da IA para métodos e modelos emprestados da estatística e da teoria da probabilidade.<ref name=":2" /> Ele também se beneficiou do crescente número de informação digitalizada disponível e a possibilidade de distribuir ela via [[internet]].

O aprendizado de máquina e a mineração de dados com freqüência fazem uso dos mesmos métodos e se sobrepões significantemente, mas enquanto o aprendizado de máquina foca em fazer previsões, baseado em propriedades ''conhecidas'' aprendidas pelo dados de treinamento, a [[mineração de dados]] foca em descobrir as propriedades (previamente) ''desconhecidas'' nos dados (este é o passo dado na análise de [[extração de conhecimento]] na base de dados). A mineração de dados usa muitas métodos do aprendizado de máquina, mas com objetivos diferentes; por outro lado, o aprendizado de máquina também faz uso de métodos da mineração de dados como "aprendizado não supervisionado" ou como um passo de processamento para melhorar a precisão do aprendiz. Muita da confusão entre essas duas comunidades de pesquisa (que com freqüência tem conferências e periódicos separados, ECML PKDD sendo a grande excessão) vem da suposição básica com que eles trabalham: em aprendizado de máquina, a performance é normalmente avaliada com respeito a habilidade de reproduzir conhecimento ''conhecido'', enquanto que com a extração de conhecimento e mineração de dados (KDD) a tarefa chave é o descobrimento de conhecimento previamente ''desconhecido''. Avaliado com respeito ao conhecimento conhecido, um método uniforme (não supervisionado) será facilmente superado por outros métodos supervisionados, enquanto que em uma tarefa KDD típica, métodos supervisionados não podem ser usados devido a não disponibilidade de dados de treinamento.

O aprendizado de máquina também tem laços íntimos com a otimização: muitos dos problemas de aprendizado são formulados como minimização de algumas funções de perda em um conjunto exemplo de treinamentos. Funções de perda expressam a discrepância entre as previsões do modelo sendo treinado e as verdadeiras instâncias do problema (por exemplo, em classificação, o objetivo é designar etiquetas para instâncias, e modelos são treinados para predizer corretamente as etiquetas previamente designadas de um conjunto exemplo). A diferença entre os dois campos surge do objetivo da generalização: enquanto que o algoritmo de otimização pode minimizar a perda em um conjunto de treinamento, o aprendizado de máquina está preocupado com a minimização da perda de amostras não vistas.<ref>{{citar livro|titulo=Improving First and Second-Order Methods by Modeling Uncertainty In Sra, Suvrit; Nowozin, Sebastian; Wright, Stephen J. Optimization for Machine Learning|ultimo=Le Roux|primeiro=Nicolas|ultimo2=Bengio|primeiro2=Yoshua|ultimo3=Fitzgibbon|primeiro3=Andrew|editora=MIT Press|ano=2012|local=|paginas=404|lingua=en|acessodata=}}</ref>

=== Relação com estatística ===
O aprendizado de máquina e a [[estatística]] são campos intimamente relacionados. De acordo com Michael I. Jordam, as ideias do aprendizado de máquina, dos princípios metodológicos às ferramentas teóricas, tem uma longa pré-história na estatística.<ref name=":3">{{citar web|url=https://www.reddit.com/r/MachineLearning/comments/2fxi6v/ama_michael_i_jordan/ckelmtt?context=3|titulo=Statistics and machine learning|data=09-10-2014|acessodata=11-10-2016|obra=|publicado=Reddit|ultimo=I. Jordan|primeiro=Michael|lingua=en}}</ref> Ele também sugeriu o termo ciência de dados como um substituto para chamar o campo como um todo.<ref name=":3" />

[[Leo Breiman]] distinguiu dois paradigmas da modelagem estatística: modelo de dados e modelo algorítmico,<ref>{{citar periódico|ultimo=Breiman|primeiro=Leo|ano=2001|titulo=Statistical Modeling: The Two Cultures (with comments and a rejoinder by the author)|jornal=Statistical Science|volume=16|numero=3|paginas=199-231|editora=The Institute of Mathematical Statistics|doi=|url=http://projecteuclid.org/euclid.ss/1009213726|acessadoem=|lingua2=en}}</ref> onde "modelo algorítmico" significa mais ou menos os algoritmos do aprendizado de máquina como a Floresta aleatória.

Alguns estatísticos tem adotado métodos do aprendizado de máquinas, levando ao campo combinado que eles chamam de ''aprendizado estatístico''.<ref>{{citar livro|url=http://www-bcf.usc.edu/~gareth/ISL/|titulo=An Introduction to Statistical Learning|ultimo=Gareth|primeiro=James|ultimo2=Witten|primeiro2=Daniela|ultimo3=Hastie|primeiro3=Trevor|ultimo4=Tibshirani|primeiro4=Robert|editora=Springer|ano=2013|local=|paginas=7|lingua=en|acessodata=}}</ref>

== Teoria ==
{{AP|Teoria da aprendizagem computacional}}

Um dos objetivos centrais de um aprendiz é generalizar a partir de suas experiências.<ref>{{citar livro|titulo=Pattern Recognition and Machine Learning|ultimo=Bishop|primeiro=Christopher|editora=Springer|ano=2006|isbn=0-387-31073-8|local=|paginas=|lingua=en|acessodata=}}</ref><ref>{{citar livro|titulo=Foundations of Machine Learning|ultimo=Mehryar|primeiro=Mohri|ultimo2=Rostamizadeh|primeiro2=Afshin|ultimo3=Talwalkar|primeiro3=Ameet|editora=MIT Press|ano=2012|isbn=978-0-262-01825-8|local=|paginas=|lingua=en|acessodata=}}</ref> Generalização neste contexto é a habilidade de uma máquina aprendiz de desempenhar com precisão em novos, não vistos, exemplos/tarefas depois de ter experimentado um conjunto de dados de aprendizado. Os exemplos de treinamento vem de algumas, geralmente desconhecidas, distribuições de probabilidade (consideradas representativas do espaço de ocorrência) e o aprendiz tem de construir um modelo geral sobre este espaço que o permita produzir previsões o suficientemente precisas em novos casos.

A análise computacional de algoritmos de aprendizado de máquina e sua performance é um ramo da [[ciência da computação teórica]] conhecida como [[teoria da aprendizagem computacional]]. Porque os conjuntos de treinamento são finitos e o futuro é incerto, a teoria de aprendizado normalmente não guarda garantias para a performance dos algoritmos. Em vez disso,previsões probabilísticas para a performance são bastante comuns. O tarde-off entre variância e viés é uma forma de qualificar o erro de generalização.

Para uma melhor performance no contexto de generalização, a complexidade da hipótese deveria combinar com a complexidade da função subjacente aos dados. Se a hipótese é menos complexa que a função, então o modelo sub-ajustou (''underfitting'') os dados. Se a complexidade do modelo é aumentada em resposta, então o erro de treinamento diminui. Mas se a hipótese é muito complexa, então o modelo foi [[Sobreajuste|sobreajustado]] (''overfitting''), e a generalização será mais pobre.<ref>{{citar livro|url=https://books.google.com/books?id=NP5bBAAAQBAJ&printsec=frontcover&dq=ethem+alpaydin&hl=tr&sa=X&redir_esc=y#v=onepage&q=ethem%20alpaydin&f=false|titulo=Introduction to Machine Learning|ultimo=Alpaydin|primeiro=Ethem|editora=MIT Press|ano=2010|local=|paginas=|lingua=en|acessodata=}}</ref>

Em adição aos limites da performance, teóricos da aprendizagem computacional estudam a complexidade do tempo e a viabilidade do aprendizado. Na teoria da aprendizagem computacional, uma computação é considerada viável se puder ser feita em [[Complexidade de Tempo|tempo polinomial]]. Há dois tipos de resultados de complexidade temporal. Resultados positivos mostram que uma certa classe de funções pode ser aprendida em tempo polinomial. Resultados negativos mostram que certas classes não podem ser aprendidas em tempo polinomial.

== Abordagens ==

=== Aprendizado baseado em árvores de decisão ===
Aprendizado baseado em árvores de decisão usa a árvore de decisão como um modelo de previsão, o qual mapea observações sobre um item à conclusões sobre o valor do objetivo desse item.

=== Aprendizado por regras de associação ===
{{AP|Regras de associação}}

Aprendizado por regras de associação é um método para descobrir relações interessantes entre variáveis em base de dados grandes.

=== Rede neural artificial ===
{{AP|Rede neural artificial}}

Um algoritmo de aprendizado de rede neural artificial, normalmente chamado de "rede neural" (RN), é um algoritmo de aprendizado que é inspirado na estrutura e aspectos funcionais das [[redes neurais biológicas]]. Computações são estruturadas em termos de um grupo interconectado de [[Neurônio artificial|neurônios artificias]], processando informação usando uma abordagem de conexionismo na [[computação]]. Redes neuronais modernas são ferramentas de [[modelagem de dados]] [[Estatística|estatísticos]] [[Sistema dinâmico não linear|não lineares]]. Normalmente eles são usados para modelar relações complexas entre inputs e outputs, para encontrar padrões nos dados, ou para capturar a estrutura estatística em uma [[distribuição de probabilidade conjunta]] desconhecida entre variáveis observáveis.

=== Aprendizado profundo ===
{{AP|Aprendizado profundo}}

Os preços mais baixos dos hardwares e o desenvolvimento de [[Unidade de processamento gráfico|GPUs]] para uso pessoal nos últimos anos contribuiu para o desenvolvimento do conceito de [[Deep learning|aprendizado profundo]], que consiste em múltiplas camadas escondidas em uma rede neural artificial. Esta abordagem tenta modelar a forma com que o cérebro humano processa luz e som na visão e escuta. Alguns aplicações úteis do aprendizado profundo são [[visão computacional]] e [[reconhecimento de fala]].<ref>{{citar periódico|ultimo=Honglak Lee, Roger Grosse, Rajesh Ranganath, Andrew Y. Ng.|primeiro=|ano=2009|titulo=Convolutional Deep Belief Networks for Scalable Unsupervised Learning of Hierarchical Representations|jornal=|local=Proceedings of the 26th Annual International Conference on Machine Learning|doi=|url=http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.149.802&rep=rep1&type=pdf|acessadoem=|lingua2=en}}</ref>

=== Lógica de programação indutiva ===
Lógica de programação indutiva (LPI) é uma abordagem que regra o aprendizado fazendo uso de programação lógica como uma representação uniforme para exemplos de inputs, conhecimento de pano de fundo, e hipóteses. Dada uma codificação do pano de fundo conhecido do conhecimento e um conjunto de exemplos representados como uma base de dados lógica de fatos, um sistema LPI derivará uma lógica hipotética que [[Consequência lógica|envolve]] todos os exemplos positivos e não negativos. A programação indutiva é um campo relacionado que considera qualquer tipo de linguagem de programação para representar hipóteses (e não apenas programações lógicas), tais como as [[Programação funcional|programações funcionais]].

=== Máquinas de vetores de suporte ===
{{AP|Máquina de vetores de suporte}}

Máquinas de vetores de suporte (MVSs) são um conjunto relacionado de métodos de aprendizado supervisionado usados para classificação e [[regressão]]. Dado um conjunto de exemplos d treinamento, cada um marcado como pertencente de uma ou duas categorias, um algoritmo de treino SVM constrói um modelo que prediz se um novo exemplo cai dentro de uma categoria ou outra.

=== Clustering ===
{{AP|Clustering}}

Análise de clusters é a atribuição de um conjunto de observações à subconjuntos (chamados clusters) de forma que as observações dentro de um mesmo cluster são similares de acordo com algum critério ou critérios pré-designados, enquanto que observações feitas em clusters diferentes não são similares. Diferentes técnicas de clustering fazem diferentes suposições sobre a estrutura dos dados, freqüentemente definida por algumas ''métricas de similaridade'' e avaliados, por exemplo, por ''compacidade interna'' (similaridade entre membros de um mesmo cluster) e ''separação'' entre clusters diferentes. Outros métodos são baseado em ''estimações de densidade'' e ''gráficos de conectividade''. Clustering é um método de aprendizado não supervisionado e uma técnica comum em análise de dados estatísticos.

=== Redes Bayesianas ===
{{AP|Rede bayesiana}}

Uma rede bayesiana, rede de opinião ou um modelo gráfico acíclico dirigido é um modelo gráfico probabilístico que representa um conjunto de [[Variável aleatória|variáveis aleatórias]] e suas independências condicionais via um [[Grafos acíclicos dirigidos|grafo acíclico dirigido]] (GAD). Por exemplo, uma rede bayesiana poderia representar as relações probabilísticas entre doenças e sintomas. Dado um sintoma, a rede pode ser usada para computar as probabilidades da presença de várias doenças. Existem algoritmos eficientes que desempenham [[inferência]] e aprendizado.

=== Aprendizado por reforço ===
O aprendizado por reforço se preocupa com o como um ''agente'' deve ''agir'' em um ''ambiente'' de forma que maximize alguma noção de ''recompensa'' a longo termo. Os algoritmos de aprendizado por reforço tentam encontrar a ''política'' que mapea os estados do mundo às ações que o agente deve ter nesses estados. Aprendizado por reforço se distingue do problema do aprendizado supervisionado no sentindo em que pares de input/output corretos nunca são apresentados, nem as ações sub-ótimas são explicitamente corrigidas.

=== Aprendizado por representação ===
Vários algoritmos de aprendizado, a maioria algoritmos de aprendizado não supervisionado, tem como objetivo descobrir melhores representações dos inputs que são dados durante o treinamento. Exemplos clássicos incluem [[análise de componentes principais]] e [[Clustering|análise de clusters]]. Os algoritmos de aprendizagem por representação com freqüência tentam preservar a informação e seu input mas transformando-a de forma que a torne útil, frequentemente como um passo pré-processamento antes de desempenhar classificações ou previsões, permitindo a reconstrução dos inputs vindos de dados geradores de distribuição desconhecidos, enquanto não sendo necessariamente fiel à configurações que são implausíveis sob essa distribuição.

Algoritmos de aprendizagem múltipla tentam fazer isso sob a restrição de que a representação aprendida é de baixa dimensão. Algoritmos de código esparso tentam fazer isso sob a restrição de que a representação aprendida é espersa (tem muitos zeros). O algoritmo de aprendizagem em subespac ̧o multilinear tem como objetivo aprender representações de baixa dimensão diretamente das representações de [[Tensor|tensores]] para dados multidimensionais, sem os transformas em vetores de alta dimensão.<ref>{{citar periódico|ultimo=Lu|primeiro=Haiping|coautores=Plataniotis, K.N.; Venetsanopoulos, A.N.|ano=2011|titulo=A Survey of Multilinear Subspace Learning for Tensor Data|jornal=Pattern Recognition|volume=44|numero=7|paginas=1540–1551|doi=10.1016/j.patcog.2011.01.004|url=http://www.dsp.utoronto.ca/~haiping/Publication/SurveyMSL_PR2011.pdf|acessadoem=17-10-2016|lingua2=en}}</ref> Algoritmos do aprendizado profundo descobrem múltiplos níveis de representação, ou uma hierarquia de características, com um nível mais alto, características mais abstratas definidas em termos de (ou geradas a partir de) características de nível mais baixo. Tem sido argumentado que uma máquina inteligente é aquela que aprende uma representação que desembaraça os fatores subjacentes de variação que explicam os dados observados.<ref>{{citar livro|url=https://books.google.com.br/books?id=cq5ewg7FniMC&pg=PA3&redir_esc=y#v=onepage&q&f=false|titulo=Learning Deep Architectures for AI|ultimo=Bengio|primeiro=Yoshua|editora=Now Publishers Inc|ano=2009|isbn=978-1-60198-294-0|local=|paginas=1-3|acessodata=}}</ref><nowiki/>

=== Aprendizado por similaridade e métrica ===
Neste problema, se dá a máquina aprendiz pares de exemplos que são considerados similares e pares de objetos menos similares. Então ela precisa aprender uma função de similaridade (ou uma função de distancia métrica) que possa predizer se novos objetos são similares. Isso é as vezes usado em [[Sistema de recomendação|sistemas de recomendação]].

=== Aprendizado por dicionário esparso ===
Neste método, um dado é representado como uma combinação ligar de funções bases, e os coeficientes são assumidos como esparsos. Deixe ''x'' ser uma dado ''d''-dimensional, ''D'' ser um ''d'' por ''n'' matrizes, onde cada coluna de ''D'' representa uma função base. ''r'' é o coeficiente para representar ''x'' usando ''D''. Matematicamente, aprendizado por dicionário esparso significa resolver <math>x \approx D r</math> onde ''r'' é esparso. Falando genericamente, se assume que ''n'' é maior que ''d'' para permitir a liberdade para uma representação esparsa.

Aprender um dicionário junto com representações esparsas é [[fortemente NP-completo]] e também difícil de resolver aproximadamente.<ref>{{citar periódico|ultimo=Tillmann|primeiro=Andreas M.|ano=2015|titulo=On the Computational Intractability of Exact and Approximate Dictionary Learning|jornal=IEEE Signal Processing Letters|volume=22|numero=1|paginas=45-49|doi=|url=|acessadoem=}}</ref> Um método heurístico popular para aprendizado por dicionário esparso é o K-SVD.

Aprendizado por dicionário esparso tem sido aplicado a vários contextos. Em classificação, o problema é determinar a quais classes um dado previamente não visto pertence. Suponha que um dicionário para cada classe já tenha sido construído. Então um novo dado é associado com a classe de forma que esteja o melhor esparcialmente representado pelo dicionário correspondente. Aprendizado por dicionário esparso também tem sido aplicado a suavização de imagem. A ideia chave é que um pedaço de imagem limpa pode ser representado esparcialmente por um dicionário de imagem, mas o ruído não.<ref>{{citar periódico|ultimo=Aharon|primeiro=Michael|coautores=M. Elad; A. Bruckstein|ano=2006|titulo=K-SVD: An Algorithm for Designing Overcomplete Dictionaries for Sparse Representation|jornal=IEEE Transactions on Signal Processing|volume=54|numero=11|paginas=4311-4322|doi=|url=|acessadoem=}}</ref>

=== Algoritmos genéticos ===
{{AP|Algoritmo genético}}

Um algoritmo genético (AG) é uma [[Algoritmo de busca|busca]] [[Heurística (computação)|heurística]] que imita o processo de [[seleção natural]] e usa métodos com mutação e [[Recombinação (computação evolutiva)|recombinação]] para gerar novos genotipos na esperança de encontrar boas soluções para um dado problema. Em aprendizado de máquinas, algoritmos genéticos encontraram alguma utilidade me 1980 e 1990.<ref>{{citar periódico|ultimo=Goldberg|primeiro=David E|coautores=Holland, John H.|ano=1988|titulo=Genetic algorithms and machine learning|jornal=Machine Learning|volume=3|numero=2|paginas=95–99|doi=10.1007/bf00113892|url=|acessadoem=|lingua2=en}}</ref> <ref>{{citar livro|url=http://www1.maths.leeds.ac.uk/~charles/statlog/|titulo=Machine Learning, Neural and Statistical Classification|ultimo=Michie|primeiro=Donald|ultimo2=Spiegelhalter|primeiro2=David|ultimo3=C.C.|primeiro3=Taylor|editora=Ellis Horwood|ano=1994|local=|paginas=|lingua=en|acessodata=}}</ref> Vice versa, técnicas do aprendizado de máquina tem sido usadas para melhorar a performance de algoritmos genéticos e evolutivos.<ref>{{citar periódico|ultimo=Zhang|primeiro=Jun|coautores=Zhan, Zhi-hui; Lin, Ying; Chen, Ni; Gong, Yue-jiao; Zhong, Jing-hui; Chung, Henry S.H.; Li, Yun; Shi, Yu-hui|ano=2011|titulo=Evolutionary Computation Meets Machine Learning: A Survey|jornal=Computational Intelligence Magazine|volume=6|numero=4|paginas=68-75|doi=10.1109/mci.2011.942584|url=http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6052374|acessadoem=|lingua2=en}}</ref>

== Aplicações ==
Aplicações para o aprendizado de máquina incluem:

{{div col}}
* Websites adaptativos
* [[Computação afetiva]]
* [[Bioinformática]]
* [[Interface cérebro-computador]]
* [[Quimioinformática]]
* Classificação de [[Sequência de DNA|sequências de DNA]]
* Anatomia computacional
* [[Visão computacional]], incluindo reconhecimento de objetos
* Detecção de fraude de cartão de crédito
* [[Jogo de estratégia|Jogos de estratégia]]
* [[Recuperação de informação]]
* Detecção de [[fraude virtual]]
* [[Marketing]]
* Percepção de máquina
* Diagnósticos médico
* [[Economia]]
* [[Processamento de linguagem natural]]
* Entendimento de linguagem natural
* [[Otimização|matemática]] and [[meta-heurística]]
* [[Publicidade online]]
* [[Sistema de recomendação]]
* Locomoção de robôs
* Mecanismos de búsca
* Análise de sentimento ou mineração de opinião
* Mineração de padrões sequenciais
* [[Engenharia de software]]
* [[Reconhecimento de fala]] e reconhecimento de escrita
* Análises no [[mercado de ações]]
* Monitoramento estrutural da saúde
* Reconhecimento de padrões sintáticos
{{div col end}}Em 2006, a companhia de filmes online [[Netflix]] fez a primeira competição "Netflix Prize" para encontrar um programa que melhor prediria as performances dos usuários e melhoraria a precisão do algoritmo de recomendação Cinematch existente em ao menos 10%. Um time composto por pesquisadores da AT&T Labs em colaboração com o time Big Chaos e Pragmatic Theory construíram um modelo conjunto para ganhar o grande prêmio em 2009 de 1 milhão de dólares. Logo após os prêmio ser concedido, a Netflix se deu conta que as avaliações dos usuários não eram as melhores indicações de seus padrões de filmes e séries vistos ("tudo é recomendação") e mudaram seu motor de recomendação. <ref>{{citar web|url=http://techblog.netflix.com/2012/04/netflix-recommendations-beyond-5-stars.html|titulo=The Netflix Tech Blog: Netflix Recommendations: Beyond the 5 stars (Part 1)|data=|acessodata=17-10-2016|obra=|publicado=|ultimo=|primeiro=}}</ref>

Em 2010 o Periódico do Wall Street escreveu sobre a firma de gestão de dinheiro Rebellion Research que usava o aprendizado de máquina para predizer os movimentos econômicos. O artigo descrevia a previsão da Rebellion Research sobre a crise financeira e a recuperação econômica.<ref>{{citar web|url=http://www.wsj.com/news/articles/SB10001424052748703834604575365310813948080|titulo=Artificial Intelligence' Gains Fans Among Investors - WSJ|data=|acessodata=17-10-2016|obra=|publicado=|ultimo=|primeiro=|lingua=en}}</ref>

Em 2014 foi relatado que um algoritmo de aprendizado de máquina foi aplicado em Historia da Arte para estudar as pinturas de arte e que ele pode ter revelado influencias entre artistas previamente não reconhecidas.<ref>{{citar web|url=https://medium.com/the-physics-arxiv-blog/when-a-machine-learning-algorithm-studied-fine-art-paintings-it-saw-things-art-historians-had-never-b8e4e7bf7d3e#.xsd2hk26i|titulo=When A Machine Learning Algorithm Studied Fine Art Paintings, It Saw Things Art Historians Had Never Noticed|data=|acessodata=17-10-2016|obra=|publicado=|ultimo=|primeiro=|lingua=en}}</ref>

== Avaliação de modelos ==
Modelos de classificação de aprendizado de máquina podem ser validados por técnicas como [[validação cruzada]], onde os dados são divididos em conjuntos de teste e treinamento e medidas apropriadas como precisão são calculadas para ambos os conjuntos de dados e comparadas. Para além da precisão, sensibilidade (Avaliação Positiva Verdadeira) e especificidade (Avaliação Negativa Verdadeira) podem prover modos de modelos de avaliação. De forma similar, Avaliações Positivas Faslas assim como Avaliações Negativas Faslas poder ser computadas. Curvas Receptoras de Operação (CRO) em conjunto com a Área em baixo da CRO (AUC) oferecem ferramentas adicionais para a classificação de modelos de avaliação. Graus maiores de AUC estão associados a um modelo de melhor performance. <ref>{{citar periódico|ultimo=Catal|primeiro=Cagatay|ano=2012|titulo=Performance Evaluation Metrics for Software Fault Prediction Studies|jornal=Acta Polytechnica Hungarica|volume=9|numero=4|doi=|url=http://www.uni-obuda.hu/journal/Catal_36.pdf|acessadoem=|lingua2=en}}</ref>

== Software ==
Software suites contendo uma variedade de algoritmos de aprendizado de máquina incluem os seguintes:

=== Software de fonte aberta e gratuita ===
{{Div col||15em}}
* dlib
* ELKI
* Encog
*[[GNU Octave]]
* H2O
* Mahout
* Mallet (software project)
* mlpy
* MLPACK
* MOA (Massive Online Analysis)
* ND4J with Deeplearning4j
* NuPIC
* OpenAI
* [[OpenCV]]
* [[OpenNN]]
* Orange
* R
* [[scikit-learn]]
* scikit-image
* Shogun
* TensorFlow
* Torch
*Spark
* Yooreeka
* Weka
{{Div col end}}

=== Software particular com edições de fonte aberta e gratuita ===
{{Div col||15em}}
* KNIME
* RapidMiner
{{Div col end}}

=== Proprietary software ===
{{Div col||15em}}
* Amazon Machine Learning
* Angoss KnowledgeSTUDIO
* Ayasdi
* Databricks
* Google APIs|Google Prediction API
* IBM SPSS Modeler
* KXEN Modeler
* LIONsolve
* [[Mathematica]]
* [[MATLAB]]
* Microsoft Azure Machine Learning
* [[Neural Designer]]
* NeuroSolutions
* Oracle Data Mining
* RCASE
* SAS Enterprise Miner
* Splunk
* [[STATISTICA]] Data Miner
{{Div col end}}Veja também esta lista de pacotes em muitas linguagens de programação: [https://github.com/josephmisiti/awesome-machine-learning#awesome-machine-learning- Awesome Machine Learning].

== Periódicos ==
* ''[[Journal of Machine Learning Research]]''
* ''Machine Learning''
* ''Neural Computation''
* ''International Journal of Machine Learning and Cybernetics''

== Conferências ==
* Conference on Neural Information Processing Systems
* International Conference on Machine Learning


== Ver também ==
== Ver também ==
Linha 20: Linha 235:
* [[Mineração de dados]]
* [[Mineração de dados]]
* [[Reconhecimento de padrões]]
* [[Reconhecimento de padrões]]
* [[Máquina de Vetores de Suporte]]
* [[Máquina de Vetores de Suporte]]
* [[Big data]]
* [[Ciência cognitiva]]
* [[Inteligência computacional]]
* [[Neurociência computacional]]


== Ligações externas ==
== Ligações externas ==
* {{Link|2=http://dcm.ffclrp.usp.br/~augusto/publications/2003-sistemas-inteligentes-cap4.pdf |3=Conceitos sobre Aprendizado de Maquina}}
* {{Link|2=http://dcm.ffclrp.usp.br/~augusto/publications/2003-sistemas-inteligentes-cap4.pdf |3=Conceitos sobre Aprendizado de Maquina}}
* [https://www.coursera.org/course/ml Curso online no Coursera], ministrado por [[Andrew Ng]]. Utiliza [[GNU Octave]]. O curso é uma versão livre do curso da [[Stanford University]] ministrado por Ng, cujas aulas também estão [http://see.stanford.edu/see/courseinfo.aspx?coll=348ca38a-3a6d-4052-937d-cb017338d7b1 disponíveis gratuitamente].
* [https://www.coursera.org/course/ml Curso online no Coursera], ministrado por [http://www.andrewng.org Andrew Ng]. Utiliza [[GNU Octave]]. O curso é uma versão livre do curso da [[Stanford University]] ministrado por Ng, cujas aulas também estão [http://online.stanford.edu/course/machine-learning disponíveis gratuitamente].

== Referências ==
<references />

== Para mais leituras ==
* Trevor Hasti, Robert Tibshirani e Jerome H. Friedman (2001). ''[http://www-stat.stanford.edu/~tibs/ElemStatLearn/ The Elements of Statistical Learning]'', Springer. ISBN 0-387-95284-5.
* Pedro Domingos (September 2015), The Master Algorithm, Basic Books, ISBN 978-0-465-06570-7
* Mehryar Mohri, Afshin Rostamizadeh, Ameet Talwalkar (2012). ''[http://www.cs.nyu.edu/~mohri/mlbook/ Foundations of Machine Learning]'', The MIT Press. ISBN 978-0-262-01825-8.
* Ian H. Witten and Eibe Frank (2011). ''Data Mining: Practical machine learning tools and techniques'' Morgan Kaufmann, 664pp., ISBN 978-0-12-374856-0.
* David J. C. MacKay. ''[http://www.inference.phy.cam.ac.uk/mackay/itila/book.html Information Theory, Inference, and Learning Algorithms]'' Cambridge: Cambridge University Press, 2003. ISBN 0-521-64298-1
* Richard O. Duda, Peter E. Hart, David G. Stork (2001) ''Pattern classification'' (2nd edition), Wiley, New York, ISBN 0-471-05669-3.
* Christopher Bishop  (1995). ''Neural Networks for Pattern Recognition'', Oxford University Press. ISBN 0-19-853864-2.
* [[Vladimir Vapnik]] (1998). ''Statistical Learning Theory''. Wiley-Interscience, ISBN 0-471-03003-1.
* Ray Solomonoff, ''An Inductive Inference Machine'', IRE Convention Record, Section on Information Theory, Part 2, pp., 56-62, 1957.
* Ray Solomonoff, "[http://world.std.com/~rjs/indinf56.pdf An Inductive Inference Machine]" Um relato privado que circulou na Dartmouth Summer Research Conference sobre IA em 1956.
{{Processos estocásticos}}
{{Processos estocásticos}}
[[Categoria:Aprendizagem de máquina]]
[[Categoria:Aprendizagem de máquina]]

Revisão das 19h43min de 7 de novembro de 2016

aprendizagem automática ou aprendizado de máquina (em inglês: "machine learning") é um sub-campo da ciência da computação[1] que evoluiu do estudo de reconhecimento de padrões e da teoria da aprendizagem computacional em inteligência artificial[1]. Em 1959, Arthur Samuel definiu aprendizado de máquina como o "campo de estudo que dá aos computadores a habilidade de aprender sem serem explicitamente programados"[2](livre tradução). A aprendizagem automática explora o estudo e construção de algoritmos que podem aprender de seus erros e fazer previsões sobre dados[3]. Tais algoritmos operam construindo um modelo a partir de inputs amostrais a fim de fazer previsões ou decisões guiadas pelos dados ao invés de simplesmente seguindo inflexíveis e estáticas instruções programadas. Enquanto que na inteligência artificial existem dois tipos de raciocínio - o indutivo, que extrai regras e padrões de grandes conjuntos de dados, e o dedutivo - o aprendizado de máquina só se preocupa com o indutivo.

Algumas partes da aprendizagem automática estão intimamente ligadas (e muitas vezes sobrepostas) à estatística computacional; uma disciplina que foca em como fazer previsões através do uso de computadores, com pesquisas focando nas propriedades dos métodos estatísticos e sua complexidade computacional. Ela tem fortes laços com a otimização matemática, que produz métodos, teoria e domínios de aplicação para este campo. A aprendizagem automática é usada em uma variedade de tarefas computacionais onde criar e programar algoritmos explícitos é impraticável. Exemplos de aplicações incluem filtragem de spam, reconhecimento ótico de caracteres (OCR)[4], processamento de linguagem naturalmotores de buscadiagnósticos médicosbioinformáticareconhecimento de falareconhecimento de escritavisão computacional e locomoção de robôs. O aprendizado de máquinas é às vezes confundido com mineração de dados[5], que é um sub-campo que foca mais em análise exploratória de dados e é conhecido como aprendizado não supervisionado[6]. No campo da análise de dados, o aprendizado de máquinas é um método usado para planejar modelos complexos e algoritmos que prestam-se para fazer predições- no uso comercial, isso é conhecido como análise preditiva. Esses modelos analíticos permitem que pesquisadores, cientistas de dados, engenheiros, e analistas possam "produzir decisões e resultados confiáveis e repetíveis" e descobrir os "insights escondidos" através do aprendizado das relações e tendências históricas nos dados.[7]

Resumo

Tom M. Mitchell forneceu uma definição mais formal amplamente citada: "Se diz que um programa de computador aprende pela experiência E com respeito a algum tipo de tarefa T e performance P se sua performance P nas tarefas em T, como medidas por P, melhoram com a experiência E."[8] Esta definição é notável pois define aprendizado de máquina em termos fundamentalmente operacionais ao invés de cognitivos, de forma a seguir a proposta de Alan Turing em seu artigo "Computadores e inteligência" de que a pergunta "Podem as máquinas pensar?" seja substituída pela pergunta "Podem as máquinas fazer o que (nós como entidade pensantes) podemos fazer?"[9]

Tipos de problemas e tarefas

As tarefas de aprendizado de máquina são tipicamente classificadas em três amplas categorias, dependendo da natureza do "sinal" ou "feedback" de aprendizado disponível para um sistema de aprendizado. Estes são:[10]

  • Aprendizagem supervisionada: É apresentado ao computador exemplos de imputs e outputs desejados, dados por um "professor", e o objetivo é aprender uma regra geral que mapea os inputs aos outputs.
  • Aprendizagem não supervisionada (clusteringestatística): Nenhum tipo de etiqueta é dado ao algoritmo de aprendizado, deixando-o sozinho para encontrar estrutura em seus inputs. A aprendizagem não supervisionada pode ser um objetivo em si mesma (descobrir novos padrões nos dados) ou um meio com um fim.
  • Aprendizagem por reforço: Um programa de computador interage com um ambiente dinâmico no qual ele deve desempenhar um determinado objetivo (como por exemplo, dirigir um veículo), sem um professor lhe dizer explicitamente se ele chega perto de seu objetivo ou não. Outro exemplo é aprender a jogar um determinado jogo justamente jogando contra um oponente.

Entre a aprendizagem supervisionada e não supervisionada está a aprendizagem semi-supervisionada, na qual o professor dá um sinal de treinamento incompleto: um conjunto de treinamentos com alguns (muitas vezes vários) dos outputs desejados ausentes. Transdução é um caso especial deste princípio onde o conjunto inteiro das instâncias do problema é conhecido no momento do aprendizado, exceto que parte dos objetivos está ausente.

Entre outras categorias de problemas de aprendizado de máquina, o meta aprendizado aprende seu próprio viés indutivo baseado em experiência prévias. A robótica epigenética, elaborada para a aprendizagem de robôs, gera suas próprias sequências (também chamadas de currículo) de situações de aprendizado para adquirir cumulativamente repertórios de novas habilidades através de uma exploração autônoma de si e da interação social com professores humanos, fazendo uso de mecanismo guias tais como aprendizagem ativa, maturação, sinergias motoras e imitação.

Outra categorização de tarefas de aprendizado de máquina surge quando se considera o output desejado em um sistema de aprendizado de máquina:

  • Em classificação, inputs são divididos em duas ou mais classes, e o que aprende deve produzir um modelo que designa inputs não vistos à uma ou mais (classificação multi-etiquetada) dessas classes. Isto é tipicamente abordado de forma supervisionada. Filtragem de spam é um exemplo de classificação, onde o input são as mensagens de emails (ou outros) e as classes são "spam" ou "não spam".
  • Em regressão, também um problema supervisionado, os outputs são contínuos ou invés de discretos.
  • Em clustering, um conjunto de inputs será dividido em grupos. Diferente da classificação, os grupos não são conhecidos previamente, fazendo do clustering uma tarefa tipicamente não supervisionada.
  • Estimação de densidade encontra a distribuição de inputs em algum espaço.
  • Redução dimensional simplifica os inputs ao mapea-los em um espaço de menor dimensão. O modelo tópico é um problema relacionado, onde se dá uma lista de documentos em linguagem humana ao programa pedindo a ele, como tarefa ,encontrar quais documentos tratam de temas similares.

História e relação com outros campos

Como um esforço científico, o aprendizado de máquina cresceu a partir da busca pela inteligência artificial. Ainda nos princípios da IA como disciplina acadêmica, alguns pesquisadores já se interessavam em fazer máquinas aprenderem a partir de dados. Eles tentaram abordar o problema desde vários métodos simbólicos, assim como com o que foi então nomeado de "rede neural artificial"; estes eram majoritariamente perceptrons e outros modelos que mais tardes foram entendidos como reinvenções de modelos linear generalizados de estatística. A lógica probabilística também foi usada, especialmente em diagnósticos médicos automatizados.[10]:488

No entanto, uma crescente ênfase na abordagem lógica, baseada em conhecimento, causou uma brecha entre a IA e o aprendizado de máquina. Sistemas probabilísticos eram atormentados por problemas teoréticos e práticos de aquisição e representação de dados.[10]:488 Em 1980, sistemas especialistas haviam dominado a IA, e a estatística estava fora de uso.[11] Trabalhos em aprendizado baseado em conhecimento/simbólico continuaram com a IA, levando até a programação lógica indutiva, mas agora as pesquisas mais voltadas para a estatística estavam fora do campo da IA, em reconhecimento de padrões e recuperação de informação.[10]:708–710; 755 Pesquisas em redes neuronais haviam sido abandonadas pela IA e ciência computacional em torno do mesmo período. Essa linha, também, foi continuada forma dos campos da IA e da ciência da computação, como "conexionismos", por pesquisadores de outras disciplinas incluindo Hopfield, Rumelhart e Hinton. Seu sucesso principal veio em meados dos anos 80 com a reinvenção da propagação para trás.[10]:25

O aprendizado de máquina, reorganizado como um campo separado, começou a florescer nos anos 90. O campo mudou seu objetivo de alcançar a inteligência artificial para abordar problemas solucionáveis de natureza prática. Ele abandonou o foco em abordagens simbólicas que havia herdado da IA para métodos e modelos emprestados da estatística e da teoria da probabilidade.[11] Ele também se beneficiou do crescente número de informação digitalizada disponível e a possibilidade de distribuir ela via internet.

O aprendizado de máquina e a mineração de dados com freqüência fazem uso dos mesmos métodos e se sobrepões significantemente, mas enquanto o aprendizado de máquina foca em fazer previsões, baseado em propriedades conhecidas aprendidas pelo dados de treinamento, a mineração de dados foca em descobrir as propriedades (previamente) desconhecidas nos dados (este é o passo dado na análise de extração de conhecimento na base de dados). A mineração de dados usa muitas métodos do aprendizado de máquina, mas com objetivos diferentes; por outro lado, o aprendizado de máquina também faz uso de métodos da mineração de dados como "aprendizado não supervisionado" ou como um passo de processamento para melhorar a precisão do aprendiz. Muita da confusão entre essas duas comunidades de pesquisa (que com freqüência tem conferências e periódicos separados, ECML PKDD sendo a grande excessão) vem da suposição básica com que eles trabalham: em aprendizado de máquina, a performance é normalmente avaliada com respeito a habilidade de reproduzir conhecimento conhecido, enquanto que com a extração de conhecimento e mineração de dados (KDD) a tarefa chave é o descobrimento de conhecimento previamente desconhecido. Avaliado com respeito ao conhecimento conhecido, um método uniforme (não supervisionado) será facilmente superado por outros métodos supervisionados, enquanto que em uma tarefa KDD típica, métodos supervisionados não podem ser usados devido a não disponibilidade de dados de treinamento.

O aprendizado de máquina também tem laços íntimos com a otimização: muitos dos problemas de aprendizado são formulados como minimização de algumas funções de perda em um conjunto exemplo de treinamentos. Funções de perda expressam a discrepância entre as previsões do modelo sendo treinado e as verdadeiras instâncias do problema (por exemplo, em classificação, o objetivo é designar etiquetas para instâncias, e modelos são treinados para predizer corretamente as etiquetas previamente designadas de um conjunto exemplo). A diferença entre os dois campos surge do objetivo da generalização: enquanto que o algoritmo de otimização pode minimizar a perda em um conjunto de treinamento, o aprendizado de máquina está preocupado com a minimização da perda de amostras não vistas.[12]

Relação com estatística

O aprendizado de máquina e a estatística são campos intimamente relacionados. De acordo com Michael I. Jordam, as ideias do aprendizado de máquina, dos princípios metodológicos às ferramentas teóricas, tem uma longa pré-história na estatística.[13] Ele também sugeriu o termo ciência de dados como um substituto para chamar o campo como um todo.[13]

Leo Breiman distinguiu dois paradigmas da modelagem estatística: modelo de dados e modelo algorítmico,[14] onde "modelo algorítmico" significa mais ou menos os algoritmos do aprendizado de máquina como a Floresta aleatória.

Alguns estatísticos tem adotado métodos do aprendizado de máquinas, levando ao campo combinado que eles chamam de aprendizado estatístico.[15]

Teoria

Um dos objetivos centrais de um aprendiz é generalizar a partir de suas experiências.[16][17] Generalização neste contexto é a habilidade de uma máquina aprendiz de desempenhar com precisão em novos, não vistos, exemplos/tarefas depois de ter experimentado um conjunto de dados de aprendizado. Os exemplos de treinamento vem de algumas, geralmente desconhecidas, distribuições de probabilidade (consideradas representativas do espaço de ocorrência) e o aprendiz tem de construir um modelo geral sobre este espaço que o permita produzir previsões o suficientemente precisas em novos casos.

A análise computacional de algoritmos de aprendizado de máquina e sua performance é um ramo da ciência da computação teórica conhecida como teoria da aprendizagem computacional. Porque os conjuntos de treinamento são finitos e o futuro é incerto, a teoria de aprendizado normalmente não guarda garantias para a performance dos algoritmos. Em vez disso,previsões probabilísticas para a performance são bastante comuns. O tarde-off entre variância e viés é uma forma de qualificar o erro de generalização.

Para uma melhor performance no contexto de generalização, a complexidade da hipótese deveria combinar com a complexidade da função subjacente aos dados. Se a hipótese é menos complexa que a função, então o modelo sub-ajustou (underfitting) os dados. Se a complexidade do modelo é aumentada em resposta, então o erro de treinamento diminui. Mas se a hipótese é muito complexa, então o modelo foi sobreajustado (overfitting), e a generalização será mais pobre.[18]

Em adição aos limites da performance, teóricos da aprendizagem computacional estudam a complexidade do tempo e a viabilidade do aprendizado. Na teoria da aprendizagem computacional, uma computação é considerada viável se puder ser feita em tempo polinomial. Há dois tipos de resultados de complexidade temporal. Resultados positivos mostram que uma certa classe de funções pode ser aprendida em tempo polinomial. Resultados negativos mostram que certas classes não podem ser aprendidas em tempo polinomial.

Abordagens

Aprendizado baseado em árvores de decisão

Aprendizado baseado em árvores de decisão usa a árvore de decisão como um modelo de previsão, o qual mapea observações sobre um item à conclusões sobre o valor do objetivo desse item.

Aprendizado por regras de associação

Ver artigo principal: Regras de associação

Aprendizado por regras de associação é um método para descobrir relações interessantes entre variáveis em base de dados grandes.

Rede neural artificial

Ver artigo principal: Rede neural artificial

Um algoritmo de aprendizado de rede neural artificial, normalmente chamado de "rede neural" (RN), é um algoritmo de aprendizado que é inspirado na estrutura e aspectos funcionais das redes neurais biológicas. Computações são estruturadas em termos de um grupo interconectado de neurônios artificias, processando informação usando uma abordagem de conexionismo na computação. Redes neuronais modernas são ferramentas de modelagem de dados estatísticos não lineares. Normalmente eles são usados para modelar relações complexas entre inputs e outputs, para encontrar padrões nos dados, ou para capturar a estrutura estatística em uma distribuição de probabilidade conjunta desconhecida entre variáveis observáveis.

Aprendizado profundo

Ver artigo principal: Aprendizado profundo

Os preços mais baixos dos hardwares e o desenvolvimento de GPUs para uso pessoal nos últimos anos contribuiu para o desenvolvimento do conceito de aprendizado profundo, que consiste em múltiplas camadas escondidas em uma rede neural artificial. Esta abordagem tenta modelar a forma com que o cérebro humano processa luz e som na visão e escuta. Alguns aplicações úteis do aprendizado profundo são visão computacional e reconhecimento de fala.[19]

Lógica de programação indutiva

Lógica de programação indutiva (LPI) é uma abordagem que regra o aprendizado fazendo uso de programação lógica como uma representação uniforme para exemplos de inputs, conhecimento de pano de fundo, e hipóteses. Dada uma codificação do pano de fundo conhecido do conhecimento e um conjunto de exemplos representados como uma base de dados lógica de fatos, um sistema LPI derivará uma lógica hipotética que envolve todos os exemplos positivos e não negativos. A programação indutiva é um campo relacionado que considera qualquer tipo de linguagem de programação para representar hipóteses (e não apenas programações lógicas), tais como as programações funcionais.

Máquinas de vetores de suporte

Ver artigo principal: Máquina de vetores de suporte

Máquinas de vetores de suporte (MVSs) são um conjunto relacionado de métodos de aprendizado supervisionado usados para classificação e regressão. Dado um conjunto de exemplos d treinamento, cada um marcado como pertencente de uma ou duas categorias, um algoritmo de treino SVM constrói um modelo que prediz se um novo exemplo cai dentro de uma categoria ou outra.

Clustering

Ver artigo principal: Clustering

Análise de clusters é a atribuição de um conjunto de observações à subconjuntos (chamados clusters) de forma que as observações dentro de um mesmo cluster são similares de acordo com algum critério ou critérios pré-designados, enquanto que observações feitas em clusters diferentes não são similares. Diferentes técnicas de clustering fazem diferentes suposições sobre a estrutura dos dados, freqüentemente definida por algumas métricas de similaridade e avaliados, por exemplo, por compacidade interna (similaridade entre membros de um mesmo cluster) e separação entre clusters diferentes. Outros métodos são baseado em estimações de densidade e gráficos de conectividade. Clustering é um método de aprendizado não supervisionado e uma técnica comum em análise de dados estatísticos.

Redes Bayesianas

Ver artigo principal: Rede bayesiana

Uma rede bayesiana, rede de opinião ou um modelo gráfico acíclico dirigido é um modelo gráfico probabilístico que representa um conjunto de variáveis aleatórias e suas independências condicionais via um grafo acíclico dirigido (GAD). Por exemplo, uma rede bayesiana poderia representar as relações probabilísticas entre doenças e sintomas. Dado um sintoma, a rede pode ser usada para computar as probabilidades da presença de várias doenças. Existem algoritmos eficientes que desempenham inferência e aprendizado.

Aprendizado por reforço

O aprendizado por reforço se preocupa com o como um agente deve agir em um ambiente de forma que maximize alguma noção de recompensa a longo termo. Os algoritmos de aprendizado por reforço tentam encontrar a política que mapea os estados do mundo às ações que o agente deve ter nesses estados. Aprendizado por reforço se distingue do problema do aprendizado supervisionado no sentindo em que pares de input/output corretos nunca são apresentados, nem as ações sub-ótimas são explicitamente corrigidas.

Aprendizado por representação

Vários algoritmos de aprendizado, a maioria algoritmos de aprendizado não supervisionado, tem como objetivo descobrir melhores representações dos inputs que são dados durante o treinamento. Exemplos clássicos incluem análise de componentes principais e análise de clusters. Os algoritmos de aprendizagem por representação com freqüência tentam preservar a informação e seu input mas transformando-a de forma que a torne útil, frequentemente como um passo pré-processamento antes de desempenhar classificações ou previsões, permitindo a reconstrução dos inputs vindos de dados geradores de distribuição desconhecidos, enquanto não sendo necessariamente fiel à configurações que são implausíveis sob essa distribuição.

Algoritmos de aprendizagem múltipla tentam fazer isso sob a restrição de que a representação aprendida é de baixa dimensão. Algoritmos de código esparso tentam fazer isso sob a restrição de que a representação aprendida é espersa (tem muitos zeros). O algoritmo de aprendizagem em subespac ̧o multilinear tem como objetivo aprender representações de baixa dimensão diretamente das representações de tensores para dados multidimensionais, sem os transformas em vetores de alta dimensão.[20] Algoritmos do aprendizado profundo descobrem múltiplos níveis de representação, ou uma hierarquia de características, com um nível mais alto, características mais abstratas definidas em termos de (ou geradas a partir de) características de nível mais baixo. Tem sido argumentado que uma máquina inteligente é aquela que aprende uma representação que desembaraça os fatores subjacentes de variação que explicam os dados observados.[21]

Aprendizado por similaridade e métrica

Neste problema, se dá a máquina aprendiz pares de exemplos que são considerados similares e pares de objetos menos similares. Então ela precisa aprender uma função de similaridade (ou uma função de distancia métrica) que possa predizer se novos objetos são similares. Isso é as vezes usado em sistemas de recomendação.

Aprendizado por dicionário esparso

Neste método, um dado é representado como uma combinação ligar de funções bases, e os coeficientes são assumidos como esparsos. Deixe x ser uma dado d-dimensional, D ser um d por n matrizes, onde cada coluna de D representa uma função base. r é o coeficiente para representar x usando D. Matematicamente, aprendizado por dicionário esparso significa resolver onde r é esparso. Falando genericamente, se assume que n é maior que d para permitir a liberdade para uma representação esparsa.

Aprender um dicionário junto com representações esparsas é fortemente NP-completo e também difícil de resolver aproximadamente.[22] Um método heurístico popular para aprendizado por dicionário esparso é o K-SVD.

Aprendizado por dicionário esparso tem sido aplicado a vários contextos. Em classificação, o problema é determinar a quais classes um dado previamente não visto pertence. Suponha que um dicionário para cada classe já tenha sido construído. Então um novo dado é associado com a classe de forma que esteja o melhor esparcialmente representado pelo dicionário correspondente. Aprendizado por dicionário esparso também tem sido aplicado a suavização de imagem. A ideia chave é que um pedaço de imagem limpa pode ser representado esparcialmente por um dicionário de imagem, mas o ruído não.[23]

Algoritmos genéticos

Ver artigo principal: Algoritmo genético

Um algoritmo genético (AG) é uma busca heurística que imita o processo de seleção natural e usa métodos com mutação e recombinação para gerar novos genotipos na esperança de encontrar boas soluções para um dado problema. Em aprendizado de máquinas, algoritmos genéticos encontraram alguma utilidade me 1980 e 1990.[24] [25] Vice versa, técnicas do aprendizado de máquina tem sido usadas para melhorar a performance de algoritmos genéticos e evolutivos.[26]

Aplicações

Aplicações para o aprendizado de máquina incluem:

Em 2006, a companhia de filmes online Netflix fez a primeira competição "Netflix Prize" para encontrar um programa que melhor prediria as performances dos usuários e melhoraria a precisão do algoritmo de recomendação Cinematch existente em ao menos 10%. Um time composto por pesquisadores da AT&T Labs em colaboração com o time Big Chaos e Pragmatic Theory construíram um modelo conjunto para ganhar o grande prêmio em 2009 de 1 milhão de dólares. Logo após os prêmio ser concedido, a Netflix se deu conta que as avaliações dos usuários não eram as melhores indicações de seus padrões de filmes e séries vistos ("tudo é recomendação") e mudaram seu motor de recomendação. [27]

Em 2010 o Periódico do Wall Street escreveu sobre a firma de gestão de dinheiro Rebellion Research que usava o aprendizado de máquina para predizer os movimentos econômicos. O artigo descrevia a previsão da Rebellion Research sobre a crise financeira e a recuperação econômica.[28]

Em 2014 foi relatado que um algoritmo de aprendizado de máquina foi aplicado em Historia da Arte para estudar as pinturas de arte e que ele pode ter revelado influencias entre artistas previamente não reconhecidas.[29]

Avaliação de modelos

Modelos de classificação de aprendizado de máquina podem ser validados por técnicas como validação cruzada, onde os dados são divididos em conjuntos de teste e treinamento e medidas apropriadas como precisão são calculadas para ambos os conjuntos de dados e comparadas. Para além da precisão, sensibilidade (Avaliação Positiva Verdadeira) e especificidade (Avaliação Negativa Verdadeira) podem prover modos de modelos de avaliação. De forma similar, Avaliações Positivas Faslas assim como Avaliações Negativas Faslas poder ser computadas. Curvas Receptoras de Operação (CRO) em conjunto com a Área em baixo da CRO (AUC) oferecem ferramentas adicionais para a classificação de modelos de avaliação. Graus maiores de AUC estão associados a um modelo de melhor performance. [30]

Software

Software suites contendo uma variedade de algoritmos de aprendizado de máquina incluem os seguintes:

Software de fonte aberta e gratuita

  • dlib
  • ELKI
  • Encog
  • GNU Octave
  • H2O
  • Mahout
  • Mallet (software project)
  • mlpy
  • MLPACK
  • MOA (Massive Online Analysis)
  • ND4J with Deeplearning4j
  • NuPIC
  • OpenAI
  • OpenCV
  • OpenNN
  • Orange
  • R
  • scikit-learn
  • scikit-image
  • Shogun
  • TensorFlow
  • Torch
  • Spark
  • Yooreeka
  • Weka

Software particular com edições de fonte aberta e gratuita

  • KNIME
  • RapidMiner

Proprietary software

  • Amazon Machine Learning
  • Angoss KnowledgeSTUDIO
  • Ayasdi
  • Databricks
  • Google APIs|Google Prediction API
  • IBM SPSS Modeler
  • KXEN Modeler
  • LIONsolve
  • Mathematica
  • MATLAB
  • Microsoft Azure Machine Learning
  • Neural Designer
  • NeuroSolutions
  • Oracle Data Mining
  • RCASE
  • SAS Enterprise Miner
  • Splunk
  • STATISTICA Data Miner

Veja também esta lista de pacotes em muitas linguagens de programação: Awesome Machine Learning.

Periódicos

Conferências

  • Conference on Neural Information Processing Systems
  • International Conference on Machine Learning

Ver também

Ligações externas

Referências

  1. a b «Definição: machine learning». Enciclopedia Britannica (em inglês) 
  2. Simon, Phil (Março, 18, 2013). Too Big to Ignore: The Business Case for Big Data. [S.l.]: Wiley. 89 páginas. ISBN 978-1-118-63817-0  Verifique data em: |ano= (ajuda)
  3. Kohavi, Ron; Provost, Foster (1998). «Glossary of terms». Machine Learning 30: 271–274 
  4. Wernick, Yang, Brankov, Yourganov and Strother (Julho, 2010). «Machine Learning in Medical Imaging». IEEE Signal Processing Magazine. 27 (4): 25-38 
  5. Mannila, Heikki (1996). «Data mining: machine learning, statistics, and databases». Int'l Conf. Scientific e Statistical Database Management. IEEE Computer Society 
  6. Friedman, Jerome H. (1998). «Data Mining and Statistics: What's the connection?». Computing Science and Statistics 29 (1): 3–9 
  7. «Machine Learning: What it is and why it matters» (em inglês). SAS The Power to Know. Consultado em 10 de outubro de 2016 
  8. M. Mitchell, Tom (1997). Machine Learning. [S.l.]: McGraw Hill. 2 páginas. ISBN 0-07-042807-7 
  9. Harnad, Steven (2008). The Annotation Game: On Turing (1950) on Computing, Machinery, and Intelligence. in Epstein, Robert; Peters, Grace: Parsing the Turing Test: Philosophical and Methodological Issues in the Quest for the Thinking Computer (em inglês). [S.l.]: Springer. pp. 23–66. Consultado em 10 de outubro de 2016 
  10. a b c d e Russell, Stuart; Norvig, Peter (2003 [1995]). Artificial Intelligence: A Modern Approach (em inglês) 2 ed. [S.l.]: Prentice Hall. ISBN 978-0137903955  Verifique data em: |ano= (ajuda)
  11. a b Langley, Pat (2011). «The changing science of machine learning». Machine Learning (em inglês). 82 (3): 275–279. doi:10.1007/s10994-011-5242-y. Consultado em 10 de outubro de 2016 
  12. Le Roux, Nicolas; Bengio, Yoshua; Fitzgibbon, Andrew (2012). Improving First and Second-Order Methods by Modeling Uncertainty In Sra, Suvrit; Nowozin, Sebastian; Wright, Stephen J. Optimization for Machine Learning (em inglês). [S.l.]: MIT Press. 404 páginas 
  13. a b I. Jordan, Michael (9 de outubro de 2014). «Statistics and machine learning» (em inglês). Reddit. Consultado em 11 de outubro de 2016 
  14. Breiman, Leo (2001). «Statistical Modeling: The Two Cultures (with comments and a rejoinder by the author)». The Institute of Mathematical Statistics. Statistical Science (em inglês). 16 (3): 199-231 
  15. Gareth, James; Witten, Daniela; Hastie, Trevor; Tibshirani, Robert (2013). An Introduction to Statistical Learning (em inglês). [S.l.]: Springer. 7 páginas 
  16. Bishop, Christopher (2006). Pattern Recognition and Machine Learning (em inglês). [S.l.]: Springer. ISBN 0-387-31073-8 
  17. Mehryar, Mohri; Rostamizadeh, Afshin; Talwalkar, Ameet (2012). Foundations of Machine Learning (em inglês). [S.l.]: MIT Press. ISBN 978-0-262-01825-8 
  18. Alpaydin, Ethem (2010). Introduction to Machine Learning (em inglês). [S.l.]: MIT Press 
  19. Honglak Lee, Roger Grosse, Rajesh Ranganath, Andrew Y. Ng. (2009). «Convolutional Deep Belief Networks for Scalable Unsupervised Learning of Hierarchical Representations». Proceedings of the 26th Annual International Conference on Machine Learning (em inglês) 
  20. Lu, Haiping; Plataniotis, K.N.; Venetsanopoulos, A.N. (2011). «A Survey of Multilinear Subspace Learning for Tensor Data» (PDF). Pattern Recognition (em inglês). 44 (7): 1540–1551. doi:10.1016/j.patcog.2011.01.004. Consultado em 17 de outubro de 2016 
  21. Bengio, Yoshua (2009). Learning Deep Architectures for AI. [S.l.]: Now Publishers Inc. pp. 1–3. ISBN 978-1-60198-294-0 
  22. Tillmann, Andreas M. (2015). «On the Computational Intractability of Exact and Approximate Dictionary Learning». IEEE Signal Processing Letters. 22 (1): 45-49 
  23. Aharon, Michael; M. Elad; A. Bruckstein (2006). «K-SVD: An Algorithm for Designing Overcomplete Dictionaries for Sparse Representation». IEEE Transactions on Signal Processing. 54 (11): 4311-4322 
  24. Goldberg, David E; Holland, John H. (1988). «Genetic algorithms and machine learning». Machine Learning (em inglês). 3 (2): 95–99. doi:10.1007/bf00113892 
  25. Michie, Donald; Spiegelhalter, David; C.C., Taylor (1994). Machine Learning, Neural and Statistical Classification (em inglês). [S.l.]: Ellis Horwood 
  26. Zhang, Jun; Zhan, Zhi-hui; Lin, Ying; Chen, Ni; Gong, Yue-jiao; Zhong, Jing-hui; Chung, Henry S.H.; Li, Yun; Shi, Yu-hui (2011). «Evolutionary Computation Meets Machine Learning: A Survey». Computational Intelligence Magazine (em inglês). 6 (4): 68-75. doi:10.1109/mci.2011.942584 
  27. «The Netflix Tech Blog: Netflix Recommendations: Beyond the 5 stars (Part 1)». Consultado em 17 de outubro de 2016 
  28. «Artificial Intelligence' Gains Fans Among Investors - WSJ» (em inglês). Consultado em 17 de outubro de 2016 
  29. «When A Machine Learning Algorithm Studied Fine Art Paintings, It Saw Things Art Historians Had Never Noticed» (em inglês). Consultado em 17 de outubro de 2016 
  30. Catal, Cagatay (2012). «Performance Evaluation Metrics for Software Fault Prediction Studies» (PDF). Acta Polytechnica Hungarica (em inglês). 9 (4) 

Para mais leituras