分析預測模型在機器學習中的應用之線性回歸

回歸能做什么呢?《機器學習實戰》的作者認為:

回歸能做任何事情。

回歸模型大致分為2個階段,訓練階段和預測階段, 訓練階段需要對歷史確定結果的數據進行反饋訓練,使得模型的參數適應當前的輸入與預期輸出, 預測階段在完善模型的基礎上對新的數據進行模擬輸出。這兩個階段對于一個模型都至關重要。

回歸模型廣泛地應用于機器學習,深度學習,AI,人工智能等領域,在這里我們講對它的應用進行深入淺出的學習與探討。

針對不同的數據(數值型和標稱型),我們一般有兩種預測傾向,數值預測,類別預測,這兩種預測有某種潛在的關系,可以說,分類是高層次及符合條件下的數量預測,它建立在數量預測的基礎上(這個后面的章節會cover到)

這篇文章的研究環境,基于jupiter notebook, 依賴的python包有pydataset, scilearn, pandas, seaborn以及必要的線性代數統計學高等數學的知識, 簡書中無法解析mathjax,所以公式均以截圖的形勢給出.

線性回歸模型

這是最簡單的回歸模型,也是最general的機器學習算法,也包含了機器學習與回歸模型最樸素和使用的思考方法, 它基于一個樸素的假設:輸入和輸出之間存在簡單的線性關系.

其中y 是輸出的數值,xi 是輸入的數值,x0 =1, n是輸入的特征數量

linearegression.png

線性回歸算法需要確定θ(j)使得平方誤差的和最小, 構造損失函數:

這里簡單地給出選用誤差函數為平方和的概率證明
首先我們提出了一個符合常理的假設:誤差是服從均值為0,的高斯分布 的

最大似然估計

最小二乘法

對θ求導得到:

梯度下降法

其中

對于n=1時,y=mx+b, python梯度下降代碼如下:

def stepGradient(b_current, m_current, points, learningRate):
    b_gradient = 0
    m_gradient = 0
    N = float(len(points))
    for i in range(0, len(points)):
        b_gradient += -(2/N) * (points[i].y - ((m_current*points[i].x) + b_current))
        m_gradient += -(2/N) * points[i].x * (points[i].y - ((m_current * points[i].x) + b_current))
    new_b = b_current - (learningRate * b_gradient)
    new_m = m_current - (learningRate * m_gradient)
    return [new_b, new_m]

重復執行stepGradient后得到J(θ)與執行次數的關系:

gradient_descent_error_by_iteration.png

下面是sklearn的線性模型的應用:

from sklearn import datasets
from sklearn.cross_validation import cross_val_predict
from sklearn import linear_model
import matplotlib.pyplot as plt

lr = linear_model.LinearRegression()
boston = datasets.load_boston()
y = boston.target

# cross_val_predict returns an array of the same size as `y` where each entry
# is a prediction obtained by cross validated:
predicted = cross_val_predict(lr, boston.data, y, cv=10)

fig, ax = plt.subplots()
ax.scatter(y, predicted)
ax.plot([y.min(), y.max()], [y.min(), y.max()], 'k--', lw=4)
ax.set_xlabel('Measured')
ax.set_ylabel('Predicted')
plt.show()

回歸的正則化與特征選擇

為了避免過擬合的問題,使模型更general一些,正則化的理念被提了出來,正則化被用來減小單個θ(j)的影響,基本原理是在全局損失函數中加入懲罰函數

Elastic net方法

這便轉化為了普通的套索問題

參考:
似然函數
最小二乘法
矩陣,向量求導
極大似然估計
廣義線性模型基于Elastic+Net的變量選擇方法研究

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容