機器學習筆記009 | 關於分類問題的預測
前面我們說過,對於監督學習,根據目標的是否連續,分為迴歸問題和分類問題。
之前我們學習了迴歸直線(linear regression),但是通過這樣的方式來解決分類問題,效果不怎麼好。
我們舉個例子:
圖中藍色圓圈表示良性腫瘤,紅色的叉表示惡性腫瘤。
我們判斷,當概率大於0.5的時候,那麼這些腫瘤就是惡性的腫瘤,概率小與0.5的時候,這些腫瘤就是良性的腫瘤。
如果採用線性迴歸進行預測,得到的結果是這樣的:
圖中橙色的直線是預測的迴歸直線。
hθ(x) ≥ 0.5 ,表明是惡性的,也就是黃色虛線右邊。
但是如果出現了更大的腫瘤,就會出現問題,如圖:
資料不一樣,迴歸直線就發生了變化,然後判斷就不準確了。
迴歸方程就會把綠色虛線的左邊的腫瘤會被判定為良性腫瘤,也就是將之前判斷為惡性的腫瘤判斷為良性。
對於分類問題,一般只有少數的結果,甚至常常只有“是”和“否”兩種結果,或者說是1和0兩種結果,就像上面提到腫瘤是否惡性的例子一樣。
對於這樣的問題,採用線性迴歸的來描述我們的假設,其實是不合適的。
那麼為了解決分類問題,我們應該用什麼函式來表達我們的假設呢呢?
就是我們下面要說到的邏輯迴歸(Logistic Regression)。
我們想要的結果,其實是一個概率的預測,如果概率大於或者等於0.5,那麼就認定為“是”,概率小於0.5,那麼就認定為“否”。
表達在預測函式上,我們想要的就是:
0 ≤ hθ(x) ≤ 1
原來預測函式是這樣的:hθ(x) = θTx,其中θ和x都是n + 1 維度的向量。
現在我們對函式進行了一個調整:
g(z)就是邏輯函式,也是邏輯迴歸命名的由來。
以下是邏輯函式g(z)繪畫出的影象:
可以看到,曲線取值的區間是在 ( 0 , 1 ),最小值無限接近於 0,最大值無限接近於 1 。
曲線經過座標 ( 0 , 0.5 ),也就是概率為 0.5 的位置。
因為我們的想要得到的預測結果,是一個概率,然後更具概率對結果進行判定。
我們把 hθ(x) = P(y=1|x;θ) 看作判斷為“是”的預測,其結果在( 0 , 1 ) 之間的,那麼判斷為“否”的概率就是 P(y=0|x;θ) = 1 − P(y=1|x;θ) 。
判斷“否”的概率正好是剩餘的部分,不是麼?
例如今天天氣預報說,有70%的機率會下雨,那麼換一個角度來看就是說有30%的機率就不會下雨。
hθ(x) ≥ 0.5 → y = 1
hθ(x) < 0.5 → y = 0
通過這個邏輯函式g(z)的圖片我們可以得到:
當 z ≥ 0 的時候,g(z) ≥ 0.5。
也就是說:
θTx ≥ 0 ⇒ hθ(x) = g(θTx) ≥ 0.5 ⇒ y = 1
θTx < 0 ⇒ hθ(x) = g(θTx) < 0.5 ⇒ y = 0
θTx = 0 將兩者劃分開來的曲線就是我們的決策邊界(Decision Boundary)。
例如我們有一組兩個特徵的資料,預測函式就是 hθ(x) = g(θTx) = g(θ0 + θ1x1 + θ2x2) 。
對於θ0 + θ1x1 + θ2x2 = 0 ,假如我們有 θ0 = -3 ,θ1 = 1 ,θ2 = 1,那麼就可以得到:
x1 + x2 = 3
就是下圖中黃色的直線:
這條曲線就是我們的決策邊界。
因為x1 + x2 ≥ 3 ⇒ hθ(x) ≥ 0.5 ⇒ y = 1,所以在直線右邊的腫瘤被判斷為惡性,在直線左邊的腫瘤被判定為良性。
當然,資料的落點可能是這樣的:
那麼對應的決策邊界就是以1為半徑,以座標中心為圓心的圓:
而這樣圖形的公式是:
所以 z = θTx 並非一定要是線性的,也可以是多項式的,如:
所以就算出現各種怪異的形狀也不足為奇,只要形狀能夠擬合我們的資料,就可以了。
文章轉載自公眾號:止一之路
相關文章
- 學習筆記——機器學習演算法(一): 基於邏輯迴歸的分類預測筆記機器學習演算法邏輯迴歸
- 【火爐煉AI】機器學習009-用邏輯迴歸分類器解決多分類問題AI機器學習邏輯迴歸
- 機器學習演算法(一): 基於邏輯迴歸的分類預測機器學習演算法邏輯迴歸
- 機器學習--有監督學習--分類演算法(預測分類)機器學習演算法
- 【Svm機器學習篇】Opencv3.4.1與C++實現對分類問題的訓練與預測】機器學習OpenCVC++
- 機器學習筆記(七)貝葉斯分類器機器學習筆記
- 機器學習之分類:預測偏差機器學習
- 機器學習演算法(五):基於企鵝資料集的決策樹分類預測機器學習演算法
- 機器學習讀書筆記:貝葉斯分類器機器學習筆記
- 關於 Laravel 分頁的問題?Laravel
- 機器學習演算法(八):基於BP神經網路的乳腺癌的分類預測機器學習演算法神經網路
- [個人筆記] 關於linux的常見問題合集筆記Linux
- 關於如何使用機器學習來做異常檢測的7個問題機器學習
- 關於ModelSaveAction等類的問題
- 關於Java中的類和物件筆記Java物件筆記
- 救命,關於類轉換問題
- 關於JProfiler監測記憶體佔用問題!!記憶體
- 關於JBossWebLoader類載入的問題Web
- 機器學習之分類問題度量機器學習
- Python機器學習筆記:使用Keras進行迴歸預測Python機器學習筆記Keras
- 關於SQLServer2005的學習筆記——生日問題SQLServer筆記
- 關於JSP預編譯的中文問題JS編譯
- 機器學習演算法筆記之4:貝葉斯分類器機器學習演算法筆記
- 機器學習筆記之樸素貝葉斯分類演算法機器學習筆記演算法
- 機器學習筆記---資料預處理機器學習筆記
- 基於機器學習預測Airbnb的城市旅行成本機器學習AI
- 【學習筆記】關於Freemark程式碼輸出值的問題筆記
- 機器學習中的類別不均衡問題機器學習
- 關於SQL的重複記錄問題SQL
- 關於java吃記憶體的問題Java記憶體
- 無限級分類---有關查詢問題??
- 關於配置檔案中的預設值的問題
- Java中關於二分查詢的問題Java
- 機器學習筆記-多類邏輯迴歸機器學習筆記邏輯迴歸
- 機器學習框架ML.NET學習筆記【6】TensorFlow圖片分類機器學習框架筆記
- 二進位制函式JSON資料分類問題——機器學習函式JSON機器學習
- 關於PHP記憶體洩漏的問題PHP記憶體
- 關於倒資料的速度記錄問題