Support Vector Machines (SVM) jsou výkonný algoritmus učení pod dohledem používaný pro klasifikační a regresní úlohy. Primárním cílem SVM je najít optimální nadrovinu, která nejlépe odděluje datové body různých tříd ve vysokorozměrném prostoru. Klasifikace sady prvků v SVM je hluboce svázána s rozhodovací funkcí, zejména jejím znaménkem, které hraje důležitou roli při určování, na kterou stranu nadroviny daný datový bod spadá.
Rozhodovací funkce v SVM
Rozhodovací funkce pro SVM může být vyjádřena jako:
kde:
- je hmotnostní vektor, který definuje orientaci nadroviny.
- je vektor příznaků klasifikovaného datového bodu.
- je termín zkreslení, který posouvá nadrovinu.
Pro klasifikaci datového bodu , používá se znaménko rozhodovací funkce:
Tento znak určuje stranu nadroviny, na které leží datový bod.
Role znaku v klasifikaci
Znak rozhodovací funkce () přímo určuje označení třídy přiřazené datovému bodu
. Funguje to takto:
1. Pozitivní Znamení: Pokud , znaménko rozhodovací funkce je kladné. To znamená, že datový bod
leží na té straně nadroviny, kde se nachází kladná třída. Proto,
je klasifikován jako patřící do pozitivní třídy (obvykle se označuje jako +1).
2. Negativní znak: Pokud , znaménko rozhodovací funkce je záporné. To znamená, že datový bod
leží na straně nadroviny, kde se nachází negativní třída. Proto,
je klasifikován jako patřící do negativní třídy (obvykle se označuje jako -1).
3. Nulu: Ve vzácném případě, kdy , datový bod
leží přesně v nadrovině. Tento scénář je teoreticky možný, ale prakticky vzácný kvůli nepřetržité povaze reálných dat.
Geometrická interpretace
Geometrický výklad rozhodovací funkce je nezbytný pro pochopení toho, jak SVM klasifikují datové body. Nadrovina definovaná pomocí působí jako rozhodovací hranice mezi těmito dvěma třídami. Orientace a poloha této nadroviny jsou určeny hmotnostním vektorem
a termín zkreslení
.
1. Okraj: Okraj je vzdálenost mezi nadrovinou a nejbližšími datovými body z každé třídy. Cílem SVM je maximalizovat tuto rezervu, aby bylo zajištěno, že nadrovina nejen odděluje třídy, ale činí tak s největší možnou vzdáleností od nejbližších datových bodů. Tyto nejbližší datové body jsou známé jako podpůrné vektory.
2. Podporujte vektory: Podpůrné vektory jsou datové body, které leží nejblíže k nadrovině. Jsou rozhodující při definování polohy a orientace nadroviny. Jakákoli změna polohy těchto podpůrných vektorů by změnila nadrovinu.
Příklad
Zvažte jednoduchý příklad, kde máme dvourozměrný prostor prvků s datovými body ze dvou tříd. Označme kladnou třídu +1 a zápornou -1. Předpokládejme vektor hmotnosti a termín zkreslení
.
Pro datový bod , můžeme spočítat rozhodovací funkci takto:
Od , znaménko rozhodovací funkce je kladné, a tedy datový bod
je klasifikován jako patřící do pozitivní třídy (+1).
Pro jiný datový bod , vypočítáme rozhodovací funkci jako:
Opět platí, že , takže znaménko je kladné a
je klasifikován jako patřící do pozitivní třídy (+1).
Nyní zvažte datový bod :
V tomto případě, , takže znaménko je záporné a
je klasifikován jako patřící do negativní třídy (-1).
Matematická formulace
Matematická formulace SVM zahrnuje řešení optimalizačního problému k nalezení optimálního si
které maximalizují rezervu při správné klasifikaci trénovacích dat. Optimalizační problém lze vyjádřit takto:
kde je označení třídy datového bodu
a omezení zajišťuje, že všechny datové body jsou správně klasifikovány s okrajem alespoň 1.
Jaderný trik
V mnoha praktických aplikacích nemusí být data v původním prostoru prvků lineárně oddělitelná. K vyřešení tohoto problému lze SVM rozšířit na nelineární klasifikaci pomocí triku s jádrem. Funkce jádra implicitně mapuje data do vícerozměrného prostoru, kde je možná lineární separace. Mezi běžně používané funkce jádra patří polynomiální jádro, jádro s radiální bázovou funkcí (RBF) a sigmoidní jádro.
Rozhodovací funkce v kernelizovaném SVM se stává:
kde jsou Lagrangeovy multiplikátory získané z duální formy optimalizačního problému.
Implementace Pythonu
V Pythonu poskytuje knihovna `scikit-learn` přímou implementaci SVM prostřednictvím třídy `SVC`. Níže je uveden příklad, jak použít `SVC` ke klasifikaci datové sady:
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}%')
V tomto příkladu je třída `SVC` použita k vytvoření klasifikátoru SVM s lineárním jádrem. Klasifikátor je trénován na trénovací sadě a přesnost je hodnocena na testovací sadě. Klasifikace sady vlastností v SVM je zásadně závislá na znaménku rozhodovací funkce. . Znaménko určuje, na které straně nadroviny leží datový bod, a tím jej přiřazuje do odpovídající třídy. Rozhodovací funkce, proces optimalizace pro nalezení optimální nadroviny a potenciální využití funkcí jádra pro zpracování nelineární separability jsou všechny důležité součásti SVM. Pochopení těchto aspektů poskytuje komplexní pohled na to, jak SVM fungují a jejich použití v různých úlohách strojového učení.
Další nedávné otázky a odpovědi týkající se Strojové učení EITC/AI/MLP s Pythonem:
- Jak se vypočítá parametr b v lineární regresi (průsečík y nejlépe vyhovující přímky)?
- Jakou roli hrají podpůrné vektory při definování rozhodovací hranice SVM a jak jsou identifikovány během tréninkového procesu?
- Jaký je v kontextu optimalizace SVM význam váhového vektoru `w` a zkreslení `b` a jak se určují?
- Jaký je účel metody `vizualizovat` v implementaci SVM a jak pomáhá pochopit výkon modelu?
- Jak metoda `předpovědět` v implementaci SVM určuje klasifikaci nového datového bodu?
- Jaký je primární cíl stroje podpory vektorů (SVM) v kontextu strojového učení?
- Jak lze knihovny, jako je scikit-learn, použít k implementaci klasifikace SVM v Pythonu a jaké klíčové funkce jsou obsaženy?
- Vysvětlete význam omezení (y_i (mathbf{x}_i cdot mathbf{w} + b) geq 1) v optimalizaci SVM.
- Co je cílem optimalizačního problému SVM a jak je matematicky formulován?
- Jakou roli hraje rovnice nadroviny (mathbf{x} cdot mathbf{w} + b = 0) v kontextu Support Vector Machines (SVM)?
Prohlédněte si další otázky a odpovědi v EITC/AI/MLP Machine Learning with Python