繪制非線性分類模型的決策邊界

不知道大家是否有過這樣的困惑。這種綠色的圈,是怎么畫出來的?

這里的綠色曲線代表了正例和負(fù)例的決策邊界。曲線里面是正例,曲線外面是負(fù)例,曲線是個橢圓。

如果是線性分類的決策邊界,可以按照直線的繪制方法進(jìn)行繪制。但如果分界平面不是線性的,是這種橢圓型狀的,又該怎么辦呢?

可能有同學(xué)會說,按照同樣的方法畫。給出x坐標(biāo),計算y坐標(biāo),再畫出曲線。

但現(xiàn)在我們想要畫的曲線根本就不是函數(shù),它可能是這樣的,或者是這樣的。我們沒辦法找到一個x對應(yīng)一個y,所以也就沒法用畫函數(shù)的方法,畫出這個綠色的邊界。
具體怎么畫,我先給出結(jié)論。這種非線性分類的決策邊界,需要基于等高線的概念來繪制。
等高線的基本概念
等高線,也被稱為等值線,它是一種在二維平面上表示三維地形的方法。例如,下圖使用等高線,描述了某座山的地形圖。

其中我們使用黑色三角代表山頂,距離山頂最近的一圈是海拔4000米,然后是3500米,3000米等等到0。每一圈都對應(yīng)了一個高度。
將等高線視為類別的邊界
我們要將等高線,看做是不同類別的分界面。不同類別的樣本,需要看做是不同的高度,這樣,就可以基于不同樣本點的高度,繪制出一條等高線了。

例如,圖中的藍(lán)色圓圈對應(yīng)的高度是1,紅色叉子對應(yīng)的高度是0,它們之間就自然產(chǎn)生一條綠色的等高線,對應(yīng)分類決策邊界。
現(xiàn)在假設(shè)基于這些樣本數(shù)據(jù),訓(xùn)練出了非線性分類的模型。這里忽略掉模型的訓(xùn)練過程,想象此時我們已經(jīng)有了這個模型。
接著我們要使用這個模型,將平面上所有的樣本點,都識別出對應(yīng)的分類結(jié)果,這個結(jié)果要么是0,要么是1。

例如,在平面上,如果每隔0.5個單位長度,取一個點,那么從-4到4之間可以取15個點,這樣平面上就會產(chǎn)生15乘15一共255個數(shù)據(jù)點。

將這些數(shù)據(jù)點作為測試數(shù)據(jù),帶入到已經(jīng)訓(xùn)練出的非線性分類的模型。讓模型決策這些數(shù)據(jù)應(yīng)該是類別0還是類別1,這里類別0是黃色的,類別1是紫色的。而數(shù)據(jù)的類別,剛好也對應(yīng)數(shù)據(jù)在平面上的高度,即高度0還是高度1。

這時,如果我們將測試數(shù)據(jù)設(shè)置足夠稠密,例如,每間隔0.01,取一個點,再將這些點畫在平面上,自然就形成一個橢圓形的決策邊界了。
非線性決策邊界的實驗代碼
實驗代碼包括了完整的邏輯回歸模型訓(xùn)練。這里我會簡要介紹代碼的整體結(jié)構(gòu),重點講解決策邊界繪制的部分。

首先是數(shù)據(jù)點的生成。我們使用make_gaussian生成非線性的數(shù)據(jù),其中正樣本使用藍(lán)色圓圈標(biāo)記,負(fù)樣本使用紅色叉子標(biāo)記。
然后使用logistic_train函數(shù),訓(xùn)練非線性的分類模型。訓(xùn)練后會得到參數(shù)列表theta,這個theta列表,實際上就對應(yīng)綠色的決策邊界。接著調(diào)用draw_decision_boundary,繪制theta對應(yīng)的非線性決策邊界。

函數(shù)draw_decision_boundary,傳入的min-x1到max-x1是畫板的橫軸范圍,min-x2到max-x2是畫板的縱軸范圍。
在函數(shù)中,我們會根據(jù)已訓(xùn)練出的θ參數(shù),計算對應(yīng)類別結(jié)果,不同類別結(jié)果會對應(yīng)不同的高度,從而基于數(shù)據(jù)點的坐標(biāo)與高度數(shù)據(jù),繪制等高線。
在函數(shù)中,首先調(diào)用mesh-grid生成網(wǎng)格數(shù)據(jù)點。每個點的距離是0.02,這樣生成的點可以覆蓋平面的全部范圍。
然后設(shè)置x1s、x2s和z分別表示數(shù)據(jù)點的橫坐標(biāo)、縱坐標(biāo)和類別的預(yù)測結(jié)果。遍歷全部樣本,調(diào)用邏輯回歸的預(yù)測函數(shù)logistic_predict,計算數(shù)據(jù)的置信度h。
如果h大于0.5,則類別是正例1,否則是負(fù)例0。1和0就對應(yīng)等高線圖中,高度1和高度0的數(shù)據(jù)點。
最后將z重新設(shè)置為和xx1相同的形式,并使用plt.contour繪制等高線,這樣就得到了橢圓型的決策邊界了。
那么到這里,非線性分類的決策邊界的繪制方法就講完了,感謝大家的觀看,我們下節(jié)課再會。