Чи існує формула для s-подібної кривої з областю домену та діапазоном [0,1]


10

В основному я хочу перетворити заходи подібності у ваги, які використовуються як предиктори. Подібність буде на [0,1], і я обмежу ваги також на [0,1]. Мені б хотілося, щоб параметрична функція робила це відображення, яке я, швидше за все, оптимізую за допомогою градієнтного спуску. Вимоги полягають у тому, що 0 карт до 0, 1 карт до 1, і це суворо збільшується. Проста похідна також цінується. Спасибі заздалегідь

Редагувати: Дякую за відповіді поки що, вони дуже корисні. Щоб зробити мою мету більш зрозумілою, завдання - передбачення. Мої спостереження - надзвичайно рідкісні вектори, з якими можна передбачити єдиний вимір. Мої вхідні розміри використовуються для обчислення подібності. Мій прогноз - це зважена сума інших показників спостережень для прогноктора, коли вага є функцією подібності. Я обмежую свої ваги на [0,1] для простоти. Сподіваємось, очевидно, чому зараз мені потрібно 0 зіставити на 0, 1 - на 1, і щоб це суворо зростало. Як зазначив Уубер, використання f (x) = x відповідає цим вимогам і насправді працює досить добре. Однак у нього немає параметрів для оптимізації. У мене дуже багато спостережень, тому я можу перенести багато параметрів. Я буду вручну кодувати градієнтний спуск, звідси моє перевагу простій похідній.

Наприклад, велика частина наданих відповідей симетрична приблизно .5. Було б корисно мати параметр для зміщення вліво / вправо (наприклад, при бета-розподілі)


4
f(x)=x задовольняє кожну вашу вимогу.
whuber

Я додав трохи у відповідь на вашу редакцію щодо контролю зрушення вліво-вправо. Усі три приклади сімей на моїй картині мають прямий спосіб контролювати це.
Glen_b -Встановіть Моніку

Відповіді:


8

Ось один:

y=11+(x1x)β

де єβ>0

[! [] [1]] 2


Це стандартна функція , як від ? Мені цікаво визначити це в ср, але я не зміг. Скажіть, будь ласка, посилання? tanhsin
Darkmoor

Привіт, Darkmoor, я отримав це рівняння, погравши з "функцією зворотного логіту". Ви можете бачити, що він нагадує y = зворотний logit (x) = 1 / (1 + e ^ -x) Тому що logit відображає на (0,1) imgur.com/a/H0kGF
Ізмам Худа

2
Ви можете додати додатковий рівень регулювання, щоб ви могли налаштувати положення, в якому функція дорівнює .5, використовуючи y = 1 / (1+ (x ^ r / (1-x ^ r)) ^ - b) . Тоді для досягнення y = .5 при x0 задаємо r = -log (2) / log (x0). Або, якщо ви хочете переконатися, що y = k для деякого k між 0 і 1 при x = x0, тоді встановіть r = -log ((1 / k - 1) ^ (1 / b) +1) / log (x0)
wmsmith

7

Як уже зауважив @whuber, функція відповідає трьом вимогам, які ви згадали (тобто 0 карт до 0, 1 карти до 1 і функція суворо зростає). У назві запитання ви, схоже, вказуєте, що вас також цікавить функція S-подібної форми, як в кривій Sigmoid / Logistic. Це правильно? У цьому випадку ви, безумовно, повинні спробувати наступну логістичну функцію, яка приблизно відповідатиме всім 4 визначеним вами критеріям: .f(x)=x

11+ek(x0.5)

в цьому рівнянні контролюватиме нахил вашої кривої. Зміна також дозволить вам контролювати, наскільки і до 0 та 1 відповідно. Наприклад для , і .kkf(0)f(1)k=20f(0)=4.539787e05f(1)=0.9999546

Похідна цієї функції легко обчислюється як: Подальшу інформацію про цю функцію можна можна знайти на веб- сайті https://en.wikipedia.org/wiki/Logistic_function

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

Ця функція не відображає 1 -> 1. Насправді f -> 1 як x -> ∞. Залежно від k значення f при x = 1 може бути досить малим, але воно ніколи не буде рівно 0. Фактично, це головна причина використання e ^ ... в знаменнику, тобто для того, щоб відповідна область була [0, ∞) замість [0,1].
wmsmith

7

Дозвольте запропонувати найбільш загальне рішення, що відповідає вимогам: це дасть вам найбільшу гнучкість у виборі та оптимізації.

Ми можемо інтерпретувати "S-подібну" як монотонно зростаючу криву (тому що перетворення повинно бути однозначною), що складається з однієї частини, увігнутої вгору, та іншої частини, увігнутої вниз. Ми можемо зосередитись на тому, щоб ліва половина увігнута вниз, тому що інший тип (з лівою половиною увігнутою вгору) отримується шляхом інвертування таких перетворень.

Оскільки трансформація повинна бути диференційованою, вона повинна мати зменшувану похідну у лівій половині та зростаючу похідну в правій половині. Незалежно від того, похідна повинна бути негативною і може бути нульовою лише в ізольованій точці (якщо вона взагалі: мінімальне значення похідної дає найменший нахил перетворення.)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

Такий підхід дозволяє проектувати будь-яку трансформацію, яка вам подобається. Ви можете почати, накресливши криву S, оцінюючи її (відносні) нахили , а з цього оцінюючи її нахили. Вкажіть деякий щоб відповідати останньому малюнку, а потім перейдіть до обчислення а потім .ffff

Зауважте, що , які спочатку увігнуті, а потім увігнуті вниз, також можна отримати, відкинувши на початку. Критична умова створення кривої S-подібної форми полягає в тому, що (крім можливих екскурсій на множині міри нуль) фактично може перетнути нуль не більше одного разу.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, суворо збільшується

  • проста похідна

То чому б просто не взяти будь-яке зручне певне сімейство безперервних одномодальних * розподілів на [0,1], чий pdf "простий"? Це, здається, виконує кожну частину того, що ви там перераховуєте.

* (режим якого обмежений від кінцевих точок)

  • s-подібна крива - гарантована унімодальністю (з режимом не в кінцевих точках)

  • параметричний - даючи будь-яку конкретну сім'ю, яка має параметри

  • 0 карт до 0, 1 карти до 1 суворо збільшуються - ось що роблять функції розподілу на [0,1]; вам просто потрібно щільність бути> 0 в (0,1)

  • проста похідна - це pdf, тому якщо pdf "простий" за будь-яким критерієм, який вам підходить, ви готові.

Є (як заявив Алекс Р) нескінченна кількість таких. Бета-версія, яку він згадує, очевидна, але cdf є неповною функцією бета-версії, тому вам знадобиться щось для того, щоб оцінити, що --- це стандартна функція для багатьох пакетів (включаючи майже всі гідні пакети статистики), тому я сумніваюся, що буде бути важким. Однак зауважте, що не всі бета-версії є одномодовими (з режимом не на кінцях), тому сімейство також включає cdfs, які не мають "s" форми.

Ось фотографії трьох досить простих сімей:

введіть тут опис зображення

Є багато інших варіантів, і нові можна легко побудувати.

-

У відповідь на редагування на питання:

Зауважте, що всі три сімейства, з яких я намалював зображення, мають простий спосіб отримати зсув вліво-вправо (i) для трикутного розподілу, параметр безпосередньо переміщує криву вліво або вправо (тобто контролює ступінь асиметрії, симетричний випадок); для logitnormal параметр керує асиметрією; для бета-розподілу знак (що еквівалентно, знак ) керує ним.c=12μαβαα+β12

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.