Ezt meg lehet oldani a következőképpen, kalsszifikátorral?
Tegyük fel, hogy egy üvegről meg akarom mondani, hogy sörös üveg vagy sem.
Gyűjtenék néhány pozitív és negatív mintát. Minden mintáról levenném az adatokat: pl. szín (számadatban kifejezve), max átmérő és a terület 2d-ben. Mindegyik minta egy pont lenne egy 3 dimenziós térben ahol a tengelyek az adatok (szín, átmérő és terület). Kéne legyen egy felület ami a pozitív és a negatív adatot elhatárolja egymástól. Namostmár ha ismerem ezt a függvényt akkor egy ismeretlen üveg adatait megadva attól függően, hogy a felület melyik oldalára esik, meg tudom mondani, hogy sörös üveg vagy sem.
Ez így elméletileg működik? Túl egyszerűnek hangzik, hol a bukkanó?
Az általad megadotthoz képest jóval több különböző tulajdonság alapján határozható meg, hogy egy adott üveg sörösüveg-e, avagy sem. Például ANN használatával elméletileg implementálható a vázolt osztályozó szoftver, azonban nem szabad elfelejteni, hogy gyakran még te magad sem vagy képes hibátlanul beazonosítani egy sörösüveget. Van olyan palack, amelyet összetéveszthetsz egy sörösüveggel, és van olyan, kevésbé tipikus sörösüveg, amelyről elsőre nem mondanád meg, hogy az.
Hány féle sörösüveg is van? Mely tulajdonságok alapján állapítható meg, hogy sörösüveg-e? Színe? Alakja (itt bizony nem elég csak az átmérő és a vetület)? Térfogata? Mi van a csatos üvegekkel? Coronita? Gyűrűs kupak? A címke - ha van - saját tulajdonságai? A packon található domború jelölések? Melyik tényező mekkora súllyal billenti az IGEN, vagy épp a NEM irányába a mérleg nyelvét? Ha mondjuk képfelvételről akarod beazonosítani, a térbeli elhelyezkedést hogyan ellensúlyozod?
Még mindig túl egyszerű? Biztos lehetsz benne, hogy van még olyan faktor, ami nem jutott eszembe.
Hagyományos algoritmusról ezesetben nehézkes beszélni. Használhatsz neurális hálót, vagy genetikus algoritmust a célra.
Utóbbi esetben sorraveszed a palack tulajdonságait, voltaképpen annyit, amennyit csak lehetséges.
Minden tulajdonsághoz tartozik egy súly, amely megmondja, mekkora befolyással van az adott tulajdonság a végeredményre.
A megfelelő súlyokat egy genetikus algoritmus fogja voltaképpen kikísérletezni. A fitness érték lehet egy adott sorozat esetén az a mérőszám, amely megmondja, hogy a beállított súlyok hány százalékban eredményeztek helyes választ. A végeredményként kapott súlysorozatot a fent leírt egyszerű vizsgálatra alkalmazva (tehát végigiterálsz a vizsgált tulajdonságokon, mértéküket pedig megszorzod a hozzájuk tartozó súllyal), a programod képes lehet ez bizonyos pontossággal tetszőleges palackról megállapítani, hogy sörösüveg-e.
Bővebb információért megtekintheted péládul az alábbi linken található oldalt, vagy guglizhatsz az igényeidnek megfelelőbb leírást.
"Minden tulajdonsághoz tartozik egy súly, amely megmondja, mekkora befolyással van az adott tulajdonság a végeredményre."
Upsz! :)
Minden tulajdonsághoz tartozik egy súly, amely megmondja, mekkora ÉS MILYEN IRÁNYÚ befolyással van az adott tulajdonság a végeredményre.
Amit te leírtál pontosan annyit csinál, mint egy lineáris SVM (support vector machine) vagy egy logisztikai regresszió. Mindegyik tulajdonság egy dimenziót jelent, és a súlyzó megszorozva a hozzátartozó tulajdonsággal adja a hipersík egyenletét.
"végigiterálsz a vizsgált tulajdonságokon, mértéküket pedig megszorzod a hozzájuk tartozó súllyal"
Magyarul behelyettesítem a vizsgálandó üvegem adatait a hipersík egyenletébe, az ha negatív számot eredményez akkor sörösüveg ha pozitívat akkor nem...vagy fordítva.
A genetikus algoritmus optimum keresésre alkalmas, de lassú és csak konvergál a megoldás fele.
Áh, a jó öreg egyetem :)
Gyorsan felejtsd el, hogy mindent egyenlettel, vagy egyáltalán matekkal oldj meg. Ha valamit le szeretnél modellezni, akkor gondolkozz absztrakciókban, tulajdonságokban, állapotokban és viselkedésekben.
Ha osztályozni szeretnél valamit, akkor leginkább a tulajdonságok érdekesek. Abszolút jó felé tapogatózol, de ne akarj mindig csak a matekra építkezni, mert az többet fog ártani, mint használni. Mindent le lehet matematikailag modellezni, persze, de ez nem feltétlenül jelenti azt, hogy érdemes. Fejben megmaradhat ez a fajta reprezentáció, sőt, számos olyan probléma adódik, ahol elengedhetetlen, de kódban még véletlenül sem állja meg a helyét. Feltételezve, hogy programozónak készülsz, Neked elsősorban fejlesztőként kell gondolkoznod, nem pedig matematikusként.
Mindenesetre, ez a fájlocska közelebb vihet a megoldáshoz:
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!