Algoritmo PCA

Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #35388
    Fogaça
    Participante

      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!!!

      #35645
      Denny Ceccon
      Moderador

        Olá 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.

        #35646
        Fogaça
        Participante

          Oi 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

          #35647
          Denny Ceccon
          Moderador

            Ah 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.

            #35648
            Fogaça
            Participante

              Maravilha, muito obrigado pela explicação!

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.