SVM是一種簡單的分類演算法,每個機器學習從事者都應該在他們的工具箱中使用。 讓我們首先了解它是如何工作的,然後看看它的優點和缺點。
如前所述,當我們有分類數據時,SVM是用於監督學習式分類演算法。 它將labeled data point(feature)作為input並返回hyperplane,該hyperplane將data point分類為我們期望的類別(class)。
了解hyperplane是理解SVM的必要條件。 簡單的hyperplane是一個decision boundary,有助於對data point進行分類。 data point位於hyperplane的不同側,被視為單獨的class。
隨著feature數量的增加,hyperplane的dimension也將增加。 當存在N個feature時,所得hyperplane將具有n-1 dimension。
在SVM找到hyperplane後,它將嘗試最大化margin。 這裡的margin是從超平面到最近的data point(也稱為support vector)的距離。 hyperplane的方向和位置高度依賴於這個最近的數據點。
您可能會有一個問題,“為什麼需要最大化margin?”,這個最大化的margin給出了一些強化,這有助於模型更有把握地對將來的data point進行分類。
How SVM works when there are Outliers in the dataset?
如前所述,hyperplane位置和方向受最近data point的影響很大。 因此,如果data set存在異常值,則演算法將嘗試找到最佳超平面,合理地分離class且與最近數據點(或support vector)的數量有關。
SVM on Non-linear Datapoints
到目前為止,我們已經看到了線性data point的例子。 看下面的例子你能想像hyperplane會是什麼樣子的嗎? 您認為可以使用SVM對這些data point進行分類嗎?
是的,可以藉由kernel function的幫助下完成。 簡單kernel是數學函數作為參數傳遞給SVM的。 kernel獲取input data point並將其轉換為SVM所需的形式,以找尋hyperplane。
kernel function將低階non-linear data轉換為高階linear data,然後找到hyperplane。 再使用相同的kernel function,它將映射non-linear data上的decision boundary(hyperplane)。
讓我們看看它如何作用在我們的例子中,
Parameters of SVM
如果你google“sklearn SVM”,你會發現Scikit學習SVM模型的文件。 在那裡,您可以看到傳遞給SVM的參數的詳細信息。 讓我介紹三個要考慮的主要參數。
1. kernel:正如我們之前看到的那樣,kernel function是需要根據data point的線性度傳遞的參數。 有關不同kernel function及其用途,請參閱sklearn文件。
2. C (Regularization):控制decision boundary的smoothness和分類的correctness之間的權衡。 當c比較高時,它會正確地對所有data point進行分類,也有機會overfit。
3. Gamma:定義每個訓練樣本對decision boundary的影響程度。 即,當gamma較高時,附近的點將具有較高的影響,而低gamma則意味著遠處的點也被認為可以獲得decision boundary,並調整hyperparameter並查看在嘗試SVM分類時獲得的不同結果。
優點
1.Regularization parameter有助於避免overfitting。
2.kernel技巧有助於對linear和non-linear data進行分類。
3.SVM使用convex optimization,確保結果是global minimum。
4.SVM還支持半監督學習。
缺點
1.通常,SVM在訓練和預測方面較慢。
參考
https://medium.com/@mathanrajsharma/all-you-need-to-know-about-support-vector-machines-2f130c0bc0ed?fbclid=IwAR0Tads16ramJQGZQ8ZTAbTFF0xp_xdF9K5USxw6mtDOSycFC72_46s3NQ0
沒有留言:
張貼留言