Home › Fóruns › Fórum Machine Learning e Data Science com Python de A à Z › Algoritmo PCA
- Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 9 meses, 2 semanas atrás por
Jones Granatyr.
- AutorPosts
- 22 de junho de 2022 às 23:25 #35388
Olá!
Indo além nos meus estudos, percebi que em alguns experimentos, antes do PCA ser calculado é utilizado o cálculo da distância do cosseno, para aí sim atribuir o resultado ao algoritmo PCA.
Exemplo:
x = 1 – cosine_distance(df)
pca = PCA(x, n_components = 2)
Entretanto não consegui encontrar uma explicação clara, no que diz respeito do por que essa técnica é utilizada, em outras palavras do por que a distância do cosseno é calculada antes dos valores serem atribuídos ao algoritmo PCA. Será que vocês poderiam me dar essa luz? Teria a ver com melhorar a correlação entre as variáveis?
Obrigado!!!
24 de junho de 2022 às 12:24 #35645Olá Fogaça,
Esse processamento me parece estranho, pois a distância de cosseno vai resultar em um valor único, ou seja, X terá uma única variável, e o PCA de uma única variável é esta própria variável; você nem consegue fazer um PCA com 2 componentes neste caso.
Se você puder indicar algum exemplo de onde viu isso, eu posso dar uma checada mais aprofundada.
24 de junho de 2022 às 13:44 #35646Oi Denny! Claro, um dos lugares foi neste código do Kaggle, no output 17:
https://www.kaggle.com/code/sabanasimbutt/clustering-visualization-of-clusters-using-pca/notebook
24 de junho de 2022 às 14:29 #35647Ah sim, neste caso ele está calculado a distância de cosseno entre dois registros, transformando os dados originais nas distâncias entre eles. Isto significa transformar uma tabela onde cada registro x1, x2, … xn, representado por var_1, var_2, …, var_n, em uma matriz quadrada de tamanho xn x xn com a distância de cosseno entre cada registro. O mesmo poderia ser feito para distância euclidiana ou qualquer outra medida de distância, seguida de PCA.
A distância de cosseno geralmente é utilizada em alguns contextos específicos, principalmente para representar similaridade entre embeddings, ou seja, dados codificados produzidos por uma rede neural. Com dados brutos, como é o caso deste exemplo, é muito raro utilizar porque a distância de cosseno não costuma significar alguma coisa de valor prático, mas neste caso, pela conclusão do autor, parece que ela foi útil na clusterização.
Em machine learning, muitas transformações dos dados não são muito intuitivas, e a gente acaba descobrindo seu valor testando e vendo se os resultados fazem algum sentido. Este parece ser o caso.
24 de junho de 2022 às 15:10 #35648Maravilha, muito obrigado pela explicação!
9 de maio de 2024 às 09:47 #44746Qualquer outra dúvida é só avisar!
- AutorPosts
- Você deve fazer login para responder a este tópico.