Telefon pontozás matematikailag

Sziasztok, ha valakinek időt spórol és segítek vele, akkor használjátok a listám egészséggel. Leprogramoztam a forgalmazók PDF-jeiből a telefon név és ár kiparsolását, majd ezek alapján a GSMArena oldalról a speckók behúzását, majd pontozását. Manuálisan rengeteg munka lenne.

https://www.facebook.com/andras.horvath.940098/posts/2133101146865603

Hozzászólások

Mi a lista végén az a nagyon drága MM? még sosem hallottam ilyen telefonról.

“Any book worth banning is a book worth reading.”

A telefonok tartósságga nincs pontozva, így pont az árérzékeny emberek tudják megszívni a legjobban pl. a Huawei 2 év után felpúposodó akkumlátorai miatt, stb. Sokszor a legolcsóbb lesz a legrdrágább...

Amúgy köszi a listát a technikai specifikációkról, sok időt elvesz, ha neki kell állni keresgélni.

Megdöbbentő, hogy szinte csak az Apple-nek vannak pingpongutőnél kisebb telefonjai...

Igen, mindkettőtök javaslata tetszik és nagyon jó lenne sokkal több ilyen hasznos változó. Kíváncsi lennék úgy az eredményre. Csak ahogy írtátok, nehézkes és kérdőjeles a karbantarthatósága. Illetve minden egyes készülék típushoz elérhetőnek kell lenni az infónak, különben nem számolható a pontszám megfelelően.

A fentinél is volt több nehezítés, ugyanis a GSMArena oldal nem mindig hoz találatot akkor már, ha például szerepel az "5G" vagy "4G" vagy egyéb extra kifejezés a névben. Ezért sok egyedi név bejegyzést kell átalakítanom automatikusan. Például kivenni a 16+128G kifejezésnél a "16+" mintát stb. Továbbá a GSMArena találata hozhat több tár méretet egy telefonhoz, pl 32G 64G 128G, és ezek közül is automatikusan kell választatnom a PDF-ben szereplő név alapján. De azt is úgy, hogy jól válassza ki a névből a tárhely méretét, ha van ilyen. Ha nincs, azt is kezelni kell.

Illetve nem strukturáltak a PDF-ek, hanem pdftotext megoldással kell trükköznöm. Elég komplikált, így már a fenti tiszta eredményt is jónak találtam.

Mivel a fenti lista nagy része már kész, így nem annyira nehéz beletenni egy részébe extra változót kézzel, és így már talán nem annyira sok idő. El tudok képzelni egy ilyen manuális utómunkát, ha van megbízható és objektív forrás a változók értékének megállapításához. Csupán az érték log-ját kell hozzáadni vagy levonni a pontszámból, attól függően, hogy pozitív vagy negatív tulajdonság-e.

Még minőségibb rálátást adna.

Szerkesztve: 2022. 01. 12., sze – 10:23

A pontszám pontosan hogy van kiszámitva? Az iphonok azért vannak legalul mert bár jók a vélemények de drága?

Amúgy a listád fajin csak hát az van hogy a spec lista csak egy dolog. Ezen kivül ott van egy csomó nehezen vagy sehogy sem mérhető jellemző (fizikai tartósság, szoftveres jellemzők).

Például hogy mennyire van undoritóan összepancsolva a gyári szoftver egy nehezen mérhető de igen fontos androidos jellemző. Egy Pixelt még a kezembe is vennék, de sok mást nem.

És hiába hozza le a csillagos eget nekem valamelyik noname szutyok, biztos nem venném meg.

A pontszám a megadott változók alapján súlyoz. Ezek alapján az iPhone lejjebb kerül (ugyanazon speckókat drágábban adja).

Amúgy egyetértek. Viszont a lista úgy is jó, hogy egy számodra preferált alhalmazra alkalmazod. Például rászűrsz az Excel-re gyártó, ár intervallum, memória stb alapján. Mert ugye amíg ez a halmazod nem egyetlen termékből áll, addig továbbra is dönteni kell. Nem megúszható. És ebben segíthet a pontszámom, mert a jobb döntés felé terel.

A számítás nagyon elegáns és relatíve egyszerű. Amikor pontszámot akarunk képezni, akkor nem megfelelő az aritmetikai és súlyozott átlag. Elsősorban azért, mert a domain-je az összeadás, és ezért a relatíve nagyobb értékek fogják dominálni az eredményt. Akkor is ha normalizálód a változók intervallumát mondjuk 0 és 1 közé. Illetve a súlyok mértéke sem eldönthető megfelelően. Torzítani fognak ezek az átlagok.

Ezzel szemben a mértani átlag (geometric mean) rendkívül erős, ugyanis szorzásból áll. Ezzel egy N dimenziójú téglatest térfogatát számítja ki, melyet vissza gyökölünk (annyiadik gyökkel, amennyi érték van). A téglatest élei jelentik a változókat. És bármekkora változás bármelyik élnél ugyanakkora hatással van a térfogatra. Mindezt azért, hogy mindegyik változó alapján azonos súlyozásra tudjon kerülni a végeredmény. Például egy 3 dimenziós téglatestnél 2 él 1 mm, a másik pedig 1 milliárd km. Ha az 1 mm-es élet veszed felére, akkor is feleződni fog a térfogat.

Tehát mértékegység függetlenül tudja kezelni az értékeket a szorzás miatt, és így azonos unit-ba hozza őket. Van viszont pár probléma vele.

Nulla érték nem szerepelhet az értékek között, illetve negatív értéket sem kezel jól. Továbbá a túl kicsi és túl nagy értékek elrobbantják nulla vagy pozitív irányba az eredményt, és ezért nehéz számolni vele néha, főleg komplexabb számításoknál.

Ha log domainbe helyezzük az egészet, akkor egyből kezelhető lesz. Ugyanis a log a hatványból szorzást, a szorzásból pedig összeadást csinál. És a nagy értékeket is vissza húzza kezelhető range-be. Ezért rendkívül jól kezelhetővé válik, mert kis értékeket kell, ráadásul összeadnunk, nem pedig szoroznunk.

Mértani átlag = PI( xi )^(1/n) = ( x1 * x2 * ... * xn )^(1/n)

Ezt log-olva, majd később exponenciálisan vissza emelve (mely így ugyanazt az eredményt adja az inverz művelet miatt):

exp( ln( ( x1 * x2 * .. * xn )^(1/n) )) =

exp( 1/n * ln ( x1 * x2 * ... )) =

exp( 1/n * ( ln(x1) + ln(x2) + ... ))

Mivel az exp szigorúan monoton függvény, ezért ha elhagyjuk, az nem változtatja meg a sorrendet. Illetve az n-el való osztást is elhagyhatjuk, mert az sem változtat a sorrenden. Sőt, ha bármelyik változó értékét osztjuk vagy szorozzuk bármekkora konstanssal, az sem változtat a végső pontszámok sorrendjén. Ezért remek tulajdonsága van.

Tehát a pontszám számítása végül, mely kis range-ben marad és kezelhető is:

SUMMA( ln(xi) )

Viszont lehet olyan, hogy van nulla vagy negatív érték is a változók között. Ehhez inverz hiperbolikus szinusz-t javaslok (sinh^-1), mely aszimptotikusan egyenlő log-gal a következők miatt. Nem olyan tökéletes eredményt ad, de több mint jót:

log(2x) ~ sinh^-1(x)

sinh^-1(x) = log( x + (x^2+1)^(1/2) ), melynél a +1 értéke aszimptotikusan csökken ahogy x értéke nő, mert x-et négyzetre emeljük és vissza gyököljük, tehát sinh^-1(x) az aszimptotikusan egyenlő log(2x)-el, ahol a 2-es szorzó a fentiek miatt szintén elhagyható. Tehát a másik pontszámozási eljárás végül:

SUMMA( sinh^-1(xi) ) = asinh(x1) + asinh(x2) + ... + asinh(xn)

Preferált a log megoldás.

Kiegészítés: a fenti megoldásnál is lehet változtatni a súlyozáson. Mivel a log szorzást csinál a hatványból, ezért csupán egy értékkel kell szorozni az adott változó logját:

ln( x^n ) = n * ln(x)

Részemről duplán súlyozom az árat. Más változtatást viszont nem alkalmazok, hogy minél egyszerűbben és generalizáltabban tartsam a megoldást. Ellenkező esetben szubjektivitást vinnék be a rendszerbe, melyek paramétereit szintén meg kellene határozni. Majd az azt meghatározó eljárást és annak paramétereit. Ez nem megúszható.

Az ár értéket leosztom még 1000-el, ugyanis ez nem folyásolja be a pontszámok sorrendjét. Viszont nem megy így le negatívba egyik pontszám sem, hanem pozitív range-ben kapjuk. A negatívval sincs semmi probléma, ugyanis a pontszámok nem önmagukban, hanem csakis egymáshoz képest értelmezendők. Ez csupán olvashatóságot segít.

Itt egy grafikon az iPhone-ok áraival, ahol balról jobbra csökken a pontszámuk. Látszik hogy leginkább a drágább készülékek hoznak jobb paramétereket arányaiban. Megnéztem és 70%-os a Pearson korreláció.

https://i.imgur.com/gcjzArW.png

( Y tengely az ár, X tengely értékei pedig csak sorszámok, nem a pontszám. )

A folytatáshoz be kell jelentkezned.

Pedig érdekes lehet...

Ott a hiba, hogy az inkognitó csak a nem inkognitót választja le, viszont másik inkognitók átjárhatók. Tehát másik ink. ablakban lévő session-öd és a sütik látszódnak egy új ink. ablakból. Ez eseteben vagy zárd be az összes ink. ablakot, vagy egy másik típusú böngésző ink. ablakában nyisd meg a linket.