線性迴歸與分類, 解決與區別

原址html

 

機器學習能夠解決不少問題,其中最爲重要的兩個是 迴歸與分類。 這兩個問題怎麼解決, 它們之間又有什麼區別呢? 如下舉幾個簡單的例子,以給你們一個概念機器學習

1. 線性迴歸

迴歸分析經常使用於分析兩個變量X和Y 之間的關係。 好比 X=房子大小 和 Y=房價 之間的關係, X=(公園人流量,公園門票票價) 與 Y=(公園收入) 之間的關係等等。函數

那麼你的數據點在圖上能夠這麼看學習

如今你想找到 房子大小和房價的關係, 也就是一個函數f(x) = y. 可以很好的表示 這兩個變量之間的關係。測試

因而你須要大概評估一下這個 房子大小和房價大概是一個什麼關係.spa

是線性的關係嗎? 仍是非線性的關係?.net

固然在這個問題裏面, 線性的關係更符合這二者的關係。因而咱們 選擇一個合適的 線性模型, 最經常使用的是 f(x) = ax+b. htm

而後用這個線性的模型 去 匹配這些數據點。blog

1.1 怎麼匹配? 

有了數據點 和 你臆想出來的線性模型,怎麼進行匹配,也就是怎麼用這根線最好地描述些數據點的關係?get

須要最好地描述點, 咱們又須要一個關於「好」的定義。你也能夠想出不少關於「好」的定義。下面有兩個,

這兩個定義都是 將模型與數據點之間的距離差 之和作爲 衡量匹配好壞的標準。  偏差越小,  匹配程度越大。

可是 總的來講, 咱們想要找到的模型, 最後是想要使 f(x) 最大程度地 與y類似, 因此咱們想要儘可能地減小 f(x)與y之間的差值。 因此在這裏 用第二個圖的「好的定義」 來評估這根線的匹配程度是很合理的。因而咱們有了偏差公式!!!!!

這個公式,說的是,能夠經過調整不一樣的a 和 b的值,就能使 偏差不斷變化,而當你找到這個公式的最小值時,你就能獲得最好的a,b. 而這對(a,b)就是能最好描述你數據關係的模型參數。

 

1.1.1 沿導數降低法(Gradient Descent)

怎麼找 cost(a,b)的最小? cost(a,b) 的圖像其實像一個碗 同樣,有一個最低點。 找這個最低點的辦法就是,先隨便找一個點(e.g. a=3, b = 2), 而後 沿着這個碗降低的方向找,最後就能找到碗的最低點。

cost(a,b) 的形狀

怎麼找(某一點)碗降低的方向?? 答案是,找那一點導數的反方向。拿參數a 舉個例子,  a與cost 關係以下圖,

只要將任意一個a, 沿着使cost 導數的反方向 慢慢移動,那麼 最終有一天a值就會到達使 cost 最小的那一點. 因而你能夠不斷地移動a,b, 向着最低點前進。

固然在進行移動的時候也須要考慮,每次移動的速度,也就是\Alpha的值,這個值也叫作(學習率). 學習率的增大能夠加速參數逼近最優的狀況, 可是若是在快要到達函數的底端的時候,須要減少學習率,以避免出現cost 不斷增大或者不停擺動的狀況(以下圖, J(a,b)就是cost(a,b) )。 因此說,當出現以上兩種狀況時候,咱們應該果斷選取一個較小的學習率, 以保證cost能減小到一個穩定的值(咱們稱爲 收斂converge). 

1.1.2 直接求解最小點方法

這時候,有的人會問,爲何要讓a不停地往下跑呢? 並且還須要設定學習率, 多麻煩, 直接讓找 導數爲0點(最小極值), 不就能夠了嗎? 嗯。。。也能夠...可是各有優缺,

具體方法和優劣分析可見Rachel-Zhang 的博客: http://blog.csdn.net/abcjennifer/article/details/7700772

 

總結一下:  迴歸問題的解決方法是:

     1. 假定一個模型   2.  定義什麼叫作最好的匹配(構造偏差函數)   3. 用這個模型去匹配已有的數據點(訓練集)

 

須要進一步討論的問題:

 

  • 若是參數(a,b)更多了該怎麼辦?
  • 若是最合適的匹配模型並非線性的怎麼辦?   --- 選用一個 非線性模型  好比  y = ax^2 + bx + c.
  • 若是偏差(cost)與a,b(模型參數)的關係不是像碗同樣的, 而是凹凸不平的該怎麼辦? ------   這時候你就得注意你獲得的cost的最低點(局部的最低)可能因初始點的不一樣而不一樣。 而這些最低點你須要進行比較,以肯定是否是全局的最低

 

2.分類(Logistic regression)

分類問題也是一類很常見的問題。 好比說,怎麼斷定一我的是高富帥仍是吊絲? 假如我是中央電視臺的記者,採訪了N我的, 拿到了第一手資料。資料以下
咱們想要根據一我的的口袋錢數量,來預測一我的是(富帥) 仍是 (吊絲).  咱們能不能用迴歸的方法作呢? 顯然是能夠的, 咱們只要找到一個模型,而後再進行匹配就能夠了。
可是由於分類問題的y值經常是一些離散的數字,(好比, 富帥爲1, 吊絲爲0), 因此咱們已經不能用一個簡單的線性函數來擬合這些數據了。咱們須要一個更逼真的模型。 
 
因而咱們引入了一個更適合處理分類問題的函數--- 一個 非線性函數, 階躍函數。
這個函數的形狀更像咱們分類問題的數據分佈,因此,用他來擬合分類問題的數據將更適合!
因此咱們有了一個新的模型, 
經過調整a,b 的值,可讓模型不斷改變以匹配數據點。 爲了匹配數據點,咱們又須要一個衡量匹配程度的函數,就像 迴歸問題同樣的cost 函數. 因而同理咱們能夠獲得cost
因而咱們急切地想要把它用咱們以前的gradient descent 的方法求解出使cost 最小的兩個a,b值。 可是很遺憾的是, 這個cost函數關於a,b,是非凸(non-convex)的。 就像下面那張圖那樣坑坑窪窪。。。
 
 
因此你沒有辦法經過以上兩種方法(1.1.1和1.1.2)求出這個cost函數的全局最小值。
因此你須要構造一個更好的cost函數, 在能夠衡量擬合程度的同時 又是一個關於a,b 的凸函數(像迴歸問題的cost同樣,和一個碗同樣,只有一個極小值). 
這怎麼構造啊....
 
幸虧咱們還有各類偉大的數學家,他們夜以繼日,終於趕製出了一個形狀和碗同樣(convex)的cost函數. (Maximum Likelihoods Estimation 更具體的介紹請看 http://www.holehouse.org/mlclass/06_Logistic_Regression.html )
如今咱們又能夠用咱們熟悉的 導數方向降低法(gradient descent) 移動a, b的值,使cost 下降到最小。
 
最後,分類的問題就這樣被解決了。
 
 
固然,更復雜的問題可能有:
  • 如今是分紅兩類,若是數據須要分紅三類或者更多該怎麼辦?  ---- 假若有A,B,C三類, 把其中A類作爲1,BC作爲0,而後作Logistic regression, 獲得模型a, 同理將B類作爲1,AC做爲0,獲得模型b, 再同理獲得模型c.    最後測試的時候, 對任意一個數據點x, 咱們可以獲得x分別屬於A,B,C三類的機率值 
最後比較大小,哪一個大,這個x就屬於哪一類
             具體可看,  http://blog.csdn.net/abcjennifer/article/details/7716281 (七)
 
 
 

3.總結(兩個問題的區別)

這篇文章大概的意圖是能想讓你們瞭解, 機器學習中最基本的兩類問題,線性迴歸和分類。 能讓你們有個清晰的思想,對於這兩類問題都有如下幾個步驟,
  • 如何選取一個 合理的模型(線性的,or 非線性的(e.g. 階躍函數, 高斯函數)).
  • 製造一個"美好"的 偏差函數 (能夠評估擬合程度,並且仍是convex函數)
  • 採起一切可能的技術(e.g. 導數降低法,解極值方程法) 求出最好的模型參數
 
談談迴歸和分類的區別:
總的來講兩個問題本質上都是一致的,就是模型的擬合(匹配)。 可是分類問題的y值(也稱爲label), 更離散化一些. 並且, 同一個y值可能對應着一大批的x,  這些x是具備必定範圍的。 
因此分類問題更多的是 (必定區域的一些x) 對應 着 (一個y).   而回歸問題的模型更傾向於 (很小區域內的x,或者通常是一個x)  對應着  (一個y).
 
在把一個問題建模的時候必定要考慮好需求,讓你的模型更好的與現實問題相對應。
相關文章
相關標籤/搜索