Não tenho certeza se classificaria uma transformação de Fourier como uma técnica de redução de dimensionalidade em si , embora você possa usá-la dessa maneira.
f(t)F(ω)tωF(ω) geralmente denota frequência: F (10) indica até que ponto o sinal flutua a 10 ciclos / segundo (ou quaisquer que sejam suas unidades temporais), enquanto F (20) indica até que ponto ele flutua duas vezes mais rápido. A transformação de Fourier "funciona" reconstruindo seu sinal original como uma soma ponderada de sinusóides (você realmente obtém "peso", geralmente chamado de amplitude, e um "deslocamento", normalmente chamado de fase, valores para cada componente de frequência). O artigo da wikipedia é um pouco complexo, mas há vários tutoriais decentes flutuando pela web.
NN/2N/2
Uma representação de Fourier pode ser útil se:
- Seu sinal é periódico e
- Informações úteis são codificadas na periodicidade do sinal.
Por exemplo, suponha que você esteja registrando os sinais vitais de um paciente. O sinal elétrico do eletrocardiograma (ou o som de um estetoscópio) é um sinal de alta dimensão (digamos, mais de 200 amostras / segundo). No entanto, para algumas aplicações, você pode estar mais interessado na frequência cardíaca do sujeito , que provavelmente é o local do pico na FFT e, portanto, representável por um único dígito.
Uma grande limitação da FFT é que ela considera todo o sinal de uma só vez - não pode localizar alterações nele. Por exemplo, suponha que você observe o coeficiente associado a 10 ciclos / segundo. Você obterá valores de amplitude semelhantes se
- Há oscilação de 10 Hz consistente, mas de tamanho moderado, no sinal,
- Essa oscilação é duas vezes maior na primeira metade do sinal, mas totalmente ausente na segunda metade, e
- A oscilação está totalmente ausente no primeiro semestre, mas duas vezes maior que o número 1 no segundo semestre.
- (e assim por diante)
Obviamente, não sei muito sobre o seu negócio, mas imagino que esses possam ser recursos muito relevantes. Outra grande limitação da FFT é que ela opera em uma única escala de tempo. Por exemplo, suponha que um cliente visite religiosamente sua empresa todos os dias: ele tem uma "frequência" de 0,5 visitas / dia (ou um período de 2 dias). Outro cliente também pode vir consistentemente por dois dias seguidos, tirar duas e depois visitar novamente nos próximos dois. Matematicamente, o segundo cliente está "oscilando" duas vezes mais lentamente que o primeiro, mas eu apostaria que esses dois têm a mesma probabilidade de agitar.
Uma abordagem de frequência de tempo ajuda a contornar esses problemas localizando alterações na frequência e no tempo. Uma abordagem simples é a FFT de curto prazo, que divide seu sinal em pequenas janelas e depois calcula a transformação de Fourier de cada janela. Isso pressupõe que o sinal está parado dentro de uma janela, mas muda através deles. A análise da wavelet é uma abordagem mais poderosa (e matematicamente rigorosa). Existem muitos tutoriais da Wavelet por aí - o encantador nome Wavelets for Kids é um bom lugar para começar, mesmo que seja um pouco demais para todas, exceto as crianças reais mais inteligentes. Existem vários pacotes wavelet para R, mas sua sintaxe é bastante direta (consulte a página 3 do pacote waveletdocumentação para um). Você precisa escolher uma wavelet apropriada para a sua aplicação - isso idealmente se parece com a flutuação do interesse no seu sinal, mas uma wavelet da Morlet pode ser um ponto de partida razoável. Como a FFT, a própria transformada wavelet não oferece muita redução de dimensionalidade. Em vez disso, representa o sinal original como uma função de dois parâmetros ("escala", que é análoga à frequência, e "tradução", que é semelhante à posição no tempo). Como os coeficientes da FFT, você pode descartar com segurança coeficientes cuja amplitude é próxima de zero, o que fornece uma redução de dimensionalidade eficaz.
Por fim, quero concluir perguntando se a redução de dimensionalidade é realmente o que você deseja aqui. As técnicas sobre as quais você está perguntando são essencialmente formas de reduzir o tamanho dos dados, preservando-os o mais fielmente possível. No entanto, para obter o melhor desempenho de classificação, geralmente queremos coletar e transformar os dados para tornar os recursos relevantes o mais explícitos possível, enquanto descartamos todo o resto.
Às vezes, a análise de Fourier ou Wavelet é exatamente o que é necessário (por exemplo, transformar um sinal de eletrocardiograma de alta dimensão em um único valor de freqüência cardíaca); outras vezes, você se sairia melhor com abordagens completamente diferentes (médias móveis, derivativos etc.). Recomendamos que você pense bem sobre o seu problema real (e talvez até faça um brainstorm com o pessoal de vendas / retenção de clientes para ver se eles têm alguma intuição) e use essas idéias para gerar recursos, em vez de tentar cegamente várias transformações.