Saya tidak yakin bahwa saya akan mengklasifikasikan transformasi Fourier sebagai teknik reduksi dimensionalitas per se , meskipun Anda tentu bisa menggunakannya dengan cara itu.
Seperti yang mungkin Anda ketahui, transformasi Fourier mengubah fungsi domain waktu menjadi representasi domain frekuensi . Dalam fungsi aslinya, biasanya menunjukkan waktu: misalnya, f (1) mungkin menunjukkan saldo akun seseorang pada hari pertama, atau volume sampel pertama rekaman lagu, sementara f (2) menunjukkan saldo hari berikutnya / nilai sampel). Namun, argumen dalamf(t)F(ω)tωF(ω) biasanya menunjukkan frekuensi: F (10) menunjukkan sejauh mana sinyal berfluktuasi pada 10 siklus / detik (atau apa pun unit temporal Anda), sementara F (20) menunjukkan sejauh mana ia berfluktuasi dua kali lebih cepat. Transformasi Fourier "berfungsi" dengan merekonstruksi sinyal asli Anda sebagai jumlah sinusoid tertimbang (Anda benar-benar mendapatkan "bobot", biasanya disebut amplitudo, dan "shift", biasanya disebut fase, nilai untuk setiap komponen frekuensi). Artikel wikipedia agak rumit, tetapi ada banyak tutorial yang layak beredar di web.
Transformasi Fourier, dengan sendirinya, tidak membuat Anda mengurangi dimensi. Jika sinyal Anda panjang , Anda akan mendapatkan sekitar amplitudo dan fase kembali (1), yang jelas bukan penghematan besar. Namun, untuk beberapa sinyal, sebagian besar amplitudo mendekati nol atau apriori diketahui tidak relevan. Anda kemudian dapat membuang koefisien untuk frekuensi ini, karena Anda tidak perlu mereka untuk merekonstruksi sinyal, yang dapat menyebabkan penghematan ruang yang cukup besar (sekali lagi, tergantung pada sinyal). Inilah yang digambarkan oleh buku terkait sebagai "pengurangan dimensi."NN/2N/2
Representasi Fourier dapat bermanfaat jika:
- Sinyal Anda periodik, dan
- Informasi yang berguna dikodekan dalam periodisitas sinyal.
Misalnya, Anda merekam tanda vital pasien. Sinyal listrik dari EKG (atau suara dari stetoskop) adalah sinyal dimensi tinggi (katakanlah, 200+ sampel / detik). Namun, untuk beberapa aplikasi, Anda mungkin akan lebih tertarik pada hati subjek tingkat , yang kemungkinan akan menjadi lokasi puncak di FFT, dan dengan demikian representable oleh satu digit.
Keterbatasan utama FFT adalah ia menganggap seluruh sinyal sekaligus - ia tidak dapat melokalisasi perubahan di dalamnya. Misalnya, Anda melihat koefisien yang terkait dengan 10 siklus / detik. Anda akan mendapatkan nilai amplitudo yang serupa jika
- Ada yang konsisten, tetapi osilasi 10 Hz berukuran sedang dalam sinyal,
- Osilasi itu dua kali lebih besar di paruh pertama sinyal, tetapi sama sekali tidak ada di babak 2, dan
- Osilasi sama sekali tidak ada di babak pertama, tetapi dua kali lebih besar dari # 1 di babak kedua.
- (dan seterusnya)
Saya jelas tidak tahu banyak tentang bisnis Anda, tetapi saya membayangkan ini bisa menjadi fitur yang sangat relevan. Keterbatasan utama lainnya dari FFT adalah beroperasi pada skala waktu tunggal. Misalnya, misalkan satu pelanggan dengan religius mengunjungi bisnis Anda setiap hari: ia memiliki "frekuensi" 0,5 kunjungan / hari (atau periode 2 hari). Pelanggan lain mungkin juga secara konsisten datang selama dua hari berturut-turut, libur dua kali, dan kemudian berkunjung lagi untuk dua hari berikutnya. Secara matematis, pelanggan kedua "terombang-ambing" dua kali lebih lambat dari yang pertama, tetapi saya berani bertaruh bahwa keduanya sama-sama cenderung mengocok.
Pendekatan frekuensi waktu membantu mengatasi masalah ini dengan melokalisasi perubahan dalam frekuensi dan waktu. Salah satu pendekatan sederhana adalah FFT jangka pendek, yang membagi sinyal Anda menjadi jendela kecil, dan kemudian menghitung transformasi Fourier dari setiap jendela. Ini mengasumsikan bahwa sinyal itu diam di dalam jendela, tetapi perubahan di mereka. Analisis wavelet lebih kuat (dan pendekatan matematis yang ketat). Ada banyak tutorial Wavelet di sekitar - Wavelets for Kids yang dinamai apik adalah tempat yang baik untuk memulai, meskipun itu sedikit banyak untuk semua kecuali anak-anak aktual yang paling cerdas. Ada beberapa paket wavelet untuk R, tetapi sintaksnya cukup mudah (lihat halaman 3 dari paket waveletdokumentasi untuk satu). Anda harus memilih wavelet yang sesuai untuk aplikasi Anda - ini idealnya terlihat seperti fluktuasi minat pada sinyal Anda, tetapi wavelet Morlet mungkin merupakan titik awal yang masuk akal. Seperti FFT, transformasi wavelet itu sendiri tidak akan memberi Anda banyak pengurangan dimensi. Alih-alih, ini mewakili sinyal asli Anda sebagai fungsi dari dua parameter ("skala", yang analog dengan frekuensi, dan "terjemahan", yang mirip dengan posisi dalam waktu). Seperti koefisien FFT, Anda dapat dengan aman membuang koefisien yang amplitudo mendekati nol, yang memberi Anda beberapa pengurangan dimensi efektif.
Akhirnya, saya ingin menyimpulkan dengan bertanya apakah pengurangan dimensi benar-benar yang Anda inginkan di sini. Teknik-teknik yang telah Anda tanyakan tentang semua pada dasarnya cara untuk mengurangi ukuran data sambil mempertahankannya seiman mungkin. Namun, untuk mendapatkan kinerja klasifikasi terbaik, kami biasanya ingin mengumpulkan dan mengubah data untuk membuat fitur yang relevan sejelas mungkin, sambil membuang yang lainnya.
Kadang-kadang, analisis Fourier atau Wavelet adalah persis apa yang diperlukan (misalnya, mengubah sinyal EKG dimensi tinggi menjadi nilai detak jantung tunggal); di lain waktu, Anda akan lebih baik dengan pendekatan yang sama sekali berbeda (rata-rata bergerak, derivatif, dll). Saya mendorong Anda untuk memiliki pemikiran yang baik tentang masalah Anda yang sebenarnya (dan mungkin bahkan bertukar pikiran dengan staf retensi penjualan / pelanggan untuk melihat apakah mereka memiliki intuisi) dan menggunakan ide-ide itu untuk menghasilkan fitur, alih-alih secara membabi buta mencoba banyak transformasi.