Mendukung regresi vektor pada data miring / kurtosis tinggi

8

Saya menggunakan dukungan vektor regresi untuk memodelkan beberapa data yang cukup miring (dengan kurtosis tinggi). Saya sudah mencoba memodelkan data secara langsung tetapi saya mendapatkan prediksi yang salah, saya pikir terutama karena distribusi data, yang condong ke kanan dengan ekor yang sangat gemuk. Saya cukup yakin beberapa outlier (yang merupakan titik data yang sah) mempengaruhi pelatihan SVR, dan mungkin juga dalam validasi silang, di mana saat ini saya mengoptimalkan hyperparameters dengan meminimalkan kesalahan mean-squared.

Saya telah mencoba untuk mengukur data saya sebelum menerapkan SVR (misalnya menggunakan fungsi sqrt untuk mengurangi outlier) serta menggunakan fungsi minimisasi hyperparameter yang berbeda (misalnya kesalahan absolut), yang tampaknya memberikan hasil yang lebih baik, tetapi masih belum terlalu baik. Saya ingin tahu apakah ada yang mengalami masalah yang sama dan bagaimana mereka mendekatinya? Ada saran dan / atau metode alternatif yang paling disukai.

tomas
sumber
jika variabel positif daripada menerapkan log (kasus khusus transformasi Box-Cox) dapat membantu
Yevgeny
Terima kasih Yevgeny. Sayangnya variabel-variabelnya positif dan negatif. Apakah masih ada cara untuk menerapkan transformasi daya atau transformasi Box-Cox?
tomas

Jawaban:

9

Anda dapat menggunakan distribusi Lambert W miring atau berat untuk mengubah data Anda menjadi sesuatu yang lebih baik (disclaimer: Saya penulis kedua makalah dan paket LambertW R). Keuntungan daripada transformasi Box-Cox adalah bahwa mereka tidak memiliki batasan positif, parameter optimal transformasi dapat diperkirakan (MLE) dari data, dan Anda juga dapat melupakan transformasi dan memodelkan data Anda sebagai Lambert W x Distribusi F secara langsung.

Paket LambertW R menyediakan beberapa penduga, transformasi, metode, dll. Saya terutama merekomendasikan untuk melihatnya

   Gaussianize()
   IGMM()
   MLE_LambertW()

Distribusi Lambert W x F yang miring adalah kerangka kerja umum untuk membuat versi miring dari distribusi apa pun F. Sebaliknya, Anda kemudian dapat membuat data miring Anda lagi simetris; distribusi data yang simetris ini pada dasarnya menentukan jenis Lambert W x F yang Anda miliki; jika datanya hanya sedikit asimetris, maka Anda mungkin memiliki Lambert W x Gaussian yang miring; jika data Anda juga berekor berat mungkin Anda dapat mencoba Lambert W x t yang miring.

Lambert Wx F berekor berat adalah generalisasi dari distribusi h Tukey, dan mereka menyediakan transformasi terbalik untuk membuat data Gaussian (juga dari asimetris). Dalam makalah ini saya menunjukkan bahwa bahkan Cauchy dapat di-Gaussianized ke tingkat yang Anda - dan juga beberapa tes Normalitas - tidak dapat membedakannya dari sampel Normal.

Georg M. Goerg
sumber
Selamat datang di situs kami, Georg!
whuber
1

Salah satu cara untuk menangani nilai-nilai negatif adalah dengan menggeser variabel ke kisaran positif (katakan menjadi lebih besar atau sama dengan 0,1), menerapkan transformasi Box-Cox (atau hanya log () untuk tes cepat), dan kemudian distandarisasi. Standarisasi dapat menjadi penting untuk SVR karena SVR bergantung pada hukuman kuadratik yang diterapkan untuk semua koefisien secara seragam (sehingga SVR tidak berskala invarian dan dapat mengambil manfaat dari standardisasi variabel). Pastikan untuk memeriksa distribusi variabel yang dihasilkan - mereka tidak boleh miring banyak (idealnya mereka harus terlihat Gaussian)

Teknik lain yang bisa dicoba adalah menerapkan transformasi "tanda spasial" ke vektor input x <- x / norm(x)sesuai "preprocessing tanda spasial: cara sederhana untuk memberikan ketahanan moderat untuk penduga multivariat". J. Chem. Inf. Model (2006) vol. 46 (3) hlm. 1402–1409 Saya tidak terlalu beruntung dengan teknik ini, tetapi jarak tempuh mungkin berbeda.

Yevgeny
sumber
1
Terima kasih Yevgeny. Saya akan memeriksanya. Saya sedang berpikir tentang menggunakan transformasi sinus hiperbolik terbalik karena itu adalah teknik yang tampaknya bekerja untuk nilai positif dan negatif. Sayangnya saya tidak yakin bagaimana cara memperkirakan parameter theta. Apakah Anda akrab dengan ini? Terima kasih.
tomas
Saya telah melihat rumus ini (bebas parameter): x <- log (x + sqrt (x ^ 2 + 1))
Yevgeny
0

Salah satu cara untuk mendekati solusi adalah membangun dua model: satu untuk nilai-nilai yang sejalan dengan distribusi dan lainnya untuk outlier. Saran saya dalam hal ini adalah membuat variabel respons biner (0,1) dengan 0 sebagai nilai jika datapoint berada dalam batas distribusi Anda dan 1 jika terletak di luar. Jadi untuk kasus-kasus outlier yang ingin Anda simpan dalam data Anda, Anda akan memiliki 1 dalam variabel target Anda dan sisanya sebagai 0. Sekarang jalankan regresi logistik untuk memprediksi probabilitas outlier dan Anda dapat melipatgandakan nilai rata-rata untuk kelompok pencilan dengan probabilitas individu untuk mendapatkan prediksi. Untuk sisa data, Anda dapat menjalankan SVM untuk memprediksi nilai.

Karena nilai outlier, mereka akan memiliki probabilitas rendah yang terkait dengannya dan bahkan jika Anda mengambil mean outlier yang akan condong, nilai yang diharapkan dari outlier akan ditarik ke bawah oleh probabilitas rendah yang melekat dan di sana dengan membuatnya menjadi lebih prediksi yang masuk akal.

Telah bertemu dengan skenario yang sama saat memprediksi jumlah klaim untuk penyedia layanan Asuransi. Saya telah menggunakan teknik yang disebutkan di atas untuk meningkatkan kinerja model saya secara drastis.

Cara lain dapat mengambil transformasi log dari variabel target Anda yang mungkin jika Anda hanya memiliki nilai positif dalam variabel target Anda. Tetapi pastikan jika Anda mengambil transformasi log dari variabel target Anda, sambil memprediksi variabel Anda perlu memasukkan komponen kesalahan juga.

Begitu, log(Y)=a+BX+ϵ adalah persamaan model Anda untuk misalnya

kemudian, Y=exp(a+BX+ϵ)

Anda dapat melihat tautan berikut untuk transformasi log: http://www.vims.edu/people/newman_mc/pubs/Newman1993.pdf

pengguna2361683
sumber