Ebben a cikkben megtudhatja, SVM vagy Support Vector Machine, ami az egyik legnépszerűbb AI algoritmusok (ez az egyik top 10-AI algoritmusok), valamint arról, hogy a Kernel Trükk, amely foglalkozik a nem-linearitás, valamint a magasabb dimenziók., Megérintjük témák, mint a hyperplanes, Lagrange szorzók, mi lesz vizuális példák és kód példák (hasonló a kód példa használt KNN fejezet), hogy jobban megértsük ezt a nagyon fontos algoritmus.
SVM Explained
A Support Vector Machine egy felügyelt tanulási algoritmus, amelyet többnyire osztályozáshoz használnak, de regresszióhoz is használható. A fő ötlet az, hogy a jelzett adatok (képzési adatok) alapján az algoritmus megpróbálja megtalálni az optimális hiperplántot, amely új adatpontok osztályozására használható. Két dimenzióban a hyperplane egy egyszerű vonal.,
általában egy tanulási algoritmus megpróbálja megtanulni egy osztály leggyakoribb jellemzőit (ami megkülönbözteti az egyik osztályt a másiktól), a besorolás pedig a tanult reprezentatív jellemzőkön alapul (tehát az osztályozás az osztályok közötti különbségeken alapul). Az SVM fordítva működik. Megtalálja a leginkább hasonló példákat az osztályok között. Ezek lesznek a támogató Vektorok.
mint például, lehetővé teszi, hogy fontolja meg a két osztály, alma, citrom.,
más algoritmusok megtanulják az alma és a citrom legnyilvánvalóbb, legjellemzőbb tulajdonságait, mint például az alma zöld és lekerekített, míg a citrom sárga és elliptikus.
ezzel szemben az SVM olyan almákat keres, amelyek nagyon hasonlítanak a citromra, például a sárga és elliptikus formájú almákra. Ez egy támogató vektor lesz. A másik támogató vektor egy Almához hasonló citrom (zöld és lekerekített) lesz. Tehát más algoritmusok megtanulják a különbségeket, miközben az SVM megtanulja a hasonlóságokat.,
Ha megjelenítjük a fenti példa 2D-ben, akkor lesz valami, mint ez:
Ahogy haladunk, balról jobbra, a példák kell besorolni, mint az alma, amíg el nem érjük a sárga alma. Ettől a ponttól kezdve az a bizalom, hogy egy új példa az alma, csökken, miközben a citrom osztály bizalma nő., Amikor a citrom osztály magabiztossága nagyobb lesz, mint az alma osztály bizalma, az új példákat citromnak kell besorolni (valahol a sárga alma és a zöld citrom között).
Ezen támogató Vektorok alapján az algoritmus megpróbálja megtalálni a legjobb hiperplántot, amely elválasztja az osztályokat. 2D-ben a hyperplane egy sort, így fog kinézni:
Ok, de miért rajzoltam a kék határa, mint a fenti képen?, Én is léptem át a határt, mint ez:
Mint látható, nálunk a lehetőségek száma végtelen felhívni a határozat határ. Szóval hogyan találjuk meg az optimálisat?
az optimális Hiperplán megtalálása
intuitív módon a legjobb vonal az a vonal, amely messze van mind az alma, mind a citrom példáitól (a legnagyobb margóval rendelkezik)., Az optimális megoldás érdekében mindkét módon maximalizálnunk kell a margót (ha több osztályunk van, akkor maximalizálnunk kell az egyes osztályok figyelembevételével).
Szóval, ha összehasonlítjuk a fenti képen, a kép alatt, könnyen megfigyelhetjük, hogy az első az optimális hyperplane (a vonal), a második pedig egy szub-optimális megoldás, mert a különbözet jóval rövidebb.,
Mert azt akarjuk, hogy maximalizálja a margók veszi figyelembe, csak az osztályok, ahelyett, hogy egy margó minden osztály, használjuk a “globális” margin, amely veszi figyelembe az összes osztályt., Ezt a különbözetet úgy nézne ki, mint a lila vonal a következő kép:
Ez a különbözet merőleges a határ pedig egyenlő távolságra, hogy a támogatás vektorok.
tehát hol vannak Vektorok? Minden számítást (távolság és optimális hiperplánok kiszámítása) vektoros térben végzünk, így minden adatpontot vektornak tekintünk. A tér dimenzióját a példák attribútumainak száma határozza meg., Ahhoz, hogy megértsük a matematikai mögött, kérjük, olvassa el ezt a rövid matematikai leírása Vektorok, hiperplánok és optimalizációk: SVM tömören.
összességében a support Vektorok olyan adatpontok, amelyek meghatározzák a hiperplán helyzetét és margóját. “Támogató” vektoroknak nevezzük őket, mivel ezek az osztályok reprezentatív adatpontjai, ha az egyiket mozgatjuk, a pozíció és/vagy a margó megváltozik. Más adatpontok mozgatása nem lesz hatással a margóra vagy a hiperplán helyzetére.,
az osztályozáshoz Nincs szükségünk az összes képzési adatpontra (mint például a KNN esetében), csak a támogató vektorokat kell mentenünk. A legrosszabb esetben az összes pont támogatja a vektorokat, de ez nagyon ritka, ha ez megtörténik, akkor ellenőrizze a modell hibáit vagy hibáit.
tehát alapvetően a tanulás egyenértékű a hyperplane megtalálásával a legjobb margóval, tehát ez egy egyszerű optimalizálási probléma.,/h2>
Az alapvető lépéseket az SVM a következők:
válassza ki a két hyperplanes (2D), amely elválasztja az adatok nem pont között (piros vonalak)
maximalizálják a távolság (a margó)
az átlagos vonal (itt a vonal között félúton van a két piros vonal) majd a döntést határ
Ez nagyon szép lassan, de hogy a legjobb margó, a optimalizálási probléma nem triviális (könnyű 2D-ben, amikor már csak két attribútumok, de mi van, ha a N méretek N egy nagyon nagy szám)
megoldani az optimalizálási probléma, használjuk a Lagrange Multiplikátorok., Ahhoz, hogy megértsük ezt a technikát, akkor olvassa el a következő két cikket: kettősség Langrange szorzó és egy egyszerű magyarázat, hogy miért Langrange szorzók Wroks.
eddig lineárisan elválasztható adatok voltak, így egy sort osztályhatárként használhatunk. De mi van, ha nem lineáris adatkészletekkel kell foglalkoznunk?,
SVM a Nem-Lineáris adatsorok
Egy példa a nem-lineáris adatok:
Ebben az esetben nem tudunk találni egy egyenes vonal külön alma a citrom. Tehát hogyan tudjuk megoldani ezt a problémát. A Kernel trükköt fogjuk használni!
Az alapötlet az, hogy amikor egy adatkészlet elválaszthatatlan az aktuális dimenziókban, adjon hozzá egy másik dimenziót, talán így az adatok elválaszthatók lesznek., Gondolj csak bele, a fenti példa 2D-ben van, és elválaszthatatlan, de talán 3D-ben van különbség az alma és a citrom között, talán van egy szintkülönbség, tehát a citrom az első szinten van, a citrom pedig a második szinten van. Ebben az esetben az 1-es és a 2-es szint között könnyen rajzolhatunk egy elválasztó hiperplántot (3D-ben egy hiperplán egy sík).
magasabb dimenziók leképezése
a probléma megoldásához nem szabad csak vakon hozzáadni egy másik dimenziót, át kell alakítanunk a teret, hogy szándékosan generáljuk ezt a szintkülönbséget.,
leképezés 2D-ről 3D-re
feltételezzük, hogy hozzáadunk egy másik X3 nevű dimenziót. Egy másik fontos átalakulás az, hogy az új dimenzióban a pontokat az X12 + x22 képlet segítségével szervezik.
Ha az x2 + y2 képlet által meghatározott síkot ábrázoljuk, akkor valami ilyesmit kapunk: