Em muitos casos, algoritmos de aprendizado de máquina precisam lidar com dados no formato de vetores numéricos. Considere a classificação de produtos em um site de compras. Poderíamos utilizar o algoritmo K-Means para agrupar itens similares com base em suas características, facilitando a experiência do usuário ao buscar produtos relacionados.
A busca pela semelhança entre dados pode ser equiparada a uma jornada de descoberta. Imagine um sistema de recomendação em um serviço de streaming, onde o algoritmo busca filmes similares com base no gosto do usuário, criando clusters de preferências. Isso é essencial para oferecer sugestões precisas e personalizadas aos usuários, melhorando sua experiência.
Esse processo de descoberta de itens semelhantes pode ser equiparado a uma tarefa de busca. Por exemplo, podemos procurar itens de dados que compartilhem uma característica específica. Além disso, ao lidar com vetores numéricos, podemos visualizá-los em um espaço euclidiano, onde algoritmos como o K-Means podem traçar caminhos para identificar os pontos mais próximos uns dos outros.
Neste texto, vamos explorar mais a fundo como os algoritmos de aprendizado de máquina realizam essa busca por itens de dados potencialmente semelhantes.
📚 Você é dev e quer aprender um pouco mais sobre a criação de aplicações baseadas em LLM?
Eu criei um curso que aborda aspectos teóricos e práticos do desenvolvimento de aplicações baseadas em LLMs. Alguns dos tópicos cobertos:
🟠 O que são e como criar embeddings
🟡 Como selecionar partes relevantes nos seus documentos
🔵 Como integrar essas partes documentos com uma LLM
O que é um vetor?
Um vetor é uma entidade matemática que possui magnitude e direção:
A magnitude de um vetor é o seu comprimento (ou tamanho).
A direção de um vetor indica para onde ele está apontando no espaço. Dois vetores são considerados iguais se têm a mesma direção, mesmo que tenham magnitudes diferentes.
Por exemplo, em um espaço bidimensional (2D), um vetor pode ser representado como ⟨x,y⟩, onde x representa a componente na direção do eixo x e y representa a componente na direção do eixo y.
Em um espaço tridimensional, além das direções x e y, há também a direção z que é perpendicular ao plano xy. No entanto, vetores podem ter n-dimensões; nesse caso, as direções são estendidas para n coordenadas.
Dados em vetores
Em aprendizado de máquina, é comum representar dados como vetores numéricos para que os algoritmos possam processá-los de maneira eficaz. Por exemplo, para classificar os emails usando rótulos de spam e não spam, precisamos transformar o conteúdo dos emails em representações vetoriais numéricas para que sejam fornecidos para um algoritmo de classificação, como o SVM.
Alguns dos motivos para transformar dados em formatos vetoriais incluem:
Uniformidade de formato: Representar dados como vetores cria um formato uniforme, independentemente do tipo original dos dados. Seja um texto, imagem, som ou qualquer outro tipo de dados, todos podem ser convertidos em vetores de números.
Facilidade de cálculos: Vetores podem ser facilmente manipulados em cálculos matemáticos. Operações como adição, multiplicação escalar, produto escalar e outras operações vetoriais são essenciais em muitos algoritmos de aprendizado de máquina.
Espaços de n-dimensões: Em problemas complexos, os dados muitas vezes têm várias dimensões (características). Representar essas dimensões como componentes de vetores ajuda a visualizar e entender as relações entre diferentes características.
Transformando dados em vetores
Há diversas formas de transformar dados em vetores, desde implementações mais simples como o bag of words (BoW), que conta a frequência de palavras em um documento, ignorando a estrutura gramatical e a ordem das palavras, mais clássicas como o TF-IDF, que embora similar a BoW, leva em consideração a importância relativa de uma palavra em relação a um conjunto de documentos (palavras raras em todo o corpus de documentos tendem a ter maior peso), ou mais sofisticadas, como o uso de RNNs, que ajuda a processar sequências de dados em contextos onde a estrutura temporal ou a ordem dos dados são importantes.
Transformar dados brutos em vetores numéricos é uma etapa fundamental em uma variedade de algoritmos de aprendizado de máquina, independentemente da técnica aplicada. Por exemplo, a necessidade de comparar vetores surge porque muitos algoritmos de aprendizado de máquina dependem de medidas de similaridade ou distância entre os dados para realizar tarefas como classificação, clusterização e detecção de padrões.
Portanto, a representação dos dados como vetores numéricos não apenas facilita a manipulação, mas também possibilita a comparação entre os dados, levando a resultados precisos e significativos.
Comparando vetores
Comparar vetores é parte fundamental de várias aplicações que fazem uso de algoritmos de aprendizado de máquina.
Considere por exemplo uma plataforma de compras online. Podemos representar usuários e produtos são como vetores, com históricos de compra e detalhes dos produtos. Dessa forma, podemos comparar os vetores das compras recentes dos usuários com os vetores dos novos produtos disponíveis. Logo, novos produtos com vetores numericamente semelhantes aos históricos de compra dos usuários poderiam ser recomendados para esses usuários.
Essa comparação ajuda a identificar padrões, aprimorando a experiência do usuário, sendo essencial para sistemas de recomendação em e-commerce, streaming e redes sociais, personalizando recomendações de maneira eficaz e intuitiva.
Há duas formas básicas para comparar vetores numéricos: distância e similaridade.
Distância
O cálculo de distância em análise de dados é uma técnica crucial para medir a disparidade numérica entre dois pontos em um espaço multidimensional. A distância Euclidiana, por exemplo, calcula o comprimento direto entre esses pontos; é como se pegássemos uma régua para medir a distância entre dois pontos. Quanto menor a distância, maior a similaridade entre os pontos.
Similaridade
Por outro lado, o cálculo de similaridade visa avaliar a proximidade conceitual entre dados, ignorando sua distância absoluta. O cálculo de similaridade de cosseno, por exemplo, compara a orientação dos vetores, indicando o quão paralelos eles estão. Quanto mais próximo o resultado estiver de 1, mais semelhantes são os vetores, independentemente de sua magnitude.
Distância vs Similaridade
A figura abaixo ilustra como as duas medidas se comparam. Enquanto que a distância Euclidiana (d) mede a distância de dois pontos usando uma reta (como se usássemos uma fita métrica), o cálculo de similaridade de cossenos (θ) avalia o ângulo entre os vetores, logo não leva em consideração a magnitude ou a direção do vetor.
Conclusão
Algoritmos de aprendizado de máquina enfrentam o desafio de transformar dados complexos em representações numéricas para realizar tarefas como classificação, clusterização e recomendação.
Vetores numéricos são essenciais nesse processo, proporcionando uniformidade de formato, facilitando cálculos matemáticos e permitindo a visualização em espaços de várias dimensões. A comparação de vetores, seja por meio da distância Euclidiana para medir disparidade numérica ou da similaridade de cosseno para avaliar proximidade conceitual, é fundamental para identificar padrões e criar sistemas de recomendação personalizados.
Nesse texto, apresentamos um breve relato sobre essas duas técnicas. Em um próximo texto, vamos aprofundar em detalhes de implementação e uso.