機器學習入門——線性迴歸

1、前言

        線性迴歸是機器學習的基礎,目前不少機器學習算法都是從這些基礎算法演變而來,本着打算鞏固基礎知識的目的,一塊兒回顧一下線性迴歸。python

1.數據迴歸的目的

       在介紹線性迴歸前,咱們先了解迴歸分析的做用,迴歸分析就是將一系列的影響因素 x 和結果 y 進行擬合獲得一個方程,而後用這個方程對同類事件進行預測。在簡單應用中,咱們能夠對過去的銷售額和廣告費用進行擬合(廣告費用做爲x,銷售額做爲y),來預測廣告費用對銷售額的影響。算法

2、線性迴歸

        線性迴歸可分爲一元迴歸和多元迴歸,一元迴歸就是隻有一個影響因子,也就是你們熟悉的線性方程,多元迴歸就是有多個影響因子。一元線性迴歸方程是 ,簡單來講就是二維平面上的一條直線,多元線性迴歸方程 ,從數學角度若是隻有兩個影響因子能夠看作是迴歸平面,若是涉及到高維度不能用圖形來描述。下面先講解一元線性迴歸。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)

咱們獲得結果:


上述紅線就是咱們所擬合的直線,下面介紹多元迴歸。

2.多元線性迴歸

        多元線性迴歸直白來講就是有多個影響因子,好比產品銷售額不只受廣告投入的影響還和天氣因素有關,每增長一個影響因素就多增長一個維度。多元線性迴歸的數學方程是 ,顯然  受到多個  的影響,用向量表示方程爲


咱們把樣本也表示成向量形式  ,根據前面的均方差,可得


令 ,對  求導可得


令上式爲零可得 ,很顯然獲得咱們要的結果。注意到此時  必須知足可逆的,也就是滿秩的或者正定矩陣。

        在實際任務中  每每不是可逆的,根據矩陣性質咱們能夠解出多個  ,它們均可以使均方差最小,如何選擇解做爲輸出,咱們此時引入正則化項  ,均方差方程變爲 ,此時咱們的目的就轉變爲求最小的 ,對  求導且令 ,則可得


正規化爲咱們解決了矩陣不可逆的問題,具體的說只要正則參數是嚴格大於零,事實上咱們也能證實


這個矩陣是可逆的。

        熟悉的人會發現上面的正則化項就是L2正則化,也能夠說是懲罰項,運用方法就是Ridge迴歸,實際運用中用於改善和減小過分擬合的問題,固然這個方法爲何要這樣作的,公式自己也回答不了,按照本身的習慣默認1+1=2同樣,千萬不要去糾結,有興趣的能夠學習相似方法lasso迴歸。很顯然懲罰項對迴歸程是有影響的,當懲罰項很大時,迴歸方程就會偏離須要擬合的數據,當懲罰項很小趨於0時,加入這個項就沒有意義,發生過擬合的問題,目前經常使用的判斷方法是赤池信息準則(AIC)和貝葉斯信息準則(BIC)。

3、總結

        以上就是線性迴歸相關介紹,固然線性迴歸相反的還有非線性迴歸,經常使用的非線性迴歸,好比對數迴歸等,都是爲了擬合出一個函數描述實際狀況的因果關係。方法是有了,然而應用到實際狀況中總會發現一些問題,好比輸出的結果只有0和1,樣本特徵已經達到1000,這就須要降維方法好比LDA線性判別分析,這些實際問題也是促使咱們改進和研究算法的動力。

PS: 若是以爲本篇本章對您有所幫助,歡迎關注、評論、贊!若是要轉發請註明做者和出處

參考文獻:

    [1]周志華《機器學習》第三章線性模型