Most meg egy függvény kéne...

 ( meditor | 2010. augusztus 18., szerda - 9:49 )

Sziasztok!

Ismét segítséget kérek, ég a pofám... )-::

Van egy predikciós eljárásom, egész jól működik már. Ehhez kéne
egy olyan torzító függvény, ami 0.01 és 0.99 között gyakorlatilag
lineáris és 0.01 és -0.1 között kvázi 0.0 valamint 0.99 és 1.1
között kvázi 1.0

A határok nem teljesen merevek, de valami ilyesmi jó lenne.

Előre is köszönöm a tippeket.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Aki kerdez, buta, aki nem, az is marad.

(a kerdesre nem tudok valaszolni)

nem mintha érteném a problémát, gondolom abs()-ekkel (tehát nem deriválható) megoldást gyorsat te is fel tudsz írni
a sima függvények lassúak? mármint van egy csomó ami erre hasonlít, atan, a normális eloszlás, törtfv, http://en.wikipedia.org/wiki/Sigmoid_function , stb, amiket eléggé torzítva azaz pár szorzással, összeadással meg eltolni ahova kell, a kívánt alakra lehet gyúrni

http://en.wikipedia.org/wiki/Generalised_logistic_curve

Ez talán idomítható az igényeidre...

ahh, épp ezt kerestem :)

Ez valami olyasmit csinál, de a Jóisten sem tudja beállítani
a paramétereket. )-:.

> Sol omnibus lucet.

pelda, c1 fuggveny (egyszer biztos folytonosan diffhato):

x <= 0.01 : 0.01*exp(100*(x-0.01))
0.01 <= x <= 0.99 : x
0.99 <= x : 1-0.01*exp(100*(0.99-x))

altalanosabban: ha w=0.01, akkor:

x <= w : w*exp(x/w-1)
w <= x <= 1-w : x
1-w <= x : 1-w*exp(1/w-1-x/w)

+0.9

tuti en nem ertem a problemat, de ez trivinek tunik:

x < 0.01           =>  f(x) = 0
0.01 <= x <= 0.99  =>  f(x) = x
0.99 < x           =>  f(x) = 1

nem folytonos, az a baj...

Teny, de nem is volt kikotes, hogy az legyen. Viszont 0.01 es 0.99 kozott legalabb linearis :)

patch:
x < 0.01 => f(x) = 0.01 (majdnem 0)
0.01 <= x <= 0.99 => f(x) = x
0.99 < x => f(x) = 0.99 (majdnem 1)

Ez jo gyors, csak van egy torese..

Amugy neuralis halokhoz szoktak meg ilyen fuggvenyeket hasznalni, ott az arctg es a sigmoid a szokasos (izles szerint felszorozva/eltolva).

--
Always remember - correlation does not imply causation.
Since realising this, my life has been so much better.

egy teljesen (vegtelenszer) folytonos konstrukcio: legyen:

es3(x)=erf(x*sqrt(pi)/2+x**3*pi/12)

(ahol erf() az a mezei error function, szinte minden prog nyelv tudja alapbol).ekkor a fuggvenyed:

es3(2*x-1)/2+0.5

de ez inkabb csak olyan 0.05 ... 0.95 kozott kozel linearis. a konstrukcio folytathato a vegtelensegig (amig a fenti w -> 0 hataresetben is kaphato [0,x,1] fuggvenyt megkapjuk) ugyhogy tisztan paratlan foku polinomokat teszunk az erf() hasaba, de megfelelo" egyutthatokkal. 5odfokura mar szerintem eleri a 0.01-es hatart, csak ki kene szamolni az egyutthatokat ami faraszto ;]

egy jobb:

es5(x)=erf(x*sqrt(pi)/2+x**3*pi/12+x**5*(pi/240+pi*sqrt(pi)/60)) 

b * arc tg (c * x + d)?

http://nocirc.org/

egy primitív megközelítés:

|x|-el ugye könnyű kb-ra felírni: ( |x| - |x-1| + 1 ) / 2

|x| pedig ugye sqrt(x*x), hogy ez deriválható legyen görbítsük meg: sqrt(x*x + a), tehát
'a' nullához tarva egyre hegyesebb lesz, a=2-nél pedig épp az 1/x szép gömbölyű hiperbolája -45 fokkal elforgatva

kép

(upsz rossz topic)

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

A szemet által javasolt fv (http://en.wikipedia.org/wiki/Generalised_logistic_curve)
együtthatóit keresgélem HRS-sel, szépen alakulgat.

> Sol omnibus lucet.

mi az a hrs? mi a gond a picivel fentebbi "kép"-pel? (a két pici számot olyan picire veszed amennyire hegyesnek akarod, a határok is (0 és 1) is jól látszik hol kell belőni)

az ilyen tipikus sigmoidoknál általában (pl neurális háló meg bármi) szinte tökmindegy hogy a sokadik deriváltja milyen, nagyjából legyen ilyen alakja és gyorsan számolható legyen szokott szempont lenni

A HRS az ez [ http://hup.hu/node/65898 ] és ennek egy nem
diszkrét változatával hangolom az együtthatókat. Amit mondtál
azzal gondolom nincs semmi baj, de elkezdtem már nézegetni a
fentebb preferált fv-t és lassan kész is vagyok vele, az átlagos
hiba már bőven 1 % alatt van, nekem ez már elég jó.

> Sol omnibus lucet.

Ezeket az együtthatókat kaptam:

A=-0.4026;
K=+1.4060;
B=+2.3345;
n=+0.9651;
M=-0.1812;
Q=+4.6784;

Kicsit nem szimmetrikus, no, de sebaj.

Aki tud jobbat az szóljon. A függvény folytonos kell hogy legyen,
ezt nem hangsúlyoztam az elején, bocsánat.

> Sol omnibus lucet.

jobbat? mi alapján? azt írtad 1% hibán belül van, ahhoz mi hogy közelítsünk? ;)