線性迴歸是機器學習的基礎,目前不少機器學習算法都是從這些基礎算法演變而來,本着打算鞏固基礎知識的目的,一塊兒回顧一下線性迴歸。python
在介紹線性迴歸前,咱們先了解迴歸分析的做用,迴歸分析就是將一系列的影響因素 x 和結果 y 進行擬合獲得一個方程,而後用這個方程對同類事件進行預測。在簡單應用中,咱們能夠對過去的銷售額和廣告費用進行擬合(廣告費用做爲x,銷售額做爲y),來預測廣告費用對銷售額的影響。算法
線性迴歸可分爲一元迴歸和多元迴歸,一元迴歸就是隻有一個影響因子,也就是你們熟悉的線性方程,多元迴歸就是有多個影響因子。一元線性迴歸方程是 ,簡單來講就是二維平面上的一條直線,多元線性迴歸方程 ,從數學角度若是隻有兩個影響因子能夠看作是迴歸平面,若是涉及到高維度不能用圖形來描述。下面先講解一元線性迴歸。app
1.一元線性迴歸機器學習
以下圖所示:函數
這是一系列點在座標上的分佈,這些點的分佈很像一條直線,而咱們的目的就是找到這條直線,即在已知 和 的狀況下,肯定 和 ,肯定 和 的過程也就是咱們所說的學習過程,然而學習後咱們也要區分紅績的好壞,在迴歸任務中關鍵點就是怎麼判斷咱們擬合出的直線 是否合格,也就是衡量 和 之間的差異。均方偏差是迴歸任務最經常使用的方法,咱們的目的就是使均方偏差最小,即學習
均方差對應了經常使用的歐式距離,咱們的目的也就是取得全部點到直線距離的最小值。spa
咱們令 ,分別對 和 求導3d
根據數學結論偏導數爲0時,能夠取得最小值,咱們令上式爲零,通過變換可得,code
其中 爲已知 的均值。blog
顯然根據上述式子咱們能夠很容易求出 和 的值,咱們也能夠直接調用python的函數
# coding=utf8 import pandas as pd import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression ''' description:python線性迴歸 author:謝宜廷 mail:369587353@qq.com ''' #讀取數據 line_sample = pd.read_csv('linear_regression_sample.csv') def plot_data(data): x = data['x'].as_matrix().reshape() # 注意此處.reshape(-1, 1),由於此處x是一維的,每行元素要轉換成向量 y = data['y'].as_matrix() #初始化線性迴歸 regr = LinearRegression() #數據擬合 regr.fit(x,y) plt.plot(x,y,'o') plt.plot(x,regr.predict(x),color = 'red') plt.show() plot_data(line_sample)
咱們獲得結果:
上述紅線就是咱們所擬合的直線,下面介紹多元迴歸。
多元線性迴歸直白來講就是有多個影響因子,好比產品銷售額不只受廣告投入的影響還和天氣因素有關,每增長一個影響因素就多增長一個維度。多元線性迴歸的數學方程是 ,顯然 受到多個 的影響,用向量表示方程爲
咱們把樣本也表示成向量形式 ,根據前面的均方差,可得
令 ,對 求導可得
令上式爲零可得 ,很顯然獲得咱們要的結果。注意到此時 必須知足可逆的,也就是滿秩的或者正定矩陣。
在實際任務中 每每不是可逆的,根據矩陣性質咱們能夠解出多個 ,它們均可以使均方差最小,如何選擇解做爲輸出,咱們此時引入正則化項 ,均方差方程變爲 ,此時咱們的目的就轉變爲求最小的 ,對 求導且令 ,則可得
正規化爲咱們解決了矩陣不可逆的問題,具體的說只要正則參數是嚴格大於零,事實上咱們也能證實
這個矩陣是可逆的。
熟悉的人會發現上面的正則化項就是L2正則化,也能夠說是懲罰項,運用方法就是Ridge迴歸,實際運用中用於改善和減小過分擬合的問題,固然這個方法爲何要這樣作的,公式自己也回答不了,按照本身的習慣默認1+1=2同樣,千萬不要去糾結,有興趣的能夠學習相似方法lasso迴歸。很顯然懲罰項對迴歸程是有影響的,當懲罰項很大時,迴歸方程就會偏離須要擬合的數據,當懲罰項很小趨於0時,加入這個項就沒有意義,發生過擬合的問題,目前經常使用的判斷方法是赤池信息準則(AIC)和貝葉斯信息準則(BIC)。
以上就是線性迴歸相關介紹,固然線性迴歸相反的還有非線性迴歸,經常使用的非線性迴歸,好比對數迴歸等,都是爲了擬合出一個函數描述實際狀況的因果關係。方法是有了,然而應用到實際狀況中總會發現一些問題,好比輸出的結果只有0和1,樣本特徵已經達到1000,這就須要降維方法好比LDA線性判別分析,這些實際問題也是促使咱們改進和研究算法的動力。
PS: 若是以爲本篇本章對您有所幫助,歡迎關注、評論、贊!若是要轉發請註明做者和出處
參考文獻:
[1]周志華《機器學習》第三章線性模型