Mesin Vektor Sokongan (SVM) ialah algoritma pembelajaran diselia yang berkuasa yang digunakan untuk tugas klasifikasi dan regresi. Matlamat utama SVM adalah untuk mencari hyperplane optimum yang terbaik memisahkan titik data kelas yang berbeza dalam ruang dimensi tinggi. Klasifikasi set ciri dalam SVM sangat terikat dengan fungsi keputusan, terutamanya tandanya, yang memainkan peranan penting dalam menentukan sisi mana pada hyperplane titik data tertentu jatuh.
Fungsi Keputusan dalam SVM
Fungsi keputusan untuk SVM boleh dinyatakan sebagai:
di mana:
- ialah vektor berat yang mentakrifkan orientasi hyperplane.
- ialah vektor ciri bagi titik data yang dikelaskan.
- ialah istilah berat sebelah yang mengalihkan hyperplane.
Untuk mengklasifikasikan titik data , tanda fungsi keputusan digunakan:
Tanda ini menentukan sisi hyperplane di mana titik data terletak.
Peranan Klasifikasi Log Masuk
Tanda fungsi keputusan () secara langsung menentukan label kelas yang diberikan kepada titik data
. Begini bagaimana ia berfungsi:
1. Tanda Positif: Jika , tanda fungsi keputusan adalah positif. Ini bermakna bahawa titik data
terletak di sebelah hyperplane di mana kelas positif terletak. Oleh itu,
diklasifikasikan sebagai tergolong dalam kelas positif (biasanya dilambangkan sebagai +1).
2. Tanda Negatif: Jika , tanda fungsi keputusan adalah negatif. Ini menunjukkan bahawa titik data
terletak di sebelah hyperplane di mana kelas negatif terletak. Oleh itu,
diklasifikasikan sebagai tergolong dalam kelas negatif (biasanya dilambangkan sebagai -1).
3. Sifar: Dalam kes yang jarang berlaku di mana , titik data
terletak tepat pada hyperplane. Senario ini secara teorinya mungkin tetapi secara praktikal jarang berlaku kerana sifat berterusan data bernilai sebenar.
Tafsiran Geometri
Tafsiran geometri fungsi keputusan adalah penting untuk memahami cara SVM mengklasifikasikan titik data. Hyperplane yang ditakrifkan oleh bertindak sebagai sempadan keputusan antara dua kelas. Orientasi dan kedudukan hyperplane ini ditentukan oleh vektor berat
dan istilah berat sebelah
.
1. Margin: Margin ialah jarak antara hyperplane dan titik data terdekat daripada setiap kelas. SVM bertujuan untuk memaksimumkan margin ini untuk memastikan bahawa hyperplane bukan sahaja memisahkan kelas tetapi melakukannya dengan jarak terbesar yang mungkin dari titik data terdekat. Titik data terdekat ini dikenali sebagai vektor sokongan.
2. Vektor Sokongan: Vektor sokongan ialah titik data yang terletak paling hampir dengan hyperplane. Mereka adalah kritikal dalam menentukan kedudukan dan orientasi hyperplane. Sebarang perubahan dalam kedudukan vektor sokongan ini akan mengubah satah hiper.
Contoh
Pertimbangkan contoh mudah di mana kami mempunyai ruang ciri dua dimensi dengan titik data daripada dua kelas. Mari kita nyatakan kelas positif dengan +1 dan kelas negatif dengan -1. Katakan vektor berat dan istilah berat sebelah
.
Untuk titik data , kita boleh mengira fungsi keputusan seperti berikut:
Sejak , tanda fungsi keputusan adalah positif, dan dengan itu, titik data
diklasifikasikan sebagai tergolong dalam kelas positif (+1).
Untuk titik data lain , kami mengira fungsi keputusan sebagai:
Sekali lagi, , jadi tandanya adalah positif, dan
diklasifikasikan sebagai tergolong dalam kelas positif (+1).
Sekarang, pertimbangkan titik data :
Dalam kes ini, , jadi tandanya negatif, dan
dikelaskan sebagai tergolong dalam kelas negatif (-1).
Rumusan Matematik
Rumusan matematik SVM melibatkan penyelesaian masalah pengoptimuman untuk mencari yang optimum and
yang memaksimumkan margin sambil mengklasifikasikan data latihan dengan betul. Masalah pengoptimuman boleh dinyatakan sebagai:
di mana ialah label kelas bagi titik data
, dan kekangan memastikan bahawa semua titik data dikelaskan dengan betul dengan margin sekurang-kurangnya 1.
Tipu Kernel
Dalam banyak aplikasi praktikal, data mungkin tidak boleh dipisahkan secara linear dalam ruang ciri asal. Untuk menangani ini, SVM boleh diperluaskan kepada klasifikasi bukan linear menggunakan helah kernel. Fungsi kernel secara tersirat memetakan data ke dalam ruang dimensi yang lebih tinggi di mana pemisahan linear boleh dilakukan. Fungsi kernel yang biasa digunakan termasuk kernel polinomial, kernel fungsi asas jejari (RBF), dan kernel sigmoid.
Fungsi keputusan dalam SVM kernel menjadi:
di mana ialah pengganda Lagrange yang diperoleh daripada bentuk dwi masalah pengoptimuman.
Pelaksanaan Python
Dalam Python, perpustakaan `scikit-learn` menyediakan pelaksanaan SVM yang mudah melalui kelas `SVC`. Di bawah ialah contoh cara menggunakan `SVC` untuk mengklasifikasikan set data:
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}%')
Dalam contoh ini, kelas `SVC` digunakan untuk mencipta pengelas SVM dengan kernel linear. Pengelas dilatih pada set latihan, dan ketepatan dinilai pada set ujian. Pengelasan set ciri dalam SVM pada asasnya bergantung pada tanda fungsi keputusan . Tanda menentukan di sebelah hyperplane mana titik data terletak, dengan itu memberikannya kepada kelas yang sepadan. Fungsi keputusan, proses pengoptimuman untuk mencari hyperplane optimum, dan potensi penggunaan fungsi kernel untuk mengendalikan kebolehpisahan bukan linear adalah semua komponen penting SVM. Memahami aspek ini memberikan pandangan menyeluruh tentang cara SVM beroperasi dan aplikasinya dalam pelbagai tugas pembelajaran mesin.
Soalan dan jawapan terbaru lain mengenai Pembelajaran Mesin EITC/AI/MLP dengan Python:
- Bagaimanakah parameter b dalam regresi linear (pintasan-y bagi garisan paling sesuai) dikira?
- Apakah peranan yang dimainkan oleh vektor sokongan dalam menentukan sempadan keputusan SVM, dan bagaimana ia dikenal pasti semasa proses latihan?
- Dalam konteks pengoptimuman SVM, apakah kepentingan vektor berat `w` dan bias `b`, dan bagaimana ia ditentukan?
- Apakah tujuan kaedah `visualize` dalam pelaksanaan SVM, dan bagaimana ia membantu dalam memahami prestasi model?
- Bagaimanakah kaedah `ramalkan` dalam pelaksanaan SVM menentukan klasifikasi titik data baharu?
- Apakah objektif utama Mesin Vektor Sokongan (SVM) dalam konteks pembelajaran mesin?
- Bagaimanakah perpustakaan seperti scikit-learn boleh digunakan untuk melaksanakan klasifikasi SVM dalam Python, dan apakah fungsi utama yang terlibat?
- Terangkan kepentingan kekangan (y_i (mathbf{x}_i cdot mathbf{w} + b) geq 1) dalam pengoptimuman SVM.
- Apakah objektif masalah pengoptimuman SVM dan bagaimana ia dirumus secara matematik?
- Apakah peranan persamaan hyperplane (mathbf{x} cdot mathbf{w} + b = 0) dalam konteks Mesin Vektor Sokongan (SVM)?
Lihat lebih banyak soalan dan jawapan dalam Pembelajaran Mesin EITC/AI/MLP dengan Python