No estoy seguro de que clasifique una transformación de Fourier como una técnica de reducción de dimensionalidad per se , aunque ciertamente puede usarla de esa manera.
Como probablemente sepa, una transformada de Fourier convierte una función de dominio de tiempo en una representación de dominio de frecuencia . En la función original, la generalmente indica el tiempo: por ejemplo, f (1) puede denotar el saldo de la cuenta de alguien el primer día, o el volumen de la primera muestra de la grabación de una canción, mientras que f (2) indica el saldo del día siguiente / valor de muestra). Sin embargo, el argumento enF( t )F( ω )tωF( ω) generalmente denota frecuencia: F (10) indica el grado en que la señal fluctúa a 10 ciclos / segundo (o lo que sean sus unidades temporales), mientras que F (20) indica el grado en que fluctúa el doble de rápido. La transformada de Fourier "funciona" al reconstruir su señal original como una suma ponderada de sinusoides (en realidad se obtiene "peso", generalmente llamado amplitud, y un "cambio", típicamente llamado fase, valores para cada componente de frecuencia). El artículo de Wikipedia es un poco complejo, pero hay un montón de tutoriales decentes flotando en la web.
La transformación de Fourier, por sí sola, no le ofrece ninguna reducción de dimensionalidad. Si su señal es de longitud , obtendrá aproximadamente amplitudes y fases atrás (1), lo que claramente no es un gran ahorro. Sin embargo, para algunas señales, la mayoría de esas amplitudes son cercanas a cero o se sabe a priori que son irrelevantes. Luego, podría arrojar los coeficientes para estas frecuencias, ya que no los necesita para reconstruir la señal, lo que puede generar un ahorro considerable de espacio (nuevamente, dependiendo de la señal). Esto es lo que el libro vinculado describe como "reducción de dimensionalidad".norteN/2N/2
Una representación de Fourier podría ser útil si:
- Su señal es periódica y
- La información útil está codificada en la periodicidad de la señal.
Por ejemplo, suponga que está registrando los signos vitales de un paciente. La señal eléctrica del EKG (o el sonido de un estetoscopio) es una señal de alta dimensión (por ejemplo, más de 200 muestras / segundo). Sin embargo, para algunas aplicaciones, es posible que esté más interesado en la frecuencia cardíaca del sujeto , que probablemente sea la ubicación del pico en la FFT y, por lo tanto, se pueda representar con un solo dígito.
Una limitación importante de la FFT es que considera toda la señal a la vez: no puede localizar cambios en ella. Por ejemplo, suponga que observa el coeficiente asociado con 10 ciclos / segundo. Obtendrá valores de amplitud similares si
- Hay una oscilación constante pero moderada de 10 Hz en la señal,
- Esa oscilación es dos veces mayor en la primera mitad de la señal, pero totalmente ausente en la segunda mitad, y
- La oscilación está totalmente ausente en la primera mitad, pero dos veces más grande que # 1 en la segunda mitad.
- (y así)
Obviamente no sé mucho sobre su negocio, pero me imagino que estas podrían ser características muy relevantes. Otra limitación importante de la FFT es que funciona en una sola escala de tiempo. Por ejemplo, supongamos que un cliente visita religiosamente su negocio cada dos días: tiene una "frecuencia" de 0.5 visitas / día (o un período de 2 días). Otro cliente también puede venir constantemente durante dos días seguidos, quitarse dos y luego volver a visitar durante los próximos dos. Matemáticamente, el segundo cliente está "oscilando" dos veces más lentamente que el primero, pero apuesto a que estos dos son igualmente propensos a abandonar.
Un enfoque de frecuencia de tiempo ayuda a solucionar estos problemas localizando cambios tanto en frecuencia como en tiempo. Un enfoque simple es la FFT a corto plazo, que divide su señal en pequeñas ventanas y luego calcula la transformación de Fourier de cada ventana. Esto supone que la señal es estacionaria dentro de una ventana, pero cambia a través de ellas. El análisis Wavelet es un enfoque más poderoso (y matemáticamente riguroso). Hay muchos tutoriales de Wavelet: el encantador Wavelets for Kids es un buen lugar para comenzar, incluso si es un poco demasiado para todos, excepto para los niños más inteligentes. Hay varios paquetes wavelet para R, pero su sintaxis es bastante sencilla (consulte la página 3 del paquete waveletdocumentación para uno). Debe elegir una wavelet apropiada para su aplicación; esto idealmente se parece a la fluctuación de interés en su señal, pero una wavelet Morlet podría ser un punto de partida razonable. Al igual que la FFT, la transformación wavelet en sí misma no le dará mucha reducción de dimensionalidad. En cambio, representa su señal original en función de dos parámetros ("escala", que es análoga a la frecuencia, y "traducción", que es similar a la posición en el tiempo). Al igual que los coeficientes FFT, puede descartar de manera segura los coeficientes cuya amplitud es cercana a cero, lo que le brinda una reducción efectiva de la dimensionalidad.
Finalmente, quiero concluir preguntándole si la reducción de dimensionalidad es realmente lo que quiere aquí. Las técnicas sobre las que ha estado preguntando son esencialmente formas de reducir el tamaño de los datos mientras se conservan con la mayor fidelidad posible. Sin embargo, para obtener el mejor rendimiento de clasificación, normalmente queremos recopilar y transformar los datos para hacer que las características relevantes sean lo más explícitas posible, mientras descartamos todo lo demás.
A veces, el análisis de Fourier o Wavelet es exactamente lo que se necesita (por ejemplo, convertir una señal EKG de alta dimensión en un solo valor de frecuencia cardíaca); otras veces, estaría mejor con enfoques completamente diferentes (promedios móviles, derivados, etc.). Le animo a que piense bien sobre su problema real (y tal vez incluso haga una lluvia de ideas con personas de ventas / retención de clientes para ver si tienen alguna intuición) y use esas ideas para generar características, en lugar de intentar ciegamente un montón de transformaciones.