Buscar

Supervisionado vs Não Supervisionado

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Tutorial: pra Mostrar no R como são preparados os dados a partir da natureza do problema e qual técnica se deve escolher para resolver.
Supervisionado vs Não Supervisionado
Supervisionado ou classificação: é normalmente usado para tentar encontrar uma função ou modelo que pode depois ser usado para prever rótulos ou valores de observações não vistas. É importante que durante o treinamento da função, observações rotuladas estejam disponíveis para o algoritmo. 
Não supervisionado ou clustering: é normalmente usado para encontrar grupos de observações que são similares e assim não precisa de observações rotuladas para aprender dos dados.
Aqui tenho o exemplo das duas abordagens a primeira que é o SVM onde os dados não linearmente separáveis em um espaço dimensional, são projetados em um hiperplano onde são traçados vetores de suporte para separar esses dados de forma linear. 
E o K-means da mesma forma, projeta os dados em um espaço dimensional, e dado o valor de k representando os clusters iniciais, ele aleatoriamente seleciona no plano os k centroides e então atribui/associa a cada centroide os pontos mais próximos a ele, (recalculando os centroides e associando os pontos mais próximos a eles) repetindo isso a cada iteração até convergir, ou seja, até que os centroides não se alterem.
Primeiro como saber se o problema é classificação ou clustering: olhar para os dados e verificar se consegue definir classes, por exemplo: quero diferenciar quadrados de retângulos. Esse é um problema que pode ser tratado por classificação onde se tem duas classes: quadrados e não quadrados ou retângulos e não-retângulos. (também chamado como classificação binária). 
Mas como olhar para esse problema e representá-lo: 
1) verificar quais são as observações, ou seja, os objetos que se deseja classificar, nesse exemplo eu tenho 10 objetos que são quadrados e 10 que são retângulos, no total 20 objetos, como é um problema de classificação temos que já ter definido os rótulos dos dados, então 10 objetos são da classe 1( que é quadrado) e 10 objetos são da classe 0 (não é quadrado ou é retângulo).
2) como distinguir essas observações, ou seja, quais são as principais características que diferenciam quadrado de retângulo: quadrado tem lados (ou comprimento e largura) iguais. Pronto basta algum dos objetos apresentarem medidas de comprimento e largura diferentes para serem classificados como retângulos (não quadrado).
No R para representar os dados nós usamos um data.frame, que nada mais é do que uma matriz, onde as linhas são as observações, ou seja os objetos e as colunas são as características. Vamos criar os 8 objetos do exemplo.
1) criamos o data frame vazio sem nenhuma observação e nenhuma característica ou variável. Abro o Rstudio que é um editor e posso criar um script ou rodar no console direto. Então:
dados=data.frame(). No canto ele já me mostra o data frame vazio criado. Os quatro primeiros objetos do dataframe serão quadrados e os demais retângulo que eu defini como rótulo 1 então o identificador das primeiras 10 observações que são as linhas será 1 e os demais serão 0. Os identificadores das colunas que são as características que serão comprimento e largura.
Então posso gerar dois vetores com os rótulos da classe quadrado (1,1,1,1,1,1,1,1,1,1) e retângulo(0,0,0,0,0,0,0,0,0,0) e os valores de comprimento e largura.
Aqui no meu exemplo, 
Pré-processamento
Ao observar os dados podem ser gerados valores discrepantes um dos outros, como por exemplo imaginemos das observações retângulo, onde o valores de comprimento e largura estivessem em escalas diferentes nesse caso é necessário normalizar os dados e aproximá-los.
 A normalização mais conhecida é uma função que divide o valor mínimo da observação pela diferença maior valor.
Treinar e Testar o SVM
O que eu passo como entrada pro meu classificador no treino são vetores de características, então cada linha da minha matriz será um vetor contendo três características, no treino eu dou os rótulo pro meu classificador aprender e gerar a função de aprendizado. 
quando os dados são plotados no plano e são fáceis de separar, eu uso kernel linear porque eu sei que esses dados são separáveis. quando eu vejo que os dados são bem misturados eu vejo que não pode separar linearmente então uso outro kernel, como RBF,

Outros materiais