Análise dos dados

Este relatório reune algumas informações e manipulação breves referentes ao conteúdo do dataset de avaliações de produtos da Amazon 2023, fornecido por Hou et al. (2024) e aborda uma introdução breve sobre, com caminhos para estudo de aprendizado de máquina e sistemas de recomendação.

Manipulação de Dados

Nesta seção, foi realizado o carregamento e manipulação do conjunto de dados Magazine_subscriptions.csv fornecido por Hou et al. (2024).

1.1. Carregamento dos Dados

Primeiro, é carregado o conjunto de dados usando a função read_csv do pacote readr (parte do tidyverse).

caminho_arquivo <- "magazine_subscriptions.csv"

# Carrega os dados
dados_originais <- read_csv(caminho_arquivo)

# Mostra a estrutura dos dados
glimpse(dados_originais)
## Rows: 71,497
## Columns: 10
## $ rating            <dbl> 5, 4, 5, 5, 1, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1…
## $ title             <chr> "Great pictures and recipes", "great for kids who lo…
## $ text              <chr> "Wonderful recipes in this magazine.", "Great sports…
## $ images            <chr> "[]", "[]", "[]", "[]", "[]", "[]", "[]", "[]", "[]"…
## $ asin              <chr> "B00HLSSQKK", "B002PXW04Y", "B00HCR5090", "B0000ARXX…
## $ parent_asin       <chr> "B00HLSSQKK", "B002PXW04Y", "B00HCR5090", "B0000ARXX…
## $ user_id           <chr> "AE7Y5RLYIKHOZB5NKKOEKYG2SPSQ", "AHORTSSMI6ZZFUFWMPT…
## $ timestamp         <dbl> 1.608046e+12, 1.470973e+12, 1.396827e+12, 1.181880e+…
## $ helpful_vote      <dbl> 0, 1, 4, 4, 13, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 2, 4, …
## $ verified_purchase <lgl> TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TR…

1.2. Manipulação dos Dados

Realiza-se manipulações para limpar e melhorar a visualização das informações do conjunto de dados, o dataset original possui 71497 linhas.

Passos da Manipulação:

  1. Conversão do timestamp: A coluna timestamp está em milissegundos, é convertido para um formato de data (review_date).
  2. Criação de nova variável: É criado uma variável text_length que calcula o número de caracteres na coluna text da avaliação.
  3. Filtragem: Após isso, é filtrado o conjunto de dados para mostrar apenas avaliações que sejam verified_purchase == TRUE e que tenham um rating de 4 ou 5 estrelas.
  4. Ordenação: Em seguida, é ordenado os dados resultantes pela coluna helpful_vote em ordem decrescente, para ver as avaliações mais úteis primeiro.
  5. Seleção: Por fim, é obtido apenas as colunas de interesse para a análise final.
dados_manipulados <- dados_originais %>%
  
  # Converter timestamp para data
  mutate(review_date = as.POSIXct(timestamp / 1000, origin = "1970-01-01")) %>%
  
  # Tamanho do texto da avaliação
  mutate(text_length = nchar(as.character(text))) %>%
  
  # Filtrando por compras verificadas e rating alto
  filter(verified_purchase == TRUE, rating >= 4) %>%
  
  # Ordena pelas avaliações mais úteis
  arrange(desc(helpful_vote)) %>%
  
  # Seleciona as colunas relevantes
  select(
    user_id,
    rating,
    title,
    text,
    text_length,
    review_date,
    helpful_vote
  )

1.3. Resultado da Manipulação

Após a manipulação, o conjunto de dados foi enxugado para 45435 linhas, contendo apenas avaliações positivas e verificadas, ordenadas pela sua utilidade.

Cabeçalho da manipulação realizada:

head(dados_manipulados, 10)
## # A tibble: 10 × 7
##    user_id       rating title text  text_length review_date         helpful_vote
##    <chr>          <dbl> <chr> <chr>       <int> <dttm>                     <dbl>
##  1 AFPY7ERB7DB3…      5 Bewa… I lo…         317 2017-08-07 13:19:45         2005
##  2 AFZOHE4Z4B5J…      5 Inte… My e…        1418 2011-05-08 16:12:07         1421
##  3 AE3MTQULT5KJ…      5 Abso… It's…        2139 2017-11-30 18:54:44          749
##  4 AE3MTQULT5KJ…      5 Grea… I am…        1344 2017-10-18 18:16:49          675
##  5 AGKKR7NHRBD6…      5 I lo… I wa…        1309 2016-10-21 16:51:35          566
##  6 AH7GTWEL2KDH…      4 The … The …         251 2018-05-26 11:07:50          534
##  7 AF7H4JFMZJ6K…      5 My d… I se…         460 2017-05-01 10:07:06          524
##  8 AEAAIMHVYRUT…      5 Don'… In t…         651 2017-03-16 04:24:36          449
##  9 AFSIVZMMUEWX…      5 Phot… We'v…        3408 2017-07-09 17:00:56          401
## 10 AEAAIMHVYRUT…      5 The … Edit…        1311 2016-02-10 18:07:40          324

Tabela Interativa

Abaixo está uma tabela interativa dos dados manipulados anteriormente, é possível usar a caixa de busca, ordenar as colunas clicando nos cabeçalhos e navegar pelas páginas.

datatable(
  dados_manipulados,
  rownames = FALSE,
  filter = 'top',
  options = list(
    pageLength = 10)
)

Figuras

Como parte importante da Ciência de Dados, as informações são a matéria prima para a descoberta de padrões, a construção de modelos preditivos e a tomada de decisões estratégicas. Em seu estado bruto, os dados podem ser desordenados, desestruturados ou aparentemente sem sentido, porém, o verdadeiro valor emerge quando é aplicado métodos estatísticos e algoritmos de aprendizado de máquina para coletá-los, processá-los, limpá-los e analisá-los.

Figura 1: O Processo de Ciência de Dados

A primeira figura ilustra o resultado de um agrupamento de dados, esta é uma técnica clássica de aprendizado de máquina não supervisionado, o que significa que não se precisa de rótulos prévios para que ela funcione. Tal algoritmo realiza a organização dos pontos de dados em grupos, de forma que os itens dentro de um mesmo grupo sejam o mais similares possível entre si, e o mais diferentes possível dos itens em outros grupos.

Na imagem, os clusters são visualmente representados por cores distintas, revelando uma estrutura ou segmentação oculta nos dados (BYJU’S (n.d.)).

Cluster Analysis
Cluster Analysis

Figura 2: Representação do conjunto de informações

A segunda figura representa a estrutura fundamental de um conjunto de dados, o ponto de partida para qualquer análise, a imagem mostra o formato em tabela, que é a maneira mais comum de organizar dados estruturados.

Nesta tabela: - Cada linha representa um registro. - Cada coluna representa uma variável/atributo que descreve aquele registro.

É este formato de dados brutos que alimentamos em algoritmos, como o da Figura 1, após as etapas de limpeza e preparação.

Imagem dataset
Imagem dataset

Conhecendo Equações

Sistemas de Recomendação (SR) são uma das aplicações mais bem difundidas do aprendizado de máquina. Isto se da pela consequência do tamanho enorme de informações espalhadas pela internet e que se tornaram essenciais para filtrar estes grandes volumes de informação em serviços como streaming, e-commerce e redes sociais. Com isto, tais aplicações foram desenvolvidas com o objetivo de prever o interesse ou preferência que um usuário teria por um item sem ter a necessidade de ter um ser humano especialista no tema por perto, ou precisar realizar um estudo profundo de todas as possibilidades de informações disponíveis para que no fim possibilite a escolha que mais encaixe no cenário desejado.

Historicamente, esses sistemas evoluíram de métodos clássicos, como Filtragem Colaborativa e Sistemas Baseados em Conteúdo (Adomavicius and Tuzhilin (2005)), para modelos mais avançados como Fatoração de Matrizes, (Koren, Bell, and Volinsky (2009)) ou até mesmo utilizando técnicas mais abrangentes e recentes como o uso de Deep Learning , tornando-se amplamente utilizadas para capturar interações complexas e não-lineares entre usuários e itens de um determinado sistema (Zhang et al. (2019)).

Abaixo estão algumas equações complexas que representam os fundamentos matemáticos por trás desses sistemas.


1. Similaridade de Cosseno

\[ \text{sim}(u, v) = \frac{\vec{u} \cdot \vec{v}}{\|\vec{u}\| \|\vec{v}\|} = \frac{\sum_{i=1}^{n} u_i v_i}{\sqrt{\sum_{i=1}^{n} u_i^2} \sqrt{\sum_{i=1}^{n} v_i^2}} \] Esta é a fórmula central da Filtragem Colaborativa baseada em vizinhança, eela é usada para medir a similaridade de “gosto” entre dois usuários (\(u\) e \(v\)) ou dois itens e como retorno, o sistema recomenda itens que foram bem avaliados por usuários “vizinhos” a partir da similaridade com o usuário alvo.


2. Previsão por Fatoração de Matrizes

\[ \hat{r}_{ui} = \mu + b_u + b_i + p_u^T q_i \] Esta é a equação de previsão fundamental da Fatoração de Matrizes, usada para estimar a avaliação (\(\hat{r}_{ui}\)) que um usuário \(u\) daria a um item \(i\). A previsão consiste pela: * \(\mu\): Média global de todas as avaliações. * \(b_u\): O viés do usuário \(u\). * \(b_i\): O viés do item \(i\). * \(p_u^T q_i\): A interação entre o vetor de características do usuário (\(p_u\)) e o vetor de características do item (\(q_i\)), modelando como se fosse um “gosto pessoal”.


3. Função de Custo da Fatoração de Matrizes

\[ \min_{p_*, q_*, b_*} \sum_{(u,i) \in \mathcal{K}} (r_{ui} - (\mu + b_u + b_i + p_u^T q_i))^2 + \lambda (\|p_u\|^2 + \|q_i\|^2 + b_u^2 + b_i^2) \] Já esta formula, é a função de custo que um modelo de Fatoração de Matrizes aprende. Para treinar um modelo, o algoritmo tenta encontrar os vetores \(p_u\) e \(q_i\) que minimizam a soma dos erros quadráticos entre a avaliação real (\(r_{ui}\)) e uma avaliação prevista (\(\hat{r}_{ui}\)).


4. Função Sigmóide

\[ \sigma(x) = \frac{1}{1 + e^{-x}} \] Nos sistemas de recomendação modernos, especialmente os baseados em Deep Learning, muitas vezes lidamos com um feedback explícito a partir de elementos interativos diretamente com o usuário, como por exemplo um botão de favorito, com isto, a função Sigmóide é usada na camada final do modelo para “espremer” o score de recomendação \(x\) para um valor entre 0 e 1, que pode ser interpretado como a probabilidade de o usuário interagir com um item.


5. Entropia Cruzada Binária

\[ L = -\frac{1}{N} \sum_{i=1}^{N} [y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)] \] Por fim, esta é a função de custo usada para treinar modelos de feedback implícito, ela mede a “distância” entre a verdade real (\(y_i\), que é 1 se o usuário interagiu ou 0 se não) e a probabilidade prevista pelo modelo (\(\hat{y}_i\), o resultado da função Sigmóide anterior), de forma que minimize perdas e se torne precisa.

Referências

Adomavicius, Gediminas, and Alexander Tuzhilin. 2005. “Toward the Next Generation of Recommender Systems: A Survey of the State-of-the-Art and Possible Extensions.” IEEE Transactions on Knowledge and Data Engineering 17 (6): 734–49.
BYJU’S. n.d. “Cluster Analysis.” https://byjus.com/maths/cluster-analysis/.
Hou, Yupeng, Jiacheng Li, Zhankui He, An Yan, Xiusi Chen, and Julian McAuley. 2024. “Bridging Language and Items for Retrieval and Recommendation.” https://arxiv.org/abs/2403.03952.
Koren, Yehuda, Robert Bell, and Chris Volinsky. 2009. “Matrix Factorization Techniques for Recommender Systems.” Computer 42 (8): 30–37.
Zhang, Shuai, Lina Yao, Aixin Sun, and Yi Tay. 2019. “Deep Learning Based Recommender System: A Survey and New Perspectives.” ACM Computing Surveys (CSUR) 52 (1): 1–38.