LINUX.ORG.RU

Функция для аппроксимации вероятности


0

2

Есть у меня некоторый классификатор, который выдаёт результаты в абстрактных попугаях. Мне нужно из них получить вероятность, подогнав эти попугаи функцией P(x). Посоветуйте хорошую функцию, ибо логистическая кривая мне подходит не весьма.

Собственно, P(X): непрерывна и монотонно возрастает P(-inf) --> 0 P(inf) --> 1 P(x-b) - 0.5 нечётная, где b - некий задаваемый параметр

Раньше я пользовался логистической кривой, однако практика показывает, что если она нормально подгоняет мои данные на линейном участке, то таки слишком быстро выходит к 0 или 1.

Выглядит это так: http://i48.fastpic.ru/big/2012/1125/9c/8257ae703912c1c0c658e2991fb5f89c.png

Арктангенс - наоборот, спадает немного слишком медленно. Нет ли чего ещё?

Перемещено post-factum из general


Если я тебя правильно понял, то:

  1. табулируешь попугаи (оно же p(x))
  2. получаешь значения твоей функции распределения в нужных точках: F(x)=sum(p(xi)), где xi<=x
  3. нужную тебе кривую получаешь интерполяцией.
Alan_Steel ★★
()
Последнее исправление: Alan_Steel (всего исправлений: 1)
Ответ на: комментарий от Alan_Steel

Не можно. На концах оно всё равно должно возрастать/убывать, даже при выходе за границы интерполяции.

Yak
() автор топика
Ответ на: комментарий от post-factum

Сигмоида это, сигмоида. Функция Лапласа ещё круче.

Yak
() автор топика

Судя по рисунку, у тебя функция зависит от параметра a. Разве его нельзя подогнать? Или в чем тогда проблема?

dave ★★★★★
()
Ответ на: комментарий от Yak

Как, ну вот как ты выйдешь за границы интерполяции, раз у тебя есть значения функции на крайних точках (=бесконечности)?

Alan_Steel ★★
()
Ответ на: комментарий от dave

Параметр a - он подгоняется, главным образом, по крутизне линейного участка. Он подгоняется хорошо, крутизна похожа.

Однако на концах получается полный цорес: стремится к асимптоте слишком резво.

Yak
() автор топика
Ответ на: комментарий от Alan_Steel

Вы делаете мне больно!

Точки для интерполяции у меня лежат примерно [-1...1]. Большая их часть - в интервале [-0.4 --- 0.4]. Подгоняя вероятность чем-то вроде сигмоиды, я получаю ещё и какую ни есть экстраполяцию.

Yak
() автор топика
Ответ на: Вы делаете мне больно! от Yak

Собственно, P(X): непрерывна и монотонно возрастает P(-inf) --> 0 P(inf) --> 1

Точки для интерполяции у меня лежат примерно [-1...1]

Так что первый интервал интерполяции (-∞;-1], последний [1; ∞). Проблемы по-прежнему не вижу.

Alan_Steel ★★
()
Ответ на: комментарий от Yak

Видимо, должен быть еще один параметр, который задает пологость. А если поступить по рабоче-крестьянски, да разбить на три участка и подогнать производные на стыках как в сплайнах?

dave ★★★★★
()

Сигмоидов до черта разных: функция Гомпертца, арктангенс. Любой интеграл от «хорошей» плотности вероятности будет сигмоидом (интеграл Гауссова, логистического, Стьюдента распределений).

Если сформулировать дополнительное условие на распределение, то можно сделать выбор. Потому что сама по себе аппроксимация никому вообще не нужна.

anonymous
()

Ты вот это смотрел? https://en.wikipedia.org/wiki/File:Gjl-t(x).svg

Что тебя не устраивает в обычной сигмоидной функции? Какой классификатор ты используешь?

У тебя есть хоть какие-то предпосылки считать что твоя сигмоидная функция к выхлопу алгоритма даст оценку вероятности? Или это чистейшая эвристика? Просто, вообщето сигмоидная функция используется в логтической регрессии, потому что это — теоретическая оценка вероятности при условии, что функция распределения классов принадлжеит экспоненциальному семейству и имеет равне параметры разброса. Это эквивалентно гладкой аппроксимации пороговой функции потерь на Q = log(1+exp(-<w,x_i>y_i)).

Так вот, если нету предпосылок, то подумай стоит ли вообще делать вероятность.

Ну а так подгоняй по внешнему критерию k: P(k*x). Либо, ты можешь отнормировать входные данные(чтобы выборочная дисперсия выборки =1), тогда(в зависимости от алгоритма), может не нужно будет подгонять коэффициенты при параметре логистической функции.

maggotroot
()
Ответ на: комментарий от maggotroot

Спасибо!

У меня на самом деле и есть чистая эвристика.

Я пока остановился на x/sqrt(1+x^2).

Yak
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.