ドメインと範囲[0,1]を持つS字型曲線の式はありますか


10

基本的に、類似性の測度を予測子として使用される重みに変換したいと思います。類似点は[0,1]にあり、重みも[0,1]に制限します。勾配降下法を使用して最適化する可能性が高いこのマッピングを行うパラメーター関数が必要です。要件は、0が0にマップされ、1が1にマップされ、厳密に増加することです。単純な微分も認められます。前もって感謝します

編集:これまでの回答をありがとう、それらは非常に役に立ちます。私の目的をより明確にするために、タスクは予測です。私の観察は、予測する単一の次元を持つ非常にスパースなベクトルです。私の入力ディメンションは、類似性の計算に使用されます。私の予測は、予測子に対する他の観測値の重み付き合計であり、重みは類似性の関数です。簡単にするために、重みを[0,1]に制限しています。うまくいけば、なぜ0にマップするために0、1にマップするために1が必要で、厳密に増加する必要があるのか​​は明らかです。whuberがf(x)を使用すると指摘したように、= xはこれらの要件を満たし、実際にはかなりうまく機能します。ただし、最適化するパラメーターはありません。私は多くの観察結果を持っているので、多くのパラメーターを許容できます。私は勾配降下法を手でコーディングするので、単純な導関数を好みます。

たとえば、与えられた応答の多くは.5について対称です。左/右にシフトするパラメーターがあると便利です(ベータ分布の場合など)。


4
は、すべての要件を満たします。f(x)=x
whuber

左右のシフトの制御に関するあなたの編集に応じて、少し追加しました。私の写真の3つの例の家族はす​​べて、それを直接制御する方法を持っています。
Glen_b-2016

回答:


8

ここに一つあります:

y=11+(x1x)β

β>0

[![] [1]] 2


tanhsin

こんにちは、Darkmoor。「逆ロジット関数」をいじってこのエクアイオンを得ました。y = inverse logit(x)= 1 /(1 + e ^ -x)に似ていることがわかります。logitは
Ismam Huda

2
y = 1 /(1+(x ^ r /(1-x ^ r))^-b)を使用して、関数が.5に等しい位置を調整できるように、調整のレベルを追加できます。 。次に、x0でy = .5を達成するには、r = -log(2)/ log(x0)を設定します。または、x = x0で0と1の間のいくつかのkに対してy = kを確実にしたい場合は、r = -log((1 / k-1)^(1 / b)+1)/ log(x0)を設定します
wmsmith

7

f(x)=x

11+ek(x0.5)

kkf(0)f(1)k=20f(0)=4.539787e05f(1)=0.9999546

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

この関数は1-> 1をマッピングしません。実際、f-> 1はx->∞としてマップされます。kに応じて、x = 1でのfの値は非常に小さくなる可能性がありますが、正確に0になることは決してありません。実際、分母にe ^ ...を使用する主な理由、つまり関連するドメインが[0,1]の代わりに[0、∞)。
wmsmith

7

要件に一致する最も一般的なソリューションを提供します。これにより、選択と最適化を最も柔軟に行うことができます。

「S字型」は、上に向かって凹んだ部分と下に向かって凹んだ別の部分からなる単調に増加する曲線(変換が1対1であるべきだから)として解釈される場合があります。他のタイプ(左半分が上に凹んでいる)は、そのような変換を反転することによって得られるため、左半分を下に凹にすることに焦点を当てることがあります。

ff

f

この第二の誘導体は、実質的に行うことができます何かを私たちが必要とするすべてはそれであります

  • それは統合可能です、

  • [0,k)

  • (k,1]

f

f

f(x)=0xf(t)dt

そして

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

fff(0)f(1)=CfC


f

図

f[0,k)(k,1]R

ffff

fff

f(x)=xf(x)=0ff10ff(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

あなたがこれを使用しようとしていることは私には特に明確ではないので、それが理にかなっているかどうかは言えませんが、すべての基準を満たすことはかなり簡単なようです。

  • S字カーブ

  • パラメトリック関数

  • 0は0に、1は1に、厳密に増加してマッピングします

  • 単純な導関数

それでは、pdfが「シンプル」である[0,1]の連続的な単峰*分布の便利な特定のファミリを使用しないのはなぜですか?それはあなたがそこにリストするもののすべての部分を満たしているようです。

*(そのモードはエンドポイントから離れている)

  • S字型の曲線-ユニモダリティによって保証されます(モードがエンドポイントにない場合)

  • パラメトリック-パラメータを持つ特定のファミリを指定する

  • 0は0にマッピングされ、1は1にマッピングされ、厳密に増加します-これが[0,1]の分布関数が行うことです。(0,1)で密度が> 0である必要があるだけです

  • 単純な導関数-これがpdfなので、pdfがあなたに合った基準で「単純」であれば、完了です。

(Alex Rが述べたように)これらの数は無限です。彼が言及するベータは明白なものですが、cdfは不完全なベータ関数であるため、それを評価するために何かが必要です---これは多くのパッケージ(ほぼすべてのまともな統計パッケージを含む)の標準関数なので、それは疑います難しいこと。ただし、すべてのベータが単一モードではない(モードが最後ではない)ことに注意してください。したがって、このファミリには、「S」字型ではないCDFも含まれます。

これは、3つの合理的に単純な家族の写真です。

ここに画像の説明を入力してください

他にも多くの選択肢があり、新しい選択肢を簡単に構築できます。

-

質問に対する編集への応答:

c=12μαβαα+β12

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.