Discussão do artigo "Teoria das Categorias em MQL5 (Parte 21): Transformações naturais com LDA"

 

Novo artigo Teoria das Categorias em MQL5 (Parte 21): Transformações naturais com LDA foi publicado:

Este artigo, o 21º de nossa série, continua nossa análise das transformações naturais e de como elas podem ser implementadas usando a análise discriminante linear. Assim como no artigo anterior, a implementação é apresentada no formato de uma classe de sinal.

Continuando a explorar as transformações naturais, examinaremos outras possíveis aplicações na previsão de séries temporais. As transformações naturais frequentemente podem ser encontradas em conjuntos de dados mapeados, e é exatamente por aí que quero começar o artigo.

Então, vejamos o desafio. Uma startup cria um banco de dados para seus clientes para acompanhar suas compras ao longo do tempo, e inicialmente ele consiste em, digamos, três colunas: chave primária, nome do produto e valor pago. Com o tempo, a empresa nota repetições frequentes na coluna do produto, o que significa que um produto específico é comprado com frequência. Decide-se começar a registrar mais informações relacionadas aos produtos, para distinguir melhor as preferências dos clientes e, possivelmente, explorar a possibilidade de desenvolver novos produtos. Para isso, a coluna do produto é dividida em 3 colunas, isto é: versão, modo de assinatura e nome do build. Ou a empresa pode precisar de mais detalhes nas informações de pagamento e decidir dividir a coluna de pagamento em três partes, por exemplo, para modo de pagamento, moeda (ou padrão linguístico) e valor do pagamento. Novamente, tal divisão não será exaustiva, pois em uma fase futura podem ser necessários mais dados, dependendo das compras dos clientes e de suas preferências.

Cada uma dessas novas colunas criadas será mapeada para a coluna anterior do produto. E se, por exemplo, estabelecêssemos algumas correlações chave entre a coluna anterior de um produto e, digamos, a coluna do valor pago ou qualquer outra coluna na tabela no banco de dados, então a recuperação dessas correlações na nova estrutura da tabela seria um processo tedioso. Claro, a empresa tem muitas maneiras de resolver esse problema, mas as transformações naturais oferecem uma boa solução.

Primeiro, vamos tentar enquadrar o problema em termos de duas categorias. Na categoria do domínio, teremos uma lista de tabelas da empresa em seu banco de dados, e na categoria do codomínio, teremos duas versões das tabelas com informações sobre os clientes. Para simplificar, se tomarmos a lista como um único objeto no domínio e cada uma de nossas tabelas como objetos separados no codomínio, então dois funtores da lista, um para cada tabela, de fato implicam uma transformação natural entre as duas tabelas. Assim, um funtor será mapeado para as tabelas antigas, que em nosso caso representam uma tabela simples com três colunas, enquanto o segundo funtor será mapeado para as mudanças na estrutura da tabela. Se essa é a versão 1, então o segundo funtor é mapeado para uma tabela de 5 colunas.

O uso de transformações naturais não significa apenas que podemos quantificar as diferenças entre essas duas tabelas usando uma função algorítmica de mapeamento, como: uma equação linear, uma equação quadrática, um perceptron multicamadas, uma floresta de distribuição aleatória ou análise discriminante linear. Isso significa que podemos usar esses pesos para restaurar as correlações anteriores com a tabela antiga e desenvolver novas para as colunas criadas.


Autor: Stephen Njuki