Etki alanı ve aralığı olan s biçimli bir eğri için bir formül var mı [0,1]


10

Temel olarak benzerlik ölçülerini yordayıcı olarak kullanılan ağırlıklara dönüştürmek istiyorum. Benzerlikler [0,1] üzerinde olacak ve ağırlıkları da [0,1] ile sınırlayacağım. Degrade iniş kullanarak optimize edeceğim bu eşlemeyi yapan paramterik bir işlev istiyorum. Gereksinimler, 0'ın 0'a, 1'in 1'e eşleşmesi ve kesinlikle artmasıdır. Basit bir türev de takdir edilmektedir. Şimdiden teşekkürler

Düzenleme: Şimdiye kadar verilen yanıtlar için teşekkürler, bunlar çok faydalıdır. Amacımı daha açık hale getirmek için görev tahmin. Gözlemlerim, tahmin edilmesi gereken tek bir boyuta sahip son derece seyrek vektörlerdir. Giriş boyutlarım benzerliği hesaplamak için kullanılıyor. Benim tahminim, ağırlığın benzerliğin bir fonksiyonu olduğu tahminci için diğer gözlemlerin değerinin ağırlıklı bir toplamıdır. Basitlik için ağırlıklarımı [0,1] ile sınırlandırıyorum. Şimdi neden 0'ı 0'a eşlemem, 1'i 1'e eşlemem ve kesinlikle artması için umarım açıktır. Whuber'ın f (x) = x kullanarak işaret ettiği gibi bu gereksinimleri karşılar ve aslında oldukça iyi çalışır. Ancak, optimize edilecek hiçbir parametresi yoktur. Birçok gözlemim var, bu yüzden birçok parametreye tahammül edebiliyorum. Degrade inişi elle kodlayacağım, bu yüzden basit bir türev tercihim.

Örneğin, verilen cevapların çoğu yaklaşık 5 simetriktir. Sola / sağa kaydırmak için parametrenin olması yararlı olacaktır (beta dağıtımı gibi)


4
f(x)=x , gereksinimlerinizin her birini karşılar.
whuber

Sola kaydırmayı kontrol etme konusundaki düzenlemenize yanıt olarak biraz ekledim. Resmimdeki her üç örnek ailenin de bunu kontrol etmenin doğrudan bir yolu var.
Glen_b

Yanıtlar:


8

Işte bir tane:

y=11+(x1-x)-β

burada olanβ>0

[! [] [1]] 2


Bu standart bir işlev mi? tanh nın-nin sbenn? Evlilikte tanımlamak istiyorum ama yapamadım. Bir referans verebilir misiniz?
Darkmoor

Merhaba Darkmoor, bu tersi "ters logit fonksiyonu" ile oynayarak aldım. Bunun y = ters logit (x) = 1 / (1 + e ^ -x) 'e benzediğini görebilirsiniz. Çünkü logit (0,1) ile eşleşir imgur.com/a/H0kGF
Ismam Huda

2
Y = 1 / (1+ (x ^ r / (1-x ^ r)) ^ - b kullanarak, işlevin .5'e eşit olduğu konumu ayarlayabilmeniz için fazladan bir ayar düzeyi ekleyebilirsiniz. . Sonra x0'da y = .5'e ulaşmak için r = -log (2) / log (x0) ayarını yapın. Veya x = x0'da 0 ile 1 arasında bazı k için y = k olduğundan emin olmak istiyorsanız, r = -log ((1 / k - 1) ^ (1 / b) +1) / log (x0) ayarını yapın.
wmsmith

7

@Whuber tarafından zaten yorumlandığı gibi işlev f(x)=xbahsettiğiniz üç gereksinimi karşılar (yani 0, 0 ile 1, 1 ile 1 arasında eşleşir ve işlev kesinlikle artar). Sorunuzun başlığında, Sigmoid / Lojistik eğrisinde olduğu gibi S şeklindeki işleve de ilgi duyduğunuzu belirtiyorsunuz. Bu doğru mu? Bu durumda, kesinlikle belirttiğiniz 4 ölçütün tamamını karşılayacak aşağıdaki lojistik işlevi denemelisiniz:

11+e-k(x-0.5)
.

kBu denklemde eğrinizin eğimini kontrol eder. Değiştirmek ayrıca ne kadar yakın kontrol etmenizi sağlar f(0) ve f(1)sırasıyla 0 ve 1'dir. Örneğink=20, f(0)=4.539787e-05 ve f(1)=0.9999546.

Bu işlevin türevi kolayca şu şekilde hesaplanır:

ke-k(x-0.5)(1+e-k(x-0.5))2
Bu işlev hakkında daha fazla bilgiyi https://en.wikipedia.org/wiki/Logistic_function adresinde bulabilirsiniz.

Bu işlev 1 -> 1'i eşlemez. Aslında, f -> 1'i x -> ∞ olarak. K'ye bağlı olarak x = 1'deki f değeri oldukça küçük olabilir, ancak asla tam olarak 0 olmayacaktır. Aslında, paydada e ^ ... kullanmanın ana nedeni, yani ilgili etki alanı [0,1] yerine [0, ∞).
wmsmith

7

Gereksinimlerle tutarlı en genel çözümü sunmama izin verin: bu size en iyi seçim ve optimizasyonu sağlayacak esnekliği sağlayacaktır.

"S-şeklini" yukarı doğru içbükey bir parçadan ve aşağı doğru içbükey bir parçadan oluşan monoton olarak artan bir eğri olarak yorumlayabiliriz (çünkü dönüşüm bire bir olmalıdır). Diğer yarısı (sol yarısı içbükey yukarıdayken) bu tür dönüşümleri tersine çevirerek elde edildiğinden, sol yarıyı içbükey hale getirmeye odaklanabiliriz.

Dönüşümden bu yana f ayırt edilebilir olması gerekiyordu, bu nedenle azalan bir türevi olmalı f'sol yarısında ve artan bir türev sağ yarısında. Ne olursa olsun, türev negatif olmamalıdır ve sadece izole bir noktada sıfır olabilir (eğer varsa: türevin minimum değeri dönüşümün en az eğimini verir).

Türevin ayırt edilebilir olması gerekli değildir, ancak pratik bir konu olarak türev ile hemen hemen her yerde farklılaştırılabileceğini varsayabiliriz. f''.

Bu ikinci türev pratik olarak her şeyi yapabilir : tek ihtiyacımız olan

  • entegre edilebilir,

  • bazı sol aralıktaki tüm değerler için sıfıra eşit veya sıfır [0,k), ve

  • sağdaki aralıktaki tüm değerler için sıfırdan büyük veya ona eşittir (k,1].

Bu tür işlevler f''(ve tersleri) tüm çözümlerin kümesini parametrelendirir. (Bir miktar fazlalık vardır: aşağıda açıklanan son bir normalleştirme adımı ile halledilir.)

Analizin Temel Teoremi iyileşmemizi sağlar fgelen bir tür tarifname. Yani,

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

ve

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

Üzerindeki koşullar f'' bunu garanti et f minimiminden monoton olarak yükseliyor f(0) maksimum seviyeye f(1)=C. Son olarak, normalleştirf önceki integralin değerlerini C.


İşte ikinci türev için rastgele bir yürüyüşün bir versiyonuyla başlayan bir örnek. İçinde, türevler normalleştirilmedi, ancak dönüşümf olmuştur.

şekil

Bu yaklaşımı uygulamak için, f'', belki de sonlu sayıda parametre ile değişiyordu. Ayrıca, grafik boyunca bazı noktalar vererek ve aralarında enterpolasyon yaparak belirtebilirsiniz - enterpolatörün değerlerin olumsuzluğuna saygı göstermesi şartıyla[0,k) ve pozitifliği (k,1]. İkincisi, illüstrasyonu oluşturmak için kullanılan yöntemdir. Karşılık gelen Rkod (aşağıda) hesaplama detaylarını verir.

Bu yaklaşım, istediğiniz herhangi bir dönüşümü tasarlamanızı sağlar. S-eğrisini çizerek (göreli) eğimlerini tahmin ederek başlayabilirsinizf've eğimlerini tahmin eden bundan. Bazılarını belirtinf'' sonraki resmi eşleştirmek için hesaplamaya devam edin f' ve sonra f.

Bunu not et f önce içbükey sonra da içbükey aşağı itilerek elde edilebilir f''başta. S-şekilli bir eğri oluşturmak için kritik koşul (sıfır ölçü kümesinde olası geziler dışında)f''aslında en fazla bir kez sıfırı geçebilir .

Bu arada, çözüm f(x)=x ayarlayarak ortaya çıkar f''(x)=0 neredeyse her yerde f' sabit ve pozitif, nereden flineer; normalleştirme eğimin1 ve kesişme noktası 0. (Yapımıf' sabit ve negatif çözüm üretir f(x)=1-x.)

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

Bunu kullanmaya çalıştığınız şey benim için özellikle açık değil, bu yüzden mantıklı olup olmadığını söyleyemem, ancak tüm kriterlerinizi yerine getirmek oldukça önemsiz görünüyor.

  • s-şekilli eğri

  • parametrik fonksiyon

  • 0'a 0, 1'e 1, kesinlikle artıyor

  • basit türev

Öyleyse neden sadece pdf'si "basit" olan [0,1] 'e uygun özel sürekli unimodal * dağılım ailesi almıyorsunuz? Bu, orada listelediklerinizin her bölümünü yerine getiriyor gibi görünüyor.

* (modu uç noktalardan uzakta olan)

  • s-şekilli eğri - uyumsuzluk ile garanti edilir (mod uç noktalarda değil)

  • parametrik - parametreleri olan herhangi bir özel aile vererek

  • 0 ile 0 arasında, 1 ile 1 arasında harita kesinlikle artar - [0,1] 'deki dağıtım fonksiyonları bunu yapar; sadece yoğunluğun> 0 inç (0,1) olması gerekir

  • basit türev - bu pdf'dir, bu yüzden pdf size uygun olan kriterle "basit" ise, işiniz bitmiştir.

(Alex R'nin belirttiği gibi) bunlardan sonsuz sayıda vardır. Bahsettiği beta açıktır, ancak cdf eksik beta işlevidir, bu yüzden bunu değerlendirmek için bir şeye ihtiyacınız olacaktır --- birçok pakette (neredeyse tüm iyi istatistik paketleri dahil) standart bir işlevdir, bu yüzden zor ol. Bununla birlikte, tüm betaların tek modlu olmadığını unutmayın (mod uçlarında değil), bu nedenle aile ayrıca "s" şeklinde olmayan cdfs'yi de kapsar.

İşte oldukça basit üç ailenin resimleri:

resim açıklamasını buraya girin

Başka birçok seçenek var ve yeni seçenekler kolayca oluşturulabilir.

-

Sorudaki düzenlemeye yanıt olarak:

Resim çizdiğim üç ailenin de üçgen dağılımı için sol-sağ kaymaları (i) elde etmenin basit bir yolu olduğunu, parametrenin eğriyi doğrudan sağa veya sola hareket ettirdiğini (yani asimetri derecesini kontrol ettiğini, c=12simetrik durumdur); logitnormal içinμparametre asimetriyi kontrol eder; beta dağıtımı içinα-β (eşdeğer olarak, αα+β-12) kontrol eder.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.