Reducción de dimensionalidad en serie para clasificación Entrada

8

Estoy buscando construir un modelo predictivo donde la variable de resultado sea binaria y la entrada sea una serie de tiempo. Para hacerlo más concreto, el modelo predecirá si un cliente abandona (dejó la empresa; codificado como 1 o 0) en función de la cantidad que gastó con la empresa en los últimos 60 días. Por lo tanto, los datos son un cliente por fila y las columnas son un factor de resultado (1 o 0) y 60 columnas adicionales para la cantidad gastada en el tiempo t-1, t-2 ... t-60.

Aquí hay algunos datos de ejemplo:

#create the data a series of length 60 and a class ID
sc <- read.table("http://kdd.ics.uci.edu/databases/synthetic_control/synthetic_control.data", header=F, sep="")

#binary class lable
classId <- as.factor(c(rep(0,300), rep(1,300)))
newSc <- data.frame(cbind(classId, sc))
newSc$ID<-seq(1,600,1)

El modelo real puede tener muchas de estas series para cada cliente, por lo que necesito reducir la dimensionalidad de los datos para la serie, por ejemplo, en lugar de usar 60 valores, necesito reducir esto a un puñado. Por supuesto, puedo usar la media, min, max, etc. de la serie, pero he estado leyendo sobre el uso de la Transformada discreta de Fourier.

Preguntas:

  1. ¿Es el DFFT en R un método apropiado para usar para mi propósito? Cualquier información sobre cómo funciona sería apreciada.

  2. Suponiendo que esta función R es correcta, ¿cómo extrae solo los coeficientes más significativos para lograr la reducción de la dimensionalidad?

AGREGAR: Parece haber un consenso de que usar DFFT para la reducción de dimensiones no es una elección acertada, pero parece que en la minería de datos, esta función, DWT y SVD se usan comúnmente: Minería de series temporales que comienza en la página 20.

B_Miner
fuente
Un comentario rápido que tendría es que podría considerar la FFT como otro medio para obtener funciones para cada cliente. Suponiendo que tiene un vector de características que contiene estadísticas resumidas basadas en las series de tiempo de cada cliente y otros datos, puede complementar su vector de características agregando características derivadas de una FFT. Tenga en cuenta que solo es apropiado si la ventana sobre la que está hablando el FFT es estacionaria. De lo contrario, las características de tiempo como las derivadas primera y segunda pueden ser más apropiadas.
BGreene

Respuestas:

12

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".NN/2N/2

Una representación de Fourier podría ser útil si:

  1. Su señal es periódica y
  2. 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

  1. Hay una oscilación constante pero moderada de 10 Hz en la señal,
  2. Esa oscilación es dos veces mayor en la primera mitad de la señal, pero totalmente ausente en la segunda mitad, y
  3. La oscilación está totalmente ausente en la primera mitad, pero dos veces más grande que # 1 en la segunda mitad.
  4. (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.

Matt Krause
fuente
Hola Matt. Publiqué una adición con un enlace. Parece que estas técnicas se utilizan para la reducción de dimensiones. ¿Sabes cómo usar la transformada wavelet discreta en R para hacer la reducción de dimensión?
B_Miner
Hice algunas ediciones masivas; ¡Sin embargo, sugiero leer el último fragmento!
Matt Krause
Esto es genial Matt gracias! No he tenido la oportunidad de leer completamente su respuesta, pero lo haré en breve.
B_Miner
@MattKrause, parece que tienes una muy buena comprensión de la transformación de Fourier. Tengo un problema similar, donde yo (según su publicación aquí) creo que tiene sentido hacer la transformación de Fourier como una técnica de reducción de dimensionalidad. Sin embargo, no puedo descubrir cómo hacerlo en la práctica. ¿Podrías echar un vistazo a stats.stackexchange.com/questions/176283/… ?
pir
Gracias @felbo! Me siento halagado, pero no estoy seguro de tener mucho que agregar.
Matt Krause el
2

Como dijo Matt, no estoy seguro de que el DFT produzca características relevantes para su aplicación. Pero como hace esta pregunta , aquí hay un código R para construir características para los cuantiles del DFT de una señal 1D x, utilizando la función detrend(por ejemplo, con el paquete pracma ).

l <- length(x)
detrended <- detrend(x)
dft <- fft(detrended)/l
amplitude <- 2*abs(dft[1:l/2])
plot(amplitude, type='l')
quantiles <- quantile(amplitude)
Emile
fuente
1

No usaría la FFT aquí a menos que tenga algún modelo que sugiera que es lo correcto y, a partir de la información que ha brindado, no veo ninguna razón para creer simplemente mirando la FFT de sus datos son apropiados Sugiero que en lugar de mirar el FFT, que probablemente sea un callejón sin salida, considere otros enfoques.

Los métodos más apropiados pueden ser un filtro de promedio móvil (p. Ej., El promedio de ventas en los últimos N días) o un filtro de promedio móvil ponderado (lo mismo, excepto que se da más peso a los valores que se consideran más significativos, ya sea porque tiene un modelo / hipótesis que respalda esto, o datos reales que indican que así ha sido en el pasado. Por ejemplo, puede ponderar las cifras más recientes o los datos de los lunes porque tiene datos que sugieren que las ventas del lunes son predictivas para alguna razón).

Otro enfoque podría ser simplemente usar la regresión (especialmente la regresión logística). Esto puede parecer tradicional y aburrido, pero funciona.

Bjorn Roche
fuente