Magas szintű döntéstámogatás listából választáshoz inverz hiperbolikus szinusz korrekciójával

Hozzászólások

Kosz, hogy facebookra tetted - igy cserebe nem tudom elolvasni pedig erdekelne. Nem ertem mi ez a dolog manapsag, hogy lassan mar boltok, uzletek, vallakozasok is csak Faszbookon kommunikalnak :(

Publikus a bejegyzésem, de látom, hogy az alsó sávban mutat egy nagy úszó menüt, hogy jelentkezz be vagy regisztrálj a FB-ra. Ez elég unszimpatikus publikus megosztásoknál, lehetne sokkal kisebb. Ha valaki nem akar regisztrálni, akkor úgysem fog, ha meg igen, akkor kicsi gomb is több mint elég lenne. Úgyhogy egyetértek.

Bemásolom ide alább új válaszként.

Szerkesztve: 2022. 06. 23., cs – 13:49

Off: Nem túl kicsi számokra az inverz hiperbolikus szinusz kb azonos a logaritmussal:
ar sh(x) = ln(x+sqrt(x^2+1)) ≈ ln(2x)

Szerkesztve: 2022. 06. 23., cs – 20:05

Magas szintű döntéstámogatás listából választáshoz inverz hiperbolikus szinusz korrekciójával

Ha vásárolni szeretnénk egy terméket és hosszú listából kell választanunk, akkor a jobb döntés felé tudjuk terelni a vásárlást azzal, ha matematikailag pontozzuk a termékeket és a legmagasabb pontszámúak közül választunk. Az eljárásom képes megtalálni a jobb ár-érték arányú termékeket, figyelembe véve az összes elérhető tulajdonságot. Mindezt teljesen automatikus súlyozással, kompromisszumok nélkül!

Hogyan működik a gyakorlatban?

Ha be tudjuk szerezni a termék lista tulajdonságait egy Excel táblában, ahol soronként 1 termék van feltüntetve és az oszlopokban a számszerűsíthető tulajdonságok vannak, akkor a következő üres cellába kiszámolhatjuk mindegyik termék pontszámát és ez szerint csökkenő sorrendbe rendezhetjük. Máris kész a döntésünk megtámogatása, mely után elég szemezgetni a top listából a vásárláshoz. Erősen a jó döntés felé terel minket.

Ha nincs elérhető adat, akkor sok esetben megérheti begépelnünk, főleg ha drága eszközt szeretnénk vásárolni. Ha például több százezer forint értékű a termék, akkor 1 órás munkát igazán megérhet, mely alatt bőven felvihető 40-50 termék. Már ez is sokkal több mint a semmi.

Miért nem tudunk emberként sok terméket sok tulajdonsággal figyelembe venni?

Tekintsük az alábbi adatot. Tegyük fel, hogy ez egy bizonyos terméktípus listája és tegyük fel, hogy ez már egy szűrés az előzetes preferenciánk alapján. Tehát ez egy olyan halmaz, melyeknél már döntöttünk arról, hogy bizonyos tulajdonságok milyenek legyenek. A lista a fennmaradó tulajdonságokat tartalmazza, melyekből nem tudunk dönteni optimálisan. Például elektronikai eszközt vásárlunk és meghatároztuk, hogy ki legyen a gyártó és milyen költség keretben mozogjon. De a fennmaradó további termékek közüli választást nem tudjuk megúszni, ha optimális döntést keresünk.

Minden egyes sorban külön termék szerepel és az oszlopok a termékek tulajdonságait mutatják. Az első 5 oszlop pozitív tulajdonságot mutat, ahol a nagyobb érték jobb, az utolsó 3 pedig negatív tulajdonságot, melynél a kisebb érték jobb. Az utolsó oszlop pedig az ár.

Meg tudjuk mondani ránézésre, hogy mely termékek a jobbak ár-érték szempontjából? Tized annyi tudás fele árért rosszabbnak számít. Bármeddig ér nézni a listát

22 115 14 33 11 12 11 376687

51 24 21 33 20 11 15 252765

11 113 14 13 12 13 12 345273

60 16 10 25 20 10 11 123017

15 18 14 10 23 15 11 118964

10 12 13 14 16 33 77 133923

13 31 15 11 13 22 43 292756

12 22 41 20 23 70 11 158460

21 15 11 17 19 17 94 108082

17 24 21 15 44 12 18 486860

16 83 23 11 21 16 33 128926

106 13 22 10 15 28 29 338070

13 16 13 17 11 15 11 139521

40 14 11 16 14 13 12 136215

25 64 30 20 87 15 15 170686

11 15 27 18 49 14 15 118204

69 64 56 20 18 83 11 121279

16 11 136 10 36 51 42 115595

31 14 13 13 34 17 11 138284

23 45 12 16 13 11 15 397836

15 124 24 17 27 13 12 195010

19 11 46 11 17 34 12 104001

13 99 12 13 17 10 16 247022

22 20 16 11 14 26 24 230197

69 13 13 11 12 30 24 105507

19 37 19 15 17 75 12 512576

17 15 19 52 11 29 37 199014

12 37 76 25 13 15 14 247264

11 11 12 28 11 55 24 189339

10 14 19 13 154 15 23 230359

Még a közelébe sem tudunk kerülni az optimális döntésnek emberileg a szám tenger miatt. Mérhetetlen nagy a kombinációk száma az oszlopok és sorok között. Pedig csak 8 oszlopot és 30 sort látunk.

Ha 1 cellában az értéknek csak 10 lépésköze van, akkor 1 terméknél a lehetséges kombinációk száma 10 emelve a 8. hatványra a 8 oszlop miatt, vagyis 100 millió. A sorok közti összehasonlításnál pedig minden terméket minden termékkel vetünk össze 1-szer. Ennek száma négyzetes: n x ( n + 1 ) / 2, vagyis 30 x 31 / 2 = 465. Ez tovább szorozza az előzőt. A végeredmény 46 milliárd kombináció.

Ha 1 másodperc alatt tudnánk értelmezni 1 lehetséges kombinációt, akkor is 35 ezer évig tartana a döntés. És csak 30 termékről beszélünk, csak 8 tulajdonsággal és csak 10 lépésközű értékekkel. 100 terméknél és 100-as lépésközzel ez az idő 38 millió millió évre nő. A dupla „millió” szó nem elírás.

Utolsó oszlopként odatéve a pontszámot és ez alapján rendezve máris könnyű a döntés. Legfelül vannak a legjobb választások.

25 64 30 20 87 15 15 170686 85.06

69 64 56 20 18 83 11 121279 84.06

15 124 24 17 27 13 12 195010 83.88

51 24 21 33 20 11 15 252765 83.38

60 16 10 25 20 10 11 123017 83.24

22 115 14 33 11 12 11 376687 82.93

12 37 76 25 13 15 14 247264 82.72

11 15 27 18 49 14 15 118204 82.44

16 83 23 11 21 16 33 128926 82.01

31 14 13 13 34 17 11 138284 81.94

13 99 12 13 17 10 16 247022 81.83

10 14 19 13 154 15 23 230359 81.58

40 14 11 16 14 13 12 136215 81.54

17 24 21 15 44 12 18 486860 81.36

11 113 14 13 12 13 12 345273 81.29

15 18 14 10 23 15 11 118964 81.16

19 11 46 11 17 34 12 104001 81.12

12 22 41 20 23 70 11 158460 81.08

23 45 12 16 13 11 15 397836 81.04

16 11 136 10 36 51 42 115595 80.92

13 16 13 17 11 15 11 139521 80.46

69 13 13 11 12 30 24 105507 80.38

106 13 22 10 15 28 29 338070 80.18

17 15 19 52 11 29 37 199014 79.93

22 20 16 11 14 26 24 230197 79.39

19 37 19 15 17 75 12 512576 79.37

21 15 11 17 19 17 94 108082 79.24

13 31 15 11 13 22 43 292756 78.51

11 11 12 28 11 55 24 189339 77.95

10 12 13 14 16 33 77 133923 77.40

Hogyan tudjuk kiszámolni a pontszámot?

Az értékeket felszorozzuk 10^18 értékkel (1-es és 18 nulla utána), majd nullához elkezdjük hozzáadni vagy levonni ezen értékek inverz hiperbolikus szinuszát, függően attól hogy pozitív vagy negatív tulajdonság.

Miért működik az eljárás?

Mert az alap számításom mértani átlagra épül, ahol az értékeket össze szorozzuk, majd az n. gyökét vesszük. De mivel pontszámról van szó, így csak a sorrend számít végül, ezért nem kell vissza gyökölni, mert a gyök monoton növekvő függvény, mely nem változtat az értékek relatív sorrendjén. Tehát a termék tulajdonságok értékeinek sima összeszorzásáról van szó. Ez adja a pontszámot.

De ez általában túl nagy vagy túl kicsi érték is lehet, melyet nehéz kezelnünk emberileg. Ezért adja magát, hogy a logaritmusát vegyük, mert ez vissza húzza a számot a túl nagy és túl kicsi tartományból kezelhető intervallumba. És mivel szintén monoton növekvő függvény, így nem változtat a sorrenden.

De miért működik az értékek szorzata?

Mert a szorzás miatt teljesen függetlenül tudnak kombinálódni a tulajdonságok. Egy adott oszlopon belül meg tud jelenni egy független és így teljesen adaptív súlyozás a többi oszloptól függetlenül. Ráadásul ez miatt mértékegység függetlenné és így kompatibilissé válnak a különböző tulajdonságok. Összehasonlíthatóvá válik a súly a sebességgel, hosszúsággal, térfogattal vagy bármi mással.

Mindez azért működik, mert a szorzással egy N dimenziós téglalapot kapunk, melynek az élei lesznek a tulajdonságok értékei. És ennek a térfogatát használom fel. És mivel bármelyik él változása azonos mértékű változást okoz a térfogatban (hiába 1 kilométeres az egyik él, míg a másik 1 milliméteres, ha felére veszem az 1 milliméterest, a teljes térfogat felére csökken), ezért azonos súllyal lesz hatással a végeredményre mindegyik tulajdonság.

Miért kell logaritmus helyett inverz hiperbolikus szinusz (továbbiakban IHS)?

A szorzásnál nem lehet nulla vagy negatív semelyik érték, mivel azok torzítják a fenti térfogat működést. Ugyanígy nullának és negatívnak nem értelmezett a logaritmusa sem. De mi van ha mégis lesz ilyen értékünk? A megoldás teljességéhez ezt is figyelembe kell vennem, különben megoldhatatlan marad a döntés nullák és negatívok jelenlétében.

IHS nem más, mint a logaritmus függvény közelítő görbéje, mely a logaritmus végtelenbe elrobbanó negatív szárát lecsillapítja nullába.

https://en.wikipedia.org/.../Inverse_hyperbolic_functions...

IHS = ln( x + ( x^2 + 1 )^0.5 )

Látható, hogy a kettő aszimptotikusan egyenlő egymással, mivel a gyök alatti plusz 1-es érték a végtelenbe haladva egyre jelentéktelenebbé válik. És így IHS nem lesz más, mint ln( 2x ). Tehát a nagy számoknál ugyanúgy működik mint logaritmus, ezért ezeknél megkapjuk a kívánt log működését. És mivel IHS-nek van negatív tartományú értelmezése, ezért a negatív értékeket is tudja kezelni. A nullába csillapítás miatt pedig a nulla értékeket is. Nekem mindkettőjük tulajdonsága kell! Házasítani akarom.

Viszont van további probléma. Mivel a kis értékeknél lecsillapodik a görbe nullába, ezért sérül a szorzás és osztás működése és ezért logaritmikus tartományban nem válik összeadássá és kivonássá.

Hogyan tudom feloldani a problémát?

Kidolgoztam egy olyan kompromisszumos megoldást, mely egyesíti a logaritmus és IHS előnyeit, függetlenül a nullával való osztás megoldhatatlanságától. Mivel a kis értékeknél durván torzul a log működése, ezért a kis értékeket felnagyítom. Vagyis megszorzom egy nagy számmal. Mivel nagy számoknál eleve működik, ezért már a kis számoknál is fog, mert azok már nagy számok lesznek. Ezzel, ahogy a videóban is látható, megjelenik az IHS-nek is egy mínusz végtelen felé tartó aszimptotikus szára, mely az Y tengelyt közelíti. Csak úgy mint logaritmusnál. Viszont továbbra is át fog haladni az origón a negatív tartományba.

Ezzel azt értem el, hogy a kis értékeknél is működni fog a logaritmus, de át mehet nullába és negatívba is.

(A videóban 10-nek csak a 2. hatványával szorozva emelem meg a 18 helyett, hogy ne menjen ki a képernyőből és jobban látható legyen a mechanizmus.)

Milyen kis értékeket nagyítok fel és mekkorára?

Mivel aszimptotikusan egyenlő a log és az érték felének IHS-e, ezért megállapítom, hogy milyen kicsi érték mekkora hibát ad úgy, hogy kivonom IHS-ből log-ot, vagyis különbségüket veszem (itt „k” a korrekciós szorzó és „x” a minimum érték):

asinh( x / 2 * k ) - ln( x * k ) = limit

ln( x k / 2 + (( x k / 2 )^2 + 1 )^0.5 ) - ln( x k ) = limit

ln( ( x k / 2 + (( x k / 2 )^2 + 1 )^0.5 ) / ( x k ) ) = limit

ln( 1 / 2 + (( x k / 2 )^2 + 1 )^0.5 / ( x k ) ) = limit

1 / 2 + (( x k / 2 )^2 + 1 )^0.5 / ( x k ) = exp( limit )

Keresem „k” érték, melynél teljesül egy alacsony limit. Ehhez használok egy trükköt és a limit-et egyenlővé teszem a „x”-el, mert mindkettő kicsi alsó limitet jelöl.

1 / 2 + (( x k / 2 )^2 + 1 )^0.5 / ( x k ) = exp( x )

Egyenlet megoldása:

https://www.wolframalpha.com/input...

k = 1 / ( x ( exp( 2x ) - exp( x ) )^0.5 )

10-es kitevőben kifejezve:

log10( k ) = log10( 1 / ( x ( exp( 2x ) - exp( x ) )^0.5 ) )

Eredmény:

2 => 3

3 => 4.5

4 => 6

5 => 7.5

6 => 9

7 => 10.5

8 => 12

9 => 13.5

10 => 15

11 => 16.5

12 => 18

Látszik, hogy az arány körülbelül egy 1.5-es szorzó. Tehát ha a 10 mínusz 10-es hatványát akarom alsó limitnek, akkor 10 x 1.5 = 15, vagyis 10-nek a 15. hatványával kell szoroznom az IHS-en belüli érték felét. Ezért a korrekciós szorzó az értékeink között előfordulható legkisebb érték nagyságától függ:

k = 10^( -log10( x_min ) * 1.5 )

k = 10^( -log10( x_min ))^1.5

k = x_min^-1^1.5

k = x_min^-1.5

Mivel IHS tartalmazhaz negatív értékeket is és én a nullához minél közelebb értéket keresem x_min változóval, ezért az abszolút értékét veszem még.

Tehát a végső pontozásos egyenlet:

Score = Summa( asinh( x_i * |x_min|^-1.5 ))

Mivel „bármilyen” nagy korrekciós szorzó választása sem robbantja el a végső pontszám értékét a logaritmikus tulajdonság miatt, ezért a 10-nek 18. hatványa gyakorlati szempontból praktikus választás lehet, mert ez azt jelenti, hogy a legkisebb értékünknek mínusz 12. hatványt tekintjük, ami ezer milliárdos nagyságrend reciproka. Ilyen kicsi értékkel nem nagyon dolgozunk a gyakorlatban.

Az IHS-en belüli kettővel osztás pedig elhagyható, mert a pontszámok relatív sorrendje számít csak, így ez nem befolyásolja az eredményt.

A videóban szereplő eljárás GeoGebra linkje:

https://www.geogebra.org/graphing/ubzeq8bv

YouTube videó linkje:

https://youtu.be/MLSYaEel_V8