Pada dasarnya saya ingin mengubah ukuran kesamaan menjadi bobot yang digunakan sebagai prediktor. Kesamaannya adalah pada [0,1], dan saya akan membatasi bobot juga pada [0,1]. Saya ingin fungsi paramteris yang melakukan pemetaan ini yang kemungkinan saya akan optimalkan menggunakan gradient descent. Syaratnya adalah bahwa 0 peta ke 0, 1 peta ke 1 dan itu benar-benar meningkat. Turunan sederhana juga dihargai. Terima kasih sebelumnya
Sunting: Terima kasih atas tanggapannya sejauh ini, itu sangat membantu. Untuk memperjelas tujuan saya, tugasnya adalah prediksi. Pengamatan saya adalah vektor yang sangat jarang dengan dimensi tunggal untuk diprediksi. Dimensi input saya digunakan untuk menghitung kesamaan. Prediksi saya kemudian merupakan jumlah terbobot dari nilai pengamatan lain untuk prediktor di mana bobot adalah fungsi kesamaan. Saya membatasi bobot saya pada [0,1] untuk kesederhanaan. Mudah-mudahan jelas sekarang mengapa saya memerlukan 0 untuk memetakan ke 0, 1 untuk memetakan ke 1, dan untuk itu harus benar-benar meningkat. Seperti yang ditunjukkan oleh whuber menggunakan f (x) = x memenuhi persyaratan ini dan benar-benar berfungsi dengan baik. Namun tidak memiliki parameter untuk dioptimalkan. Saya punya banyak pengamatan sehingga saya bisa mentolerir banyak parameter. Saya akan tangan coding gradient descent, maka preferensi saya untuk turunan sederhana.
Sebagai contoh, banyak respon yang diberikan simetris tentang 0,5. Akan bermanfaat untuk memiliki parameter untuk bergeser ke kiri / kanan (seperti dengan distribusi beta)
sumber
Jawaban:
Ini dia:
di mana adalahβ >0
] 2
sumber
Seperti yang sudah dikomentari oleh @whuber fungsi memenuhi tiga persyaratan yang Anda sebutkan (yaitu 0 peta menjadi 0, 1 peta ke 1 dan fungsinya meningkat tajam). Dalam judul pertanyaan Anda, Anda tampaknya mengindikasikan bahwa Anda juga tertarik pada fungsi yang berbentuk S, seperti pada kurva Sigmoid / Logistik. Apakah ini benar? Dalam hal ini, Anda tentu harus mencoba fungsi logistik berikut yang kira-kira akan memenuhi semua 4 kriteria yang Anda tentukan: .f(x)=x
The dalam persamaan ini akan mengontrol kemiringan kurva Anda. Mengubah juga akan memungkinkan Anda untuk mengontrol seberapa dekat dan -masing dengan 0 dan 1. Misalnya untuk , dan .k k f(0) f(1) k=20 f(0)=4.539787e−05 f(1)=0.9999546
Turunan dari fungsi ini dengan mudah dihitung sebagai: Informasi lebih lanjut tentang fungsi ini dapat dapat ditemukan di https://en.wikipedia.org/wiki/Logistic_function
sumber
Biarkan saya menawarkan solusi paling umum yang konsisten dengan persyaratan: yang akan memberi Anda fleksibilitas paling banyak untuk memilih dan mengoptimalkan.
Kita dapat menafsirkan "berbentuk-S" sebagai kurva yang meningkat secara monoton (karena transformasi harus satu-ke-satu) yang terdiri dari satu bagian yang cekung ke atas dan bagian lain yang cekung ke bawah. Kita mungkin fokus untuk membuat setengah kiri cekung ke bawah, karena tipe lain (dengan setengah cekung atas) diperoleh melalui membalikkan transformasi tersebut.
Karena transformasi seharusnya dapat dibedakan, maka harus memiliki turunan penurunan di bagian kiri dan turunan yang meningkat di bagian kanan. Apapun, turunannya harus nonnegatif dan bisa nol hanya pada titik yang terisolasi (jika sama sekali: nilai minimum turunannya memberikan kemiringan transformasi yang paling rendah.)f f′
Tidak diperlukan bahwa turunannya dapat dibedakan, tetapi sebagai hal praktis kita dapat menduga bahwa turunannya dapat dibedakan hampir di mana-mana dengan turunan .f′′
Derivatif kedua ini dapat melakukan hampir semua hal : yang kita butuhkan hanyalah itu
itu dapat diintegrasikan,
kurang dari atau sama dengan nol untuk semua nilai dalam beberapa interval tangan kiri , dan[0,k)
lebih besar atau sama dengan nol untuk semua nilai dalam interval tangan kanan .(k,1]
Fungsi-fungsi seperti itu (dan inversnya) parameterisasi himpunan semua solusi.f′′ (Ada beberapa redundansi: dirawat dengan langkah normalisasi akhir yang dijelaskan di bawah ini.)
Teorema dasar kalkulus memungkinkan kita untuk memulihkan dari setiap spesifikasi tersebut. Itu adalah,f
and
The conditions onf′′ guarantee that f rises monotonically from its minimim f(0) to some maximum f(1)=C . Finally, normalize f by dividing the values of the preceding integral by C .
Here is an illustration starting with a version of a random walk for the second derivative. In it, the derivatives have not been normalized, but the transformationf has been.
To apply this approach, you may begin with an analytic expression forf′′ , perhaps varied by a finite number of parameters. You may also specify it by giving some points along its graph and interpolating among them--provided that the interpolator respects the negativity of the values on [0,k) and the positivity on (k,1] . The latter is the method used to generate the illustration. The corresponding
R
code (below) provides the details of the calculation.This approach enables you to design any transformation you like. You could begin by sketching the S-curve, estimating its (relative) slopesf′ , and from that estimating its slopes. Specify some f′′ to match that latter picture, then proceed to compute f′ and then f .
Note thatf that are first concave up and then concave down can also be obtained by negating f′′ at the outset. The critical condition for creating an S-shaped curve is that (apart from possible excursions on a set of measure zero) f′′ may actually cross zero at most once.
Incidentally, the solutionf(x)=x arises by setting f′′(x)=0 almost everywhere, making f′ constant and positive, whence f is linear; normalization assures the slope is 1 and the intercept is 0 . (Making f′ constant and negative produces the solution f(x)=1−x .)
sumber
What you're trying to use this for is not particularly clear to me so I can't say whether it makes sense to do but fulfilling all your criteria seems to be fairly trivial.
So why not just take any convenient specific family of continuous unimodal* distributions on [0,1] whose pdf is "simple"? That seems to fulfill every part of what you list there.
* (whose mode is bounded away from the endpoints)
s-shaped curve - guaranteed by unimodality (with mode not at endpoints)
parametric - by giving any specific family which has parameters
0 maps to 0, 1 maps to 1 strictly increasing - that's what distribution functions on [0,1] do; you just need the density to be >0 in (0,1)
simple derivative -- that's the pdf, so if the pdf is "simple" by whatever criterion suits you, you're done.
There are (as Alex R stated) an infinite number of these. The beta he mentions is an obvious one, but the cdf is the incomplete beta function, so you'd need something to evaluate that --- it's a standard function in many packages (including almost all decent stats packages) so I doubt that will be difficult. Note however that not all betas are unimodal (with mode not at the ends), so the family also encompasses cdfs that are not "s" shaped.
Here are pictures of three reasonably simple families:
There are many other choices and new ones can easily be constructed.
--
In response to the edit to the question:
Note that all three of the families I drew pictures of have a a simple way to obtain left-right shifts (i) for the triangular distribution, the parameter directly moves the curve left or right (i.e. controls the degree of asymmetry,c=12 is the symmetric case); for the logitnormal the μ parameter controls the asymmetry; for the beta distribution, the sign of α−β (equivalently, the sign of αα+β−12 ) controls it.
sumber