白話文講解支持向量機(二) 非線性SVM

Python機器學習程式語言

先恭喜一下我自己煎熬了四個月終於退伍了XD。趁著退伍後的空閒時間趕快來補齊之前還沒寫完的SVM續集。😝

在上一篇白話文講解支持向量機(一) 線性SVM中我們學到了線性SVM的損失函數、目標函數,以及調整超參數C來決定決策線在訓練時對於資料點的靈敏程度。本篇我們將來介紹當資料不是單純可以線性分割時,非線性SVM是如何分類資料的。

以下是本篇講解的順序:

  • 線性SVM(上一篇)
  • 特性
  • 損失函數
  • 目標函數
  • 目標函數中的正規化項

 

白話文講解支持向量機(一) 線性SVM

Python機器學習程式語言

大學畢業後7月正式入伍登入了國軍online。在軍中由於有太多的時間可以發呆思考人生,所以想說利用這些時間把一些機器學習的模型在頭腦裡跑過一遍。SVM在機器學習領域裡算是一個滿經典的演算法,因此值得趁記憶猶新時花些篇幅記錄一下,希望可以以我自己比較白話的理解方式介紹SVM。

我將以下面的順序講解SVM,先讓大家有個大致的概念:

  • 非線性SVM(下一篇)
  • 特性
  • 實際上的運作方式
  • 預測新資料
  • Kernel
  • Kernel Trick
  • 目標函數

 
本篇會先從線性SVM開始講起,如何使用一條直線、一個平面或是在更高維度的任何線性函數來達成二元分類。除了線性的SVM以外,也有非線性SVM。不過我覺得線性SVM跟非線性SVM還是要明確分開來講比較好,不然像我在自學的時候就把這這兩個混在一起看,導致在kernel的觀念那邊卡關很久。

因此下一篇我們才會進入非線性SVM,假設資料不是單純可以線性分割時,SVM可以怎麼變化達成非線性的切割,進而帶到非線性SVM使用的kernel概念、以及實際上電腦在訓練時都會採用kernel trick優化減少運算量。

 

設定Apache以用戶憑證(Client CA)的方式進行訪客驗證

Linux、Mac應用程式

在使用Apache管理網頁服務時,有時會遇到希望可以設定某些網頁服務是只有經過授權的人才能存取

常見的做法是可以利用Apache跳出提示輸入帳密提示框後,成功登入者才能進行下一步訪問

今天我們要來講講第二種做法:

發憑證給授權的使用者,並且在每次訪客訪問網站時驗證訪客提交的憑證是否為我方發行無變造過的

確認無誤才準放行進行下一步訪問,如果沒有憑證或憑證沒有通過驗證者都一律拒於門外

 
使用用戶憑證(Client CA)的方式進行訪客驗證就好像使用SSH Key登入SSH的概念,不用再多背一組帳密

而且因為是使用憑證,他的安全性遠高於帳密

想想假設今天一個網站使用帳密進行驗證,積極一點的駭客會使用暴力破解或字典檔想設法去猜中帳密

但如果今天使用憑證進行驗證,是不是就算再積極也無從下手了呢

 

步驟

要設定Apache以用戶憑證(Client CA)的方式進行訪客驗證有三個步驟要做:

  • 產生用戶憑證檔與憑證私鑰
  • 轉換成pfx格式
  • 修改Apache的設定檔強制驗證訪客提供的憑證

以下我就拿自己的phpMyAdmin資料庫後台網頁進行示範,設定只有持有合格的用戶憑證者才能存取

採用YOLOv3模型的自助餐菜色自動辨識結帳系統

Python機器學習程式語言

大三時因緣際會在國外留學時修了一堂人工智慧的課,從那時起就被機器學習的魅力深受吸引:即便對問題只有稍淺的domain knowledge,但是只要透過大量的資料去做訓練,依然可以使模型學會這些資料之間的關聯(當然對問題的domain knowledge懂得越多,對於資料的敏銳程度也會比較高;在feature selection時比較容易挑出好的feature,訓練時converge的速度也會比較快)。

回國後大四上要開始做畢業專題了,我找了幾個隊友以及一位從大一關係就還不錯專長是影像處理與訊號處理的教授討論方向,最後決定結合機器學習與影像辨識,做出一個概念性的自助餐菜色自動辨識結帳系統。


(將打完的自助餐放在攝影機下,系統即可辨識出菜色、結帳金額及卡路里)

 
本篇將以以下的順序紀錄整個畢業專題從無到有的過程:

[Python] 基於KNN演算法的臉部辨識

Python機器學習程式語言

最近在讀機器學習classfication跟cluster的演算法,就想找些有趣的例子來實做看看

於是這篇就誕生了:使用KNN(K Nearest Neighbor)近鄰演算法實作的臉部辨識

話不多說,先來張最終辨識的成果圖:

 

KNN(K Nearest Neighbor)簡介

KNN是一種近鄰分類演算法,核心概念就是給定k值,然後要被分類的點x就會尋找最近的k個點,看這k個點中哪個種類佔大多數,則該點x即會被歸為此類

例如這張從維基百科抓的示意圖k=3,在最近的三個點中紅色佔大多數,所以綠色將會被歸類為紅色

但有趣的是,假如k=5,則藍色的數量又比紅色多,所以綠色將會被歸類為藍色

因此k值的挑選也是一門學問