Visualizando componentes principais para imagens

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[Esteartigofoipublicadopelaprimeiravezem[Thisarticlewasfirstpublishedon R – Oi! Eu sou Nagdev, e gentilmente contribuiu para os R-blogueiros]. (Você pode relatar um problema sobre o conteúdo desta página aqui)


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.

A Análise de componentes principais (PCA) é uma ótima ferramenta para projetos de análise de dados por várias razões. Se você nunca ouviu falar do PCA, em palavras simples, ele faz uma transformação linear de seus recursos usando covariância ou correlação. Vou adicionar alguns links abaixo, se você quiser saber mais sobre isso. Algumas das aplicações do PCA são redução dimensional, análise de recursos, compactação de dados, detecção de anomalias, clustering e muito mais. A primeira vez que aprendi sobre o PCA, não foi fácil de entender e bastante confuso. Mas, quando comecei a ler sobre suas aplicações em trabalhos de pesquisa, comecei a ficar curioso e experimentar todas elas. Agora, eu o uso na maioria dos meus projetos como uma etapa de pré-processamento.

Recentemente, adicionei este tópico ao meu currículo de ciência de dados, pois o PCA se tornou relevante na ciência de dados hoje. Na primeira vez em que ensinei isso aos meus alunos, 90% da turma estava com uma expressão vazia. Honestamente, foi meu próprio reflexo. Então, me inclinei para o ensino demonstrativo, em vez de usar slides e conversar por uma hora. Isso realmente tornou muito mais fácil de entender. Pensei em compartilhar este exemplo no meu blog e ajudar os necessitados.

Neste exemplo, usaremos esta imagem em escala de cinza, como mostrado abaixo. Além disso, tentarei manter o código R usado neste exemplo o mais minimalista possível.

Etapa 1: processamento de imagem

Carregue a biblioteca de imagens, carregue a imagem e converta a imagem em grade de matriz linha x coluna.

Em seguida, visualizaremos nossa imagem usando a função de imagem. Uma publicação no estouro de pilha me ajudou a usar a função de imagem da maneira certa.

library(imager)

# load the image and look at the image properties
image = load.image("/cloud/project/bwimage.JPG")
image
# Image. Width: 282 pix Height: 220 pix Depth: 1 Colour channels: 3 

# convert image data to data frame
image_df = as.data.frame(image)

head(image_df)
# x y cc     value
# 1 1 1  1 0.9372549
# 2 2 1  1 0.9254902
# 3 3 1  1 0.9254902
# 4 4 1  1 0.9294118
# 5 5 1  1 0.9372549
# 6 6 1  1 0.9372549

# convert image into x and y grid using matrix function
image_mat = matrix(image_df$value, nrow = 220, ncol = 282, byrow = TRUE)

# visualize the image
image(t(apply(image_mat, 2, rev)), col=grey(seq(0,1,length=256)))

Etapa 2: Análise PCA

O próximo passo é carregar a matriz na função do componente principal para realizar a reconstrução. A escala é muito importante para o PCA. Como a imagem que usei é em escala de cinza, não dimensionei os dados para simplificá-los. Em seguida, visualizamos os principais componentes e identificamos que os 5 primeiros contribuem para a maior variação nos dados, conforme mostrado na imagem abaixo.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
# pca analysis     
pca_model = prcomp(image_mat)

# plot the scree plot
plot(pca_model)

Etapa 3: Reconstrução e visualização

O passo final é visualizar a imagem reconstruída para cada um dos componentes. Aqui, usaremos componentes alternativos de 1 a 9 e os plotamos em uma grade para visualizar a reconstrução do PCA.

Para realizar a reconstrução, primeiro faremos uma multiplicação matricial do digamos, primeiro PC e a transposição da rotação do primeiro componente. Isso irá gerar uma matriz semelhante à nossa dimensão de imagem. Finalmente, pegaremos esses dados reconstruídos e traçaremos uma imagem.

Para tornar isso um pouco mais fácil, coloquei toda a reconstrução e visualização em uma função. Em seguida, passe pelo lappy para visualizar as imagens reconstruídas, como mostrado abaixo.

# Reconsturction and plotting
par(mfrow= c(3,3))
recon_fun = function(comp){
  recon = pca_model$x[, 1:comp] %*% t(pca_model$rotation[, 1:comp])
  image(t(apply(recon, 2, rev)), col=grey(seq(0,1,length=256)), main = paste0("Principle Components = ", comp))
}

# run reconstruction for 1:17 alternating components
lapply(seq(1,18, by = 2), recon_fun)

Como vemos na imagem acima, à medida que adicionamos mais componentes para a reconstrução, a imagem fica mais clara. Na aplicação do mundo real, poderíamos simplesmente armazenar poucos componentes dos dados como uma representação da imagem e reconstruí-la. Também poderíamos usar essa imagem reconstruída e alimentá-la na rede neural para melhorar a qualidade da imagem. Agora, você sabe como a redução de dimensionalidade funciona para imagens usando o PCA. Essa abordagem demonstrativa passo a passo definitivamente ajudou enquanto lecionava na minha turma e eu gostaria de ter sido ensinado dessa maneira.

Leia Também  Mineiros de criptomoeda maliciosa ganham impulso

Abaixo estão alguns dos melhores tutoriais sobre PCA por aí.

Escrevi alguns blocos de anotações jupiter sobre aplicativos de PCA na detecção de anomalias e redução de dimensionalidade na minha página do GitHub. Sinta-se livre para conferir.

Obrigado por visitar e ler este artigo. Sinta-se livre para comentar abaixo e compartilhar este artigo com seus colegas. Além disso, confira meus outros artigos.

O post Visualizando os Princípios Básicos para Imagens apareceu primeiro no Hi! Eu sou Nagdev.



Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha o seu sabor: e-mail, twitter, RSS ou facebook …



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br