Escolar Documentos
Profissional Documentos
Cultura Documentos
Relatório 2 - Biochaves
Luiz Miranda Cavalcante Neto
Como já foi dito, dois dos três passos para o sucesso foram dados no decorrer deste
trabalho. Foram eles:
1 - Extrair os acordes de muitos artistas presentes no cifraclub;
2 - Modelar cada artista com uma cadeia de Markov (o porquê disso foi descrito no
relatório anterior, mas tenho minhas dúvidas que esse caminho seja o ideal);
O terceiro passo, descrito como: “Com o modelo de cada artista, vou analisar
seus parâmetros de modo a conseguir agrupar os músicos em grupos (clusterizar)”
tem um problema inerente a como o modelo de cada artista foi gerado.
Veja só, cada artista é representado como uma tabela de transição entre uma
sequência de N acordes e o acorde que vem após essa sequência. Esse N é dado pela
ordem da cadeia de Markov. O tipo de representação pode ser visto na literatura como
“N-gram representation” (ver [1] e [2]).
A pergunta é: Como raios eu vou clusterizar matrizes enormes?
A resposta é: Reduzindo as dimensões delas. Mas como?
Reduzindo dimensões
O ser humano tem uma limitação enorme: ser apenas tridimensional. Uma imagem
digital, no entanto, tem centenas de dimensões. Eita! Como assim centenas de
dimensões? Uma imagem não tem apenas altura e largura? É até menos do que
nosso mundo 3D! ( Isso em negrito, é você, leitor, querendo me bater já. Calma que eu
explico). É isso mesmo, você não está errado. Maaaaas…. Ao olhar para uma imagem
digital como uma matriz de pixels (que é o que ela realmente é) percebemos que se
quisermos agrupar várias imagens parecidas e representar cada uma delas em um gráfico,
não conseguimos fazer isso diretamente, temos que encontrar uma forma de reduzir suas
dimensões.
Como fazer isso? De várias formas. Um exemplo para imagens é extrair certas
características dessa imagem (como: cor média, brilho e formas geométricas) e usar essas
características como novas dimensões que irão representar essas imagens. Na verdade,
extrair características que podem representar um sinal multidimensional é a essência das
técnicas de redução de dimensão. Considere uma rede neural treinada para dizer se em
uma imagem há uma pessoa ou um cachorro. Para fazer isso, a rede converte uma imagem
de algumas centenas de pixels (multidimensional) em apenas duas possíveis posições:
cachorro ou pessoa. Esse valor final pode ser representado com uma simples dimensão.
Vamos ver agora outras formas de reduzir dimensões, essas mais formais e
matemáticas.
Considere que temos uma matriz de dados em que cada linha representa uma
amostra e cada coluna representa uma característica dessa amostra. Uma matriz exemplo
pode ser vista na Figura 1.
Figura 1. Meu gatinho Romeo. Cada linha da imagem representa uma amostra dela e cada coluna
representa a escala de cinza na característica da imagem.
A teoria do SVD1 ([3] é só uma porta de entrada para o assunto) diz que toda2 matriz
pode ser decomposta em três outras matrizes U, S e VT da seguinte forma:
A = U *S*VT
sendo:
A , uma matriz MxN que será decomposta;
U , uma matriz MxM sendo que cada coluna dela corresponde a um vetor
característico de A ;
1
Não entrarei em detalhes quanto a implementação deste método pois, da mesma forma que os
eigenvalues e eigenvectors, todo software de matemática computacional tem uma função que faz
isso melhor do que eu faria.
2
Não é toda matriz, mas quase todas. Mais informações no artigo da wikipédia e referências lá
citadas.
S , uma matriz “diagonal” MxN com os pesos de cada vetor característico na ordem
decrescente;
V T , uma matriz NxN sendo cada linha um vetor característico de A
Mas como esse teorema vai reduzir as dimensões de Romeo? Como foi dito, a
matriz S representa a “força” de cada vetor característico. Se tentarmos representar Romeo
apenas com os vetores com maior força talvez possamos ainda ver o gatinho. Vamos testar,
as Figuras 2a, 2b, 2c e 2d ilustram o teste realizado. Primeiro tentamos representar o gato
apenas com o vetor mais forte, não ficou tão bom. Depois, com os 5 mais fortes, já da para
ver os contornos da imagem original. Com os 15 mais fortes já é possível ver um gato. E por
último, com os 25 vetores mais fortes vemos o gatinho bonitinho.
Figura 2. Reconstrução da imagem do gato usando: a) apenas o vetor mais forte; b) os 5 vetores
mais fortes; c) os 15 vetores mais fortes; d) os 25 vetores mais fortes
O que quero dizer com os vetores mais fortes? U e V estão ordenados da mesma
forma que S. Então se quisermos usar apenas o vetor mais forte, iremos reconstruir o gato
usando U*S*VT só que usando apenas a primeira coluna de U, o primeiro elemento de S e a
primeira linha de V. Já se quisessemos os 5 mais fortes usariamos as 5 primeiras colunas
de U, os 5 primeiros elementos de S e as 5 primeiras linhas de V, e por aí vai.
[1] https://en.wikipedia.org/wiki/N-gram ;
[2] Cavnar, William B., and John M. Trenkle. "N-gram-based text categorization." Ann arbor
mi 48113.2 (1994): 161-175. (disponível aqui: https://goo.gl/9BRKP4 );
[3] https://en.wikipedia.org/wiki/Singular-value_decomposition