Utilizador:MiguelDuarte: diferenças entre revisões
Fonte: aprendis
Saltar para a navegaçãoSaltar para a pesquisa
Sem resumo de edição |
|||
(Há 38 revisões intermédias de 2 utilizadores que não estão a ser apresentadas) | |||
Linha 21: | Linha 21: | ||
[[Utilizador:MiguelDuarte|MiguelDuarte]] ([[Utilizador Discussão:MiguelDuarte|discussão]]) 01h30min de 4 de fevereiro de 2016 (CET) | [[Utilizador:MiguelDuarte|MiguelDuarte]] ([[Utilizador Discussão:MiguelDuarte|discussão]]) 01h30min de 4 de fevereiro de 2016 (CET) | ||
<!-- | <!-- | ||
=Extração de Conhecimento de Dados= | =Extração de Conhecimento de Dados= | ||
“We study the past to understand the present; we understand the present to guide the future.” - William Lund | “We study the past to understand the present; we understand the present to guide the future.” - William Lund | ||
Linha 165: | Linha 62: | ||
Um modelo de árvore de regressão é utilizado para resolver problemas com base na regressão. Este modelo utiliza a mesma estratégia de dividir que a árvore de decisão, mas neste caso para valores contínuos.<ref name="citação6">J. R. Quinlan and Q. J.R, “Simplifying decision trees,” Int. J. Hum. Comput. Stud., vol. 51, no. 2, pp. 497–510, 1999. [http://paperpile.com/b/93BCcV/K7Dz]</ref> | Um modelo de árvore de regressão é utilizado para resolver problemas com base na regressão. Este modelo utiliza a mesma estratégia de dividir que a árvore de decisão, mas neste caso para valores contínuos.<ref name="citação6">J. R. Quinlan and Q. J.R, “Simplifying decision trees,” Int. J. Hum. Comput. Stud., vol. 51, no. 2, pp. 497–510, 1999. [http://paperpile.com/b/93BCcV/K7Dz]</ref> | ||
Alguns dos algoritmos baseados em árvores de decisão e regressão são: ID3 ( | No caso destes valores contínuos, existem duas formar de se tratar da divisão: discretização para formar um atributo ordinal categórico (estático, em que se discretiza uma vez no início ou dinâmico em que os intervalos podem ser determinados por tamanho, frequência ou clustering) ou decisão binária (considera todas as divisões possíveis e considera a melhor). | ||
Alguns dos algoritmos baseados em árvores de decisão e regressão são: ID3 (Quinlan, 1979), ASSISTANT (Cestnik et al., 1987), CART (Breiman et al., 1984), C4.5 (Quinlan, 1993). O algoritmo mais utilizado para a classificação é o CART, seguido do seu competidor C4.5. <ref name="citação7">T. Hastie, R. Tibshirani, and J. Friedman, The Elements of Statistical Learning: Data Mining, Inference, and Prediction. Springer Science & Business Media, 2013.</ref> | |||
Tanto uma árvore de decisão como uma árvore de regressão são um grafo acíclico direcionado constituído por nós de divisão com dois ou mais sucessores, ou nós folha. | Tanto uma árvore de decisão como uma árvore de regressão são um grafo acíclico direcionado constituído por nós de divisão com dois ou mais sucessores, ou nós folha. | ||
Linha 178: | Linha 77: | ||
Um nó folha é uma função. Em problemas de classificação, a constante que minimiza a função de custo é 0-1 e é a moda. Em problemas de regressão, a constante é a média. | Um nó folha é uma função. Em problemas de classificação, a constante que minimiza a função de custo é 0-1 e é a moda. Em problemas de regressão, a constante é a média. | ||
=== Ganho de Informação === | |||
O ganho de informação está subjacente ao conceito de entropia. A entropia é uma medição da aleatoriedade de uma variável aleatória, cuja função é: | |||
[[Image:image11.png|image11.png]] | |||
Neste caso, p seria a probabilidade de observar A=0 e p-1 a probabilidade de observar A=1. | |||
No caso das árvores de decisão, a entropia representa a aleatoriedade do atributo alvo, ou seja, a dificuldade para predizer determinado atributo. O índice Gini é uma regra de ganho de informação usado no CART.Este índice de Gini pode ser considerado uma medida de impureza ou como método de divisão na árvore. Na divisão de atributos categóricos, o índice de Gini pode realizar um multi-way split ou um binary split. Este índice é representado pela seguinte fórmula:<ref name="citação5"/> | |||
[[Image:image12.png|image12.png]] | |||
=== Estratégias de Poda === | === Estratégias de Poda === | ||
Linha 199: | Linha 107: | ||
# Valores ausentes – Se um valor de atributo é desconhecido, não poderá ser continuado o ramo. | # Valores ausentes – Se um valor de atributo é desconhecido, não poderá ser continuado o ramo. | ||
# Atributos contínuos – A ordenação de cada atributo contínuo estima-se que consuma 70% do tempo necessário para induzir uma árvore de decisão. | # Atributos contínuos – A ordenação de cada atributo contínuo estima-se que consuma 70% do tempo necessário para induzir uma árvore de decisão. | ||
# Instabilidade – Breiman (1996) e Kohavi e Kunz (1997) apontaram que variações no conjunto de treino podem produzir grande variações na árvore final. Mudando um nó, todas as | # Instabilidade – Breiman (1996) e Kohavi e Kunz (1997) apontaram que variações no conjunto de treino podem produzir grande variações na árvore final. Mudando um nó, todas as sub-árvores abaixo desse nó mudam. | ||
[[Image:image07.jpg| center| frame | Figura 1. Representação de uma árvore de decisão efetuada no Rapidminer com dados dos sobreviventes do “Titanic”.]] | [[Image:image07.jpg| center| frame | Figura 1. Representação de uma árvore de decisão efetuada no Rapidminer com dados dos sobreviventes do “Titanic”.]] | ||
O [http://%20https://archive.ics.uci.edu/ml/datasets.html UCI Machine Learning Repository] constitui uma excelente fonte de bases de dados que poderão ser utilizadas de forma gratuita para a aprendizagem da utilização de softwares como rapidminer e weka. | |||
== Regras de Decisão == | == Regras de Decisão == | ||
Linha 574: | Linha 484: | ||
De seguida é apresentado o algoritmo de cobertura <ref name="citação5"/> | De seguida é apresentado o algoritmo de cobertura <ref name="citação5"/> | ||
<blockquote style="background-color: whitesmoke;"> | |||
* Entrada: Um conjunto de treino D = {(xi, yi), i = 1, ..., n } | * Entrada: Um conjunto de treino D = {(xi, yi), i = 1, ..., n } | ||
* Saída: Um conjunto de regras: Regras | * Saída: Um conjunto de regras: Regras | ||
Linha 587: | Linha 497: | ||
* fim | * fim | ||
* Retorna: Regras; | * Retorna: Regras; | ||
</blockquote> | |||
Têm sido usadas duas estratégias básicas de procura de regras<ref name="citação5"/>. Uma baseada numa estratégia top-down que começa na regra mais geral tornando-se depois mais específica acrescentando condições. A segunda começa pela regra mais específica e vai removendo condições tornando-se mais generalizada, é uma estratégia bottom-up e orientada pelos dados.<ref name="citação5"/> | Têm sido usadas duas estratégias básicas de procura de regras<ref name="citação5"/>. Uma baseada numa estratégia top-down que começa na regra mais geral tornando-se depois mais específica acrescentando condições. A segunda começa pela regra mais específica e vai removendo condições tornando-se mais generalizada, é uma estratégia bottom-up e orientada pelos dados.<ref name="citação5"/> | ||
Linha 593: | Linha 504: | ||
=== Algoritmo top-down === | === Algoritmo top-down === | ||
<blockquote style="background-color: whitesmoke;"> | |||
* Entrada: Um conjunto de treino D = {(xi, yi), i = 1, ..., n } | * Entrada: Um conjunto de treino D = {(xi, yi), i = 1, ..., n } | ||
* y: classe da regra | * y: classe da regra | ||
Linha 617: | Linha 528: | ||
* fim | * fim | ||
* Retorna: Regra; | * Retorna: Regra; | ||
</blockquote> | |||
=== Algoritmo Bottom-up === | === Algoritmo Bottom-up === | ||
<blockquote style="background-color: whitesmoke;"> | |||
* Entrada: Um conjunto de treino D = {(xi, yi), i = 1, ..., n } | * Entrada: Um conjunto de treino D = {(xi, yi), i = 1, ..., n } | ||
* y: classe da regra | * y: classe da regra | ||
Linha 644: | Linha 555: | ||
* fim | * fim | ||
* Retorna: Regra; | * Retorna: Regra; | ||
</blockquote> | |||
A diferença fundamental entre os dois algoritmos é que o método top-down gera regras ordenadas pela ordem que são induzidas enquanto o método bottom-up gera um conjunto não ordenado. Esta diferença implica que a aplicação do conjunto de regras a exemplos não classificados seja, no caso do top-down, cada exemplo é classificado pela primeira regra satisfeita, no caso bottom-up, todas as regras satisfeitas são utilizadas para classificar o exemplo, optando pela regra com melhor qualidade. | A diferença fundamental entre os dois algoritmos é que o método top-down gera regras ordenadas pela ordem que são induzidas enquanto o método bottom-up gera um conjunto não ordenado. Esta diferença implica que a aplicação do conjunto de regras a exemplos não classificados seja, no caso do top-down, cada exemplo é classificado pela primeira regra satisfeita, no caso bottom-up, todas as regras satisfeitas são utilizadas para classificar o exemplo, optando pela regra com melhor qualidade. | ||
Linha 737: | Linha 649: | ||
</pre> | </pre> | ||
Qual é o poder preditivo do Teste com respeito à Doença? | Qual é o poder preditivo do Teste com respeito à Doença? | ||
Se A e B são eventos disjuntos, então [[Image:image13.png|image13.png]]; | |||
Lei da probabilidade total: [[Image:image14.png|image14.png]] | |||
Lei da probabilidade condicional:<ref name="citação5"/> | |||
[[Image:image15.png|image15.png]] | |||
Dedução: | |||
[[Image:image16.png|image16.png]] | |||
[[Image:image17.png|image17.png]] | |||
[[Image:image18.png|image18.png]] | |||
Já que P(A) = P(A|B) X P(B), então: | |||
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"> | <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"> | ||
P(Teste = Positivo) = P(Teste = Positivo |Doença = Presente) X P(Doença = Presente) + P(Teste = Positivo |Doença = Ausente) X P(Doença = Ausente) = 0,75 X 0,08 + 0,04 X 0,92 = 0,0968. | P(Teste = Positivo) = P(Teste = Positivo |Doença = Presente) X P(Doença = Presente) + P(Teste = Positivo |Doença = Ausente) X P(Doença = Ausente) = 0,75 X 0,08 + 0,04 X 0,92 = 0,0968. | ||
Linha 748: | Linha 677: | ||
O problema de Inferência e o Teorema de Bayes: a sua aplicabilidade é reduzida devido ao grande número de exemplos necessários para calcular, de forma viável. | O problema de Inferência e o Teorema de Bayes: a sua aplicabilidade é reduzida devido ao grande número de exemplos necessários para calcular, de forma viável. | ||
== O classificador | == O classificador Naïve Bayes == | ||
Um dos classificadores Bayesianos mais populares; | Um dos classificadores Bayesianos mais populares; | ||
Linha 766: | Linha 695: | ||
# Discretizar o atributo no pré-processamento (melhores resultados do que assumir distribuição normal): | # Discretizar o atributo no pré-processamento (melhores resultados do que assumir distribuição normal): | ||
# Número de intervalos fixado em um k = mínimo / intervalos do mesmo tamanho; | # Número de intervalos fixado em um k = mínimo (que pode ou não ser igual a 10) / intervalos do mesmo tamanho; | ||
# Depois de discretizar um atributo podemos calcular a probabilidade condicional ao utilizar um contador para cada classe e para cada intervalo.<ref name="citação5"/> | # Depois de discretizar um atributo podemos calcular a probabilidade condicional ao utilizar um contador para cada classe e para cada intervalo.<ref name="citação5"/> | ||
== Análise do algoritmo == | == Análise do algoritmo == | ||
# Superfície de decisão linear ( | # Superfície de decisão linear (Naïve Bayes num problema de duas classes definidos por atributos booleanos é um hiperplano); | ||
# As probabilidades exigidas pela equação que determina a probabilidade de um exemplo pertencer à classe em questão podem ser calculadas a partir do conjunto de treino numa única passagem; | # As probabilidades exigidas pela equação que determina a probabilidade de um exemplo pertencer à classe em questão podem ser calculadas a partir do conjunto de treino numa única passagem; | ||
# Processo de construção do modelo bastante eficiente; | # Processo de construção do modelo bastante eficiente; | ||
Linha 781: | Linha 710: | ||
# Problema da frequência = 0. Se uma das frequências for igual a zero devemos adicionar 1 a todos os valores da tabela;<ref name="citação5"/> | # Problema da frequência = 0. Se uma das frequências for igual a zero devemos adicionar 1 a todos os valores da tabela;<ref name="citação5"/> | ||
== Desenvolvimentos (técnicas para melhorar o desempenho do classificador | == Desenvolvimentos (técnicas para melhorar o desempenho do classificador Naïve Bayes) == | ||
# Langley = recursivamente constrói uma hierarquia das descrições dos conceitos probabilísticos; | # [http://www.springer.com/us/book/9783540566021 Langley (1993)] = recursivamente constrói uma hierarquia das descrições dos conceitos probabilísticos; | ||
# Kohavi = árvore de | # [http://www.aaai.org/Library/KDD/kdd96contents.php Kohavi (1996)] = árvore de Naïve Bayes (algoritmo híbrido que gera uma árvore de decisão univariada regular cujas folhas contêm um classificador Naïve Bayes; | ||
# Kononenko = classificador semi- | # [http://www.springer.com/cn/book/9783540538165 Kononenko (1991)] = classificador semi-Naïve Bayes (combina pares de atributos, fazendo um atributo produto-cruzado); | ||
# Pazzani = classificador construtivo, encontrar os melhores atributos do produto cartesiano a partir de atributos nominais existentes; | # [http://www.worldscientific.com/worldscibooks/10.1142/3251 Pazzani (1996)] = classificador construtivo, encontrar os melhores atributos do produto cartesiano a partir de atributos nominais existentes; | ||
# John = Bayes flexível para atributos contínuos; | # [http://machine-learning.martinsewell.com/feature-selection/JohnKohaviPfleger1994.pdf John (1994)] = Bayes flexível para atributos contínuos; | ||
# Gama = Linear Bayes, distribuição normal multivariada para cada classe (atributos contínuos).<ref name="citação5"/> | # [http://www.springer.com/us/book/9783540412762 Gama (2000)] = Linear Bayes, distribuição normal multivariada para cada classe (atributos contínuos).<ref name="citação5"/> | ||
== Redes Bayesianas para classificação: Modelos gráficos probabilísticos | == Redes Bayesianas para classificação: Modelos gráficos probabilísticos == | ||
Grafo Acíclico Direcionado (DAG) (cujos nós representam variáveis aleatórias e as arestas representam dependências diretas entre as variáveis) + conjunto de tabelas de probabilidade condicional; | Grafo Acíclico Direcionado (DAG) (cujos nós representam variáveis aleatórias e as arestas representam dependências diretas entre as variáveis) + conjunto de tabelas de probabilidade condicional; | ||
Linha 820: | Linha 749: | ||
Deve-se a McCulloch e Pitts (1943) o inicio da pesquisa deste tipo de modelos computacionais tendo sido desenvolvido um primeiro modelo matemático denominado de unidades logicas com limiar (LTU em inglês). | Deve-se a McCulloch e Pitts (1943) o inicio da pesquisa deste tipo de modelos computacionais tendo sido desenvolvido um primeiro modelo matemático denominado de unidades logicas com limiar (LTU em inglês). | ||
Este modelo tem como base o | Este modelo tem como base o Neurónio Biológico sendo que este é o principal bloco de construção do nosso cérebro conforme ilustrado na figura 2 abaixo. | ||
[[Image:image05.png|image05.png | center| frame | Figura 2 - Esquema de um neurónio e da forma como o impulso é realizado ao longo do mesmo.]] | [[Image:image05.png|image05.png | center| frame | Figura 2 - Esquema de um neurónio e da forma como o impulso é realizado ao longo do mesmo.]] | ||
Tendo por base este modelo as RNA foram desenvolvidas com o mesmo principio tendo como componentes básicas unidades de processamento simples a que foi dado o nome de | Tendo por base este modelo as RNA foram desenvolvidas com o mesmo principio tendo como componentes básicas unidades de processamento simples a que foi dado o nome de neurónios artificiais ilustrado a seguir na figura 3 : | ||
[[Image:image08.png|image08.png| center| frame | Figura 3 - Esquema de um | [[Image:image08.png|image08.png| center| frame | Figura 3 - Esquema de um neurónio artificial.]] | ||
As redes neuronais artificiais, consistem em programas únicos de software que imitam a ciência de um neurónio. | As redes neuronais artificiais, consistem em programas únicos de software que imitam a ciência de um neurónio. | ||
A conjugação de vários input (dendrites), num determinado centro de processamento (corpo do neurónio). | A conjugação de vários input (dendrites), num determinado centro de processamento (corpo do neurónio). | ||
Linha 840: | Linha 768: | ||
Uma rede neuronal artificial está, por norma, organizada em camadas, sendo que todos os neurônios de uma determinada camada têm de estar | Uma rede neuronal artificial está, por norma, organizada em camadas, sendo que todos os neurônios de uma determinada camada têm de estar inter-conectados com um neurônio da camada subsequente. | ||
Assim, os neurónios da primeira camada terão o nome de neurónios de input, os das camadas intermédias têm a designação de camadas escondidas e os da última camada serão neurónios de output. | |||
Assim, os | |||
Linha 852: | Linha 779: | ||
O processo de treino no caso especifico deste algoritmo assenta num processo iterativo que constituído por duas etapas ; uma para a frente (forward) e uma par trás (backward) . Na primeira fase cada objeto de entrada é dado a conhecer à rede. O mesmo é recebido por cada um dos | O processo de treino no caso especifico deste algoritmo assenta num processo iterativo que constituído por duas etapas ; uma para a frente (forward) e uma par trás (backward) . Na primeira fase cada objeto de entrada é dado a conhecer à rede. O mesmo é recebido por cada um dos neurónios da primeira camada intermediaria sendo ponderado pelo peso associado à conexão de entrada correspondente . Na camada respetiva cada neurônio pertencente à mesma aplica a função de ativação à soma das suas entradas a produz um valor de saída (output) que é utilizado como valor de entrada (input) da camada de neurónios seguinte. Este processo é continuo ate que os neurónios da camada de saída produzem eles mesmos o seu valor de saída. Este valor é então comparado com o valor de com o valor esperado para saída desse neurônio. A diferença entre os valores achados é o erro cometido pela rede para o objeto introduzido na rede. | ||
Linha 860: | Linha 787: | ||
Exemplo de algoritmo de treino back-propagation | Exemplo de algoritmo de treino back-propagation | ||
<blockquote style="background-color: whitesmoke;"> | |||
* Entrada : um conjunto de n objetos de treino | * Entrada : um conjunto de n objetos de treino | ||
* Saída : Rede MPL com valores de pesos ajustados | * Saída : Rede MPL com valores de pesos ajustados | ||
* inicializar | * inicializar pesos da rede com valores aleatórios | ||
* | * inicializar erro total=0 | ||
* repita | * repita | ||
** para cada objeto xi do conjunto faça | ** para cada objeto xi do conjunto faça | ||
*** para cada camada de rede , a partir da primeira camada intermediaria. | *** para cada camada de rede , a partir da primeira camada intermediaria. | ||
**** Faça para cada | **** Faça para cada neurónio njl da camada: | ||
***** calcular valor da | ***** calcular valor da saída produzida pelo neurónio , f | ||
**** fim | **** fim | ||
*** fim | *** fim | ||
Linha 876: | Linha 802: | ||
*** para cada camada de rede a partir da camada de saída faça: | *** para cada camada de rede a partir da camada de saída faça: | ||
**** para cada neurónio njl da camada faça | **** para cada neurónio njl da camada faça | ||
***** ajustar pesos do | ***** ajustar pesos do neurónio utilizando Equação | ||
**** fim | **** fim | ||
*** fim | *** fim | ||
Linha 882: | Linha 808: | ||
** fim | ** fim | ||
* até erro total < | * até erro total < | ||
</blockquote> | |||
=Exemplos Rapidminer= | |||
<gallery> | |||
Ficheiro:Image19.png|Árvore de decisão e respetivo teste de performance | |||
Ficheiro:Image20.png|Cross-Validation de uma árvore de decisão | |||
Ficheiro:Image21.png|Processo de Cross-Validation | |||
Ficheiro:Image22.png|Resultado de performance de uma árvore de decisão | |||
Ficheiro:Image23.png|Exemplo com todos os métods abordados | |||
</gallery> | |||
=Conclusão= | =Conclusão= | ||
Linha 888: | Linha 824: | ||
=Referências= | =Referências= | ||
<references/> | <references/> | ||
Miguel Duarte, João Sabino, Mário Leal e Ricardo Lourenço 05h19min de 22 de fevereiro de 2016 (CET) | |||
--> |
Edição atual desde as 21h30min de 21 de abril de 2016
MiguelDuarte | |
---|---|
Área(s) de Atuação | Informática Médica |
Entidade(s) Criadora(s) | Mestrado em Informática Médica |
Entidade(s) Gestora(s) | Faculdade de Medicina da Universidade do Porto |
Data de Lançamento | 2016 |
About me
Licenciado em Engenharia de Informática pelo ISEP.
A frequentar Mestrado em Informática Médica na FMUP e FCUP.
Developer no Centro Hospitalar São João, co-responsável pelo desenvolvimento de várias aplicações, móveis e desktop, para uso dos vários grupos profissionais.
Formador de iOS no ISEP com formações desde o iOS 4 até ao iOS 9.
Freelancer como Developer de iOS e Windows Phone.
Amador entusiasta no desenvolvimento de aplicações para domótica e iOT
MiguelDuarte (discussão) 01h30min de 4 de fevereiro de 2016 (CET)