Apakah ada rumus untuk kurva berbentuk s dengan domain dan rentang [0,1]


10

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)


4
f(x)=x memenuhi setiap kebutuhan Anda.
whuber

Saya telah menambahkan sedikit sebagai tanggapan terhadap suntingan Anda tentang cara mengontrol shift kiri-kanan. Ketiga keluarga contoh dalam gambar saya memiliki cara langsung untuk mengendalikannya.
Glen_b -Reinstate Monica

Jawaban:


8

Ini dia:

y=11+(x1x)β

di mana adalahβ>0

[! [] [1]] 2


Apakah ini fungsi standar seperti dari ? Saya tertarik untuk mengidentifikasinya di pernikahan tetapi saya tidak bisa. Bisakah Anda memberikan referensi? tanhsin
Darkmoor

Halo Darkmoor, saya mendapatkan persamaan ini dengan bermain-main dengan "fungsi logit terbalik". Anda dapat melihat bahwa itu menyerupai y = invit logit (x) = 1 / (1 + e ^ -x) Karena logit memetakan ke (0,1) imgur.com/a/H0kGF
Ismam Huda

2
Anda dapat menambahkan tingkat penyesuaian tambahan sehingga Anda dapat mengatur posisi di mana fungsi tersebut sama dengan 0,5 dengan menggunakan y = 1 / (1+ (x ^ r / (1-x ^ r)) ^ - b) . Kemudian, untuk mendapatkan y = .5 pada x0 set r = -log (2) / log (x0). Atau, jika Anda ingin memastikan bahwa y = k untuk beberapa k antara 0 dan 1 pada x = x0 maka set r = -log ((1 / k - 1) ^ (1 / b) +1) / log (x0)
wmsmith

7

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

11+ek(x0.5)

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 .kkf(0)f(1)k=20f(0)=4.539787e05f(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

kek(x0.5)(1+ek(x0.5))2

Fungsi ini tidak memetakan 1 -> 1. Faktanya, f -> 1 sebagai x -> ∞. Bergantung pada k, nilai f pada x = 1 mungkin cukup kecil, tetapi tidak akan pernah tepat 0. Bahkan, itulah alasan utama untuk menggunakan e ^ ... dalam penyebut, yaitu sehingga domain yang relevan adalah [0, ∞) bukannya [0,1].
wmsmith

7

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.)ff

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

f(x)=0xf(t)dt

and

f(x)=0xf(t)dt.

The conditions on f 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 transformation f has been.

Figure

To apply this approach, you may begin with an analytic expression for f, 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) slopes f, and from that estimating its slopes. Specify some f to match that latter picture, then proceed to compute f and then f.

Note that f 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 solution f(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)=1x.)

n <- 51                      # Number of interpolation points
k.1 <- floor(n * 2/3)        # Width of the left-hand interval
k.2 <- n - k.1               # ............ right-hand interval
x <- seq(0, 1, length.out=n) # x coordinates
set.seed(17)

# Generate random values of the second derivative that are first negative,
# then positive.  Modify to suit.
y.2 <- (c(runif(k.1, -1, 0), 0.5*runif(k.2, 0, 1))) * abs(cos(3*pi * x)) + 
  c(rep(-.1, k.1), rep(.5,k.2))

# Recover the first derivative and then the transformation.  Control the 
# minimum slope of the transformation.
y.1 <- cumsum(y.2)
y.1 <- y.1 - min(y.1) + 0.005 * diff(range(y.1))
y <- cumsum(y.1)
y <- (y - y[1]) / (y[n] - y[1]) # Normalize the transformation

#
# Plot the graphs.
par(mfrow=c(1,3))
plot(x, y.2, type="l", bty="n", main="Second derivative")
points(x, y.2, pch=20, cex=0.5)
abline(h=0, col="Red", lty=3)
plot(x, y.1, type="l", bty="n", lwd=2, main="First derivative")
abline(h=0, col="Red", lty=3)
plot(x, y, type="l", lwd=2, main="Transformation")

7

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.

  • s-shaped curve

  • parametric function

  • 0 maps to 0, 1 maps to 1, strictly increasing

  • simple derivative

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:

enter image description here

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.