初識機器學習:迴歸分析
這是我參與「掘金日新計劃 · 8 月更文挑戰」的第8天,點選檢視活動詳情
迴歸分析(Regression Analysis)是一種統計學上分析資料的方法,目的在於瞭解兩個或更多變數是否相關、關係方向和關係強度,並以此建立數學模型,通過觀察特定變數來預測研究者感興趣的變數。它可以幫助我們在自變數變化時因變數的變化情況。
在機器學習中,迴歸分析資料監督學習的範疇,可以用於資料的預測。迴歸分析可以通過多個預測變數來預測結果,並且能夠這些變數對結果的影響程度。
簡單線性迴歸
這裡我們可以引入一個預測房價的例子,假設某地的放房價主要受房間數和周圍居民的收入水平影響,我們可以根據調研資料,繪製趨勢線。
下圖是放假與房間數的關係圖:
在圖中,我們可以看到房間數與房價的大致關係,並繪製一條趨勢線,根據這條趨勢線,我們大致可以預測,有8個房間的房子,單價大概率在 38.15 附近。
根據對房價與周圍居民收入的調研,可以得到以下的圖表,圖表中的橫軸表示周圍低收入居民的比例,縱軸表示房價:
可以看出,隨著周圍低收入居民比例的上升,房價呈下降趨勢,並且根據這些點,我們同樣可以畫一條大致的趨勢線。
通過對這些調研資料的整理,我們便可以使用房間數和低收入居民的比例對房價進行預測。
提高準確度
為了提高準確度,我們可以將房間數和低收入人群佔比進行結合,來進行預測。但是,兩個因素對房價的影響強度大小肯定是不一致的,所以,我們需要給兩個因素不同的權重,最終可以表示為:
$$$$房價 = a * 房間數 + b * 低收入人群佔比 $$$$
以上的等式只是表示他們的關係,這裡的 a 和 b 分別代表兩個因素的權重。這樣,通過一個帶權重的組合變數,就能夠得到更準確的結果。
迴歸係數
以上分析結果中,最終得到的變數權重,也叫做迴歸係數。他表示某個變數對預測結果的影響方向和大小。由於多個變數之間的計量單位是不同的,計量單位的選擇也會影響迴歸係數的大小。比如:一個表示重量的變數,使用克和千克兩種單位表示時,迴歸係數會相差1000被,因此,我們在做分析之前,要先對變數的度量單位進行標準化。最簡單的方法就是用一個百分位數來表示每個變數,這樣得到的迴歸係數叫做標準迴歸係數,能夠更客觀地反映出那個變數對預測結果的影響更大。
比如:標準化後的 房價 = 2.1 * 房間數 + 5.5 * 低收入人群佔比
就比沒有標準化的 房價 = 2.1 * 房間數 + 550 * 低收入人群佔比
更能反應兩個變數對預測結果的影響關係。
相關係數
如果我們只使用一個變數來預測結果,那麼這個變數的標準化迴歸係數也叫做相關係數。
相關係數一般會用一個 -1 到 1 之間的數字表示,它能夠給我提供兩個資訊。以文章開頭的例子中,低收入人群佔比和房價之間的關係趨勢線來說明:
圖中資料點的集中程度,代表了預測變數對預測結果的影響強度,預測變數對結果的影響強度越大,這個數值就越接近於 1 或者 -1。
另一個資訊就是,根據這些點所畫出的趨勢線的方向,上圖中,預測變數和預測結果之間的變化方向是相反的,也就是低收入居民的比例越高,房價越低,則相關係數是負的,反之相關係數就是正的。
權重的失真
有時候,預測變數的選擇會導致權重的失真,也就是,導致我們得到不正確的權重資訊。
舉個例子,比如,我們在預測房價的例子中,再增加一個「房屋面積」的預測變數。 得到如下關係:
$$$$房價 = a * 房間數 + b * 低收入人群佔比 + c * 房屋面積 $$$$
在普遍情況下,房屋面積和房間數有非常強的正相關關係,也就是說,房間數更多的房屋,面積也會更大,因此,上述關係中,表示權重的 a 和 c 並不能準確表示房間數或者房屋面積對預測結果影響的真實強度。
所以,需要我們在分析之前,就把相關度比較高的變數進行排除或者合併。
其他
另外,我們通過迴歸分析所得到的相關關係,並不代表因果關係。
- Spring 原始碼閱讀 42:AutowiredAnnotationBeanPostProcessor 分析(3)
- Spring 原始碼閱讀 41:AutowiredAnnotationBeanPostProcessor 分析(2)
- Kafka 消費者組 Rebalance 詳細過程
- Spring 原始碼閱讀 01:Resource 資源抽象
- 初識機器學習:迴歸分析
- 初識機器學習:Louvain 社群發現演算法
- 初識機器學習:關聯規則
- 使用 Redis 實現分散式鎖的方法
- Kafka 目錄裡的指令碼那麼多,它們都是用來幹什麼的?
- Kafka 消費者組位移重設的幾種方式
- LeetCode - 84. 柱狀圖中最大的矩形
- LeetCode - 22. 括號生成