91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

機器學習之優雅落地線性回歸法

發布時間:2020-06-23 09:56:21 來源:網絡 閱讀:3732 作者:Python小咖 欄目:編程語言

在統計學中,線性回歸(Linear regression)是利用稱為線性回歸方程的最小二乘函數對一個或多個自變量和因變量之間關系進行建模的一種回歸分析維基百科

簡單線性回歸

當只有一個自變量的時候,成為簡單線性回歸。

簡單線性回歸模型的思路

為了得到一個簡單線性回歸模型,假設存在以房屋面積為特征,以價格為樣本輸出,包含四個樣本的樣本集,如圖:

機器學習之優雅落地線性回歸法cdn.xitu.io/2018/11/2/166d3aa7e9398516?imageView2/0/w/1280/h/960/format/webp/ignore-error/1">

尋找一條直線,最大程度上擬合樣本特征與樣本輸出之間的關系。

假設最佳擬合的直線方程為:機器學習之優雅落地線性回歸法,則對于樣本特征 機器學習之優雅落地線性回歸法 的每一個取值 機器學習之優雅落地線性回歸法 的預測值為:機器學習之優雅落地線性回歸法。而我們希望的就是真值 機器學習之優雅落地線性回歸法 和預測值 機器學習之優雅落地線性回歸法 之間的差距盡量小。

可以用 機器學習之優雅落地線性回歸法 表示兩者之間的差距,對于所有的樣本,使用求和公式求和處理:


∑ i =1 m | y ( i) ?y ^ ( i) |

但是這個公式有一個問題,不容易求導,為了解決這個問題,可先對 機器學習之優雅落地線性回歸法 進行平方,如此最后的公式就變成了:


∑ i =1 m (y ( i) ?y ^ ( i) ) 2

最后,替換掉 機器學習之優雅落地線性回歸法 ,即為:


∑ i =1 m (y ( i) ?a x ( i) ?b ) 2

因此,找到的一個簡單線性回歸模型就是找到合適的 a 和 b,使得該函數的值盡可能的小,該函數也稱為損失函數(loss function)。

最小二乘法

找到合適的 a 和 b,使得 機器學習之優雅落地線性回歸法 的值盡可能的小,這樣的方法稱為最小二乘法。

如何求 a 和 b 呢?令該函數為 機器學習之優雅落地線性回歸法,分別使對 a 和 b 求導的結果為0。

對 b 求導:機器學習之優雅落地線性回歸法,得:


b =y ˉ ˉ ˉ ?a x ˉ ˉ ˉ

對 a 求導:機器學習之優雅落地線性回歸法,得:


a =∑ m i =1 (x ( i) ?x ˉ ˉ ˉ )(y ( i) ?y ˉ ˉ ˉ ) ∑ m i =1 (x ( i) ?x ˉ ˉ ˉ ) 2

注:這里略去了公式的推導過程。還有很多內容因為篇幅有限不詳細寫了,如果想全面了解的可以點擊這個鏈接跳轉到我已經錄制好的視頻

簡單線性回歸的實現

有了數學的幫助,實現簡單線性回歸就比較方便了。

首先聲明一個樣本集:

import numpy as np

x = np.array([1., 2., 3., 4., 5.])
y = np.array([1., 3., 2., 3., 5.])

公式中用到了 x 和 y 的均值:

x_mean = np.mean(x)
y_mean = np.mean(y)

求 a 和 b 的值有兩種方法。第一種是使用 for 循環:

# 分子
num = 0.0

# 分母
d = 0.0

for x_i, y_i in zip(x, y):
    num += (x_i - x_mean) * (y_i - y_mean)
    d += (x_i - x_mean) ** 2
    
a = num / d
b = y_mean - a * x_mean

第二種是使用矩陣乘:

num = (x - x_mean).dot(y - y_mean)
d = (x - x_mean).dot(x - x_mean)

a = num / d
b = y_mean - a * x_mean

注:使用矩陣乘效率更高。

求出了 a 和 b,簡單線性模型就有了:機器學習之優雅落地線性回歸法。對當前示例作圖表示:

機器學習之優雅落地線性回歸法

衡量線性回歸法的指標

誤差

一個訓練后的模型通常都會使用測試數據集測試該模型的準確性。對于簡單線性歸回模型當然可以使用 機器學習之優雅落地線性回歸法 來衡量,但是它的取值和測試樣本個數 m 存在聯系,改進方法很簡單,只需除以 m 即可,即均方誤差(Mean Squared Error):


M SE : 1 m ∑ i =1 m (y ( i) t est ?y ^ ( i) t est ) 2

np.sum((y_predict - y_true) ** 2) / len(y_true)

值得一提的是 MSE 的量綱是樣本單位的平方,有時在某些情況下這種平方并不是很好,為了消除量綱的不同,會對 MSE 進行開方操作,就得到了均方根誤差(Root Mean Squared Error):


R MS E: 1 m ∑ i =1 m (y ( i) t est ?y ^ _t est ( i) ) 2 ? ?? ?? ?? ?? ?? ?? ?? ?? ?? √ =M SE t es t ? ?? ?? ?? √

import math

math.sqrt(np.sum((y_predict - y_true) ** 2) / len(y_true))

還有一種衡量方法是平均絕對誤差(Mean Absolute Error),對測試數據集中預測值與真值的差的絕對值取和,再取一個平均值:


M AE : 1 m ∑ i =1 m | y ( i) t es t ?y ^ ( i) t es t |

np.sum(np.absolute(y_predict - y_true)) / len(y_true)

注:Scikit Learn 的 metrics 模塊中的 mean_squared_error() 方法表示 MSE,mean_absolute_error() 方法表示 MAE,沒有表示 RMSE 的方法。

R Squared

更近一步,MSE、RMSE 和 MAE 的局限性在于對模型的衡量只能做到數值越小表示模型越好,而通常對模型的衡量使用1表示最好,0表示最差,因此引入了新的指標:R Squared,計算公式為:


R 2 =1 ?S S r es i d u al S S t ot a l

機器學習之優雅落地線性回歸法,表示使用模型產生的錯誤;機器學習之優雅落地線性回歸法,表示使用 機器學習之優雅落地線性回歸法 預測產生的錯誤。

更深入的講,對于每一個預測樣本的 x 的預測值都為樣本的均值 機器學習之優雅落地線性回歸法 ,這樣的模型稱為基準模型;當我們的模型等于基準模型時,機器學習之優雅落地線性回歸法 的值為0,當我們的模型不犯任何錯誤時 機器學習之優雅落地線性回歸法 得到最大值1。

機器學習之優雅落地線性回歸法 還可以進行轉換,轉換結果為:


R 2 =1 ?M SE ( y ^ ,y ) V ary

實現也很簡單:

1 - np.sum((y_predict - y_true) ** 2) / len(y_true) / np.var(y_true)

注:Scikit Learn 的 metrics 模塊中的 r2_score() 方法表示 R Squared。

多元線性回歸

多元線性回歸模型的思路

當有不只一個自變量時,即為多元線性回歸,如圖:

機器學習之優雅落地線性回歸法

對于有 n 個自變量來說,我們想獲得的線性模型為:


y =θ 0 +θ 1 x 1 +θ 2 x 2 +.. .+θ n x n

根據簡單線性回歸的思路,我們的目標即為:

找到 機器學習之優雅落地線性回歸法, 機器學習之優雅落地線性回歸法, 機器學習之優雅落地線性回歸法,...,機器學習之優雅落地線性回歸法,使得 機器學習之優雅落地線性回歸法 盡可能的小,其中 機器學習之優雅落地線性回歸法 。

機器學習之優雅落地線性回歸法:訓練數據中第 i 個樣本的預測值;機器學習之優雅落地線性回歸法:訓練數據中第 i 個樣本的第 j 個自變量。

如果用矩陣表示即為:


y ^ ( i) =X ( i) ?θ

其中:機器學習之優雅落地線性回歸法機器學習之優雅落地線性回歸法

更進一步,將 機器學習之優雅落地線性回歸法 也使用矩陣表示,即為:


y ^ =X b ?θ

其中:機器學習之優雅落地線性回歸法, 機器學習之優雅落地線性回歸法

因此,我們目標就成了:使 機器學習之優雅落地線性回歸法 盡可能小。而對于這個公式的解,稱為多元線性回歸的正規方程解(Nomal Equation):

還有很多內容因為篇幅有限不詳細寫了,如果想全面了解的可以點擊這個鏈接跳轉到我已經錄制好的視頻

θ =(X T b Xb ) ? 1 (X T b y )

實現多元線性回歸

將多元線性回歸實現在 LinearRegression 類中,且使用 Scikit Learn 的風格。

_init_() 方法首先初始化線性回歸模型,_theta 表示 機器學習之優雅落地線性回歸法interception_ 表示截距,chef_ 表示回歸模型中自變量的系數:

class LinearRegression:
    def __init__(self):
        self.coef_ = None
        self.interceiption_ = None
        self._theta = None

fit_normal() 方法根據訓練數據集訓練模型,X_b 表示添加了 機器學習之優雅落地線性回歸法 的樣本特征數據,并且使用多元線性回歸的正規方程解求出 機器學習之優雅落地線性回歸法

def fit_normal(self, X_train, y_train):
    X_b = np.hstack([np.ones((len(X_train), 1)), X_train])
    self._theta = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y_train)

    self.interception_ = self._theta[0]
    self.coef_ = self._theta[1:]

    return self

predict() 方法為預測方法,同樣使用了矩陣乘:

def predict(self, X_predict):
    X_b = np.hstack([np.ones((len(X_predict), 1)), X_predict])
    return X_b.dot(self._theta)

score() 根據給定的測試數據集使用 R Squared 指標計算模型的準確度:

def score(self, X_test, y_test):
    y_predict = self.predict(X_test)
    return r2_score(y_test, y_predict)
Scikit Learn 中的線性回歸實現放在 linear_model 模塊中,使用方法如下:

from sklearn.linear_model import LinearRegression

線性回歸的特點

線性回歸算法是典型的參數學習的算法,只能解決回歸問題,其對數據具有強解釋性。

缺點是多元線性回歸的正規方程解 機器學習之優雅落地線性回歸法 的時間復雜度高,為 機器學習之優雅落地線性回歸法,可優化為 機器學習之優雅落地線性回歸法


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

双城市| 甘洛县| 会昌县| 禄劝| 昌都县| 旌德县| 乐业县| 台山市| 长海县| 麟游县| 耒阳市| 邯郸县| 新龙县| 黎城县| 独山县| 义乌市| 峨眉山市| 包头市| 新野县| 剑河县| 兰西县| 南丰县| 桃园县| 南和县| 辽宁省| 蒙阴县| 项城市| 石门县| 永康市| 乌兰浩特市| 博野县| 板桥市| 云林县| 湛江市| 新干县| 长阳| 剑阁县| 襄城县| 于田县| 增城市| 西乌|