A Support Vector Machines (SVM) egy hatékony, felügyelt tanulási algoritmus, amelyet osztályozási és regressziós feladatokhoz használnak. Az SVM elsődleges célja, hogy megtalálja azt az optimális hipersíkot, amely a legjobban elválasztja a különböző osztályok adatpontjait egy nagy dimenziós térben. Egy jellemzőkészlet besorolása az SVM-ben szorosan kötődik a döntési függvényhez, különösen annak előjeléhez, amely fontos szerepet játszik annak meghatározásában, hogy egy adott adatpont a hipersík melyik oldalára esik.
Döntési funkció az SVM-ben
Az SVM döntési funkciója a következőképpen fejezhető ki:
ahol:
- a súlyvektor, amely meghatározza a hipersík tájolását.
- az osztályozás alatt álló adatpont jellemzővektora.
- az a torzítási tag, amely eltolja a hipersíkot.
Adatpont osztályozása , a döntési függvény jelét használjuk:
Ez a jel határozza meg a hipersík azon oldalát, amelyen az adatpont található.
A bejelentkezés szerepe az osztályozásban
A döntési függvény jele () közvetlenül határozza meg az adatponthoz rendelt osztálycímkét
. Így működik:
1. Pozitív jel: Ha , a döntési függvény előjele pozitív. Ez azt jelenti, hogy az adatpont
a hipersík azon oldalán fekszik, ahol a pozitív osztály található. Ebből adódóan,
a pozitív osztályba tartozik (általában +1 jelöléssel).
2. Negatív jel: Ha , a döntési függvény előjele negatív. Ez azt jelzi, hogy az adatpont
a hipersík azon oldalán fekszik, ahol a negatív osztály található. Ennélfogva,
a negatív osztályba tartozik (általában -1 jelöléssel).
3. Nulla: Abban a ritka esetben, ahol , az adatpont
pontosan a hipersíkon fekszik. Ez a forgatókönyv elméletileg lehetséges, de gyakorlatilag ritka a valós értékű adatok folyamatos jellege miatt.
Geometriai értelmezés
A döntési függvény geometriai értelmezése elengedhetetlen annak megértéséhez, hogy az SVM-ek hogyan osztályozzák az adatpontokat. által meghatározott hipersík döntési határként működik a két osztály között. Ennek a hipersíknak az orientációját és helyzetét a súlyvektor határozza meg
és az elfogultság kifejezés
.
1. Margó: A margó a hipersík és az egyes osztályok legközelebbi adatpontjai közötti távolság. Az SVM célja ennek a margónak a maximalizálása annak biztosítása érdekében, hogy a hipersík ne csak az osztályokat válassza el, hanem a lehető legnagyobb távolságra tegye ezt a legközelebbi adatpontoktól. Ezeket a legközelebbi adatpontokat támogató vektoroknak nevezzük.
2. Támogatja a vektorokat: A támaszvektorok a hipersíkhoz legközelebb eső adatpontok. Ezek kritikusak a hipersík helyzetének és orientációjának meghatározásában. Ezen támaszvektorok helyzetének bármilyen változása megváltoztatná a hipersíkot.
Példa
Vegyünk egy egyszerű példát, ahol van egy kétdimenziós jellemzőterünk két osztály adatpontjaival. Jelöljük a pozitív osztályt +1-gyel, a negatív osztályt pedig -1-gyel. Tegyük fel a súlyvektort és az elfogultság kifejezés
.
Egy adatponthoz , a döntési függvényt a következőképpen számíthatjuk ki:
Óta , a döntési függvény előjele pozitív, és így az adatpont
pozitív osztályba (+1) tartozik.
Egy másik adatponthoz , a döntési függvényt a következőképpen számítjuk ki:
Ismét, , tehát az előjel pozitív, és
pozitív osztályba (+1) tartozik.
Most vegyünk egy adatpontot :
Ebben az esetben, , tehát az előjel negatív, és
negatív osztályba (-1) tartozik.
Matematikai megfogalmazás
Az SVM matematikai megfogalmazása magában foglalja egy optimalizálási probléma megoldását az optimális megtalálásához és a
amelyek maximalizálják a margót, miközben helyesen osztályozzák a képzési adatokat. Az optimalizálási probléma a következőképpen fejezhető ki:
ahol az adatpont osztálycímkéje
, és a megszorítás biztosítja, hogy minden adatpont helyesen legyen besorolva legalább 1-es margóval.
Kernel trükk
Sok gyakorlati alkalmazásban előfordulhat, hogy az adatok nem lineárisan elkülöníthetők az eredeti jellemzőtérben. Ennek megoldására az SVM-eket a kerneltrükk segítségével kiterjeszthetjük nemlineáris osztályozásra. Egy kernel függvény implicit módon leképezi az adatokat egy magasabb dimenziós térbe, ahol lehetséges a lineáris elválasztás. Az általánosan használt kernelfüggvények közé tartozik a polinomiális kernel, a radiális bázisfüggvény (RBF) kernel és a szigmoid kernel.
A kernelizált SVM döntési függvénye a következő lesz:
ahol az optimalizálási probléma kettős alakjából kapott Lagrange-szorzók.
Python megvalósítás
A Pythonban a "scikit-learn" könyvtár az SVC egyszerű megvalósítását biztosítja az "SVC" osztályon keresztül. Az alábbiakban egy példa látható az SVC használatával egy adatkészlet osztályozására:
python from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics import accuracy_score # Load the dataset iris = datasets.load_iris() X = iris.data y = iris.target # Select only two classes for binary classification X = X[y != 2] y = y[y != 2] # Split the dataset into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Create an SVM classifier with a linear kernel clf = SVC(kernel='linear') # Train the classifier clf.fit(X_train, y_train) # Predict the class labels for the test set y_pred = clf.predict(X_test) # Calculate the accuracy of the classifier accuracy = accuracy_score(y_test, y_pred) print(f'Accuracy: {accuracy * 100:.2f}%')
Ebben a példában az "SVC" osztályt egy lineáris kernellel rendelkező SVM osztályozó létrehozására használjuk. Az osztályozót a tanító halmazon betanítják, a pontosságot pedig a tesztkészleten értékelik. Az SVM-ben egy jellemzőkészlet besorolása alapvetően a döntési függvény előjelétől függ. . Az előjel meghatározza, hogy a hipersík melyik oldalán található egy adatpont, ezáltal hozzárendeli a megfelelő osztályhoz. A döntési függvény, az optimális hipersík megtalálását célzó optimalizálási folyamat és a kernelfüggvények lehetséges használata a nemlineáris elválaszthatóság kezelésére mind fontos összetevői az SVM-eknek. Ezen szempontok megértése átfogó képet nyújt az SVM-ek működéséről és alkalmazásukról a különböző gépi tanulási feladatokban.
További friss kérdések és válaszok ezzel kapcsolatban EITC/AI/MLP gépi tanulás Python-nal:
- Hogyan számítják ki a b paramétert a lineáris regresszióban (a legjobban illeszkedő egyenes y-metszete)?
- Milyen szerepet játszanak a támogató vektorok az SVM döntési határának meghatározásában, és hogyan azonosíthatók be a képzési folyamat során?
- Az SVM optimalizálásával összefüggésben mi a jelentősége a "w" súlyvektornak és a "b" torzításnak, és hogyan határozhatók meg?
- Mi a `visualize` metódus célja egy SVM implementációban, és hogyan segít megérteni a modell teljesítményét?
- Hogyan határozza meg a "predict" metódus egy SVM implementációban egy új adatpont besorolását?
- Mi a Support Vector Machine (SVM) elsődleges célja a gépi tanulással összefüggésben?
- Hogyan használhatók az olyan könyvtárak, mint a scikit-learn az SVM osztályozás megvalósítására Pythonban, és melyek a kulcsfontosságú funkciók?
- Magyarázza meg a megszorítás (y_i (mathbf{x}_i cdot mathbf{w} + b) geq 1) jelentőségét az SVM optimalizálásban.
- Mi az SVM optimalizálási probléma célja, és hogyan fogalmazható meg matematikailag?
- Mi a szerepe a hipersík egyenletnek (mathbf{x} cdot mathbf{w} + b = 0) a Support Vector Machines (SVM) kontextusában?
Tekintse meg a további kérdéseket és válaszokat az EITC/AI/MLP gépi tanulás Python segítségével