TensorFlow——實現簡單的線性迴歸

點擊上方關注,All in AI中國

線性迴歸簡介

線性迴歸是監督學習的一個重要算法。在本文中,我將重新使用我從[1](參考文獻部分)中引用的以下符號。

  • xi表示“輸入”變量,也稱為輸入特徵
  • yi表示我們試圖預測的“輸出”或目標變量
  • 一對(xi,yi)被稱為訓練示例
  • m個訓練樣例列表{xi,yi; i = 1,...,m}稱為訓練集
  • 符號中的上標“i”是訓練集的索引
  • X表示輸入值的空間,Y表示輸出值的空間。在本文中,我將假設X = Y = R.
  • 函數h:X - > Y,其中h(x)是y的對應值的良好預測器,稱為假設或模型

當我們試圖預測的目標變量是連續的時,我們稱學習問題為迴歸問題。當y僅佔用少量離散值時,我們將其稱為分類問題。

線性迴歸意味著您可以將輸入相加乘以一些常量來獲得輸出,我們將按如下方式表示h函數:

TensorFlow——實現簡單的線性迴歸

其中wi是參數(也稱為權重),參數化從X到Y的線性函數的映射。為簡單起見,我們還假設x-0 = 1,我們的h(x)可能如下所示:

TensorFlow——實現簡單的線性迴歸

如果我們將w和x都視為向量,我們可以把h(x)重寫為:

TensorFlow——實現簡單的線性迴歸

其中x =(x0,x1,x2,...,xn)和w =(w0,w1,...,wn)。

到目前為止,將會出現一個問題,也就是說,我們怎樣才能獲得權重?為了回答這個問題,我們將定義一個成本函數,用於計算誤差的代價函數,作為預測的h(x)和實際y之間的差異。代價函數如下所示:

TensorFlow——實現簡單的線性迴歸

我們想選擇w以便最小化costF(w)。為此,我們將使用梯度下降算法。通過這種方式,我們反覆運行訓練集,每次遇到一個訓練樣例時,我們只根據單個訓練樣例的誤差梯度更新權重。

使用TensorFlow

初始化線性模型

在本文中,我假設我們的模型(或h函數)是以下等式:

 h(x)= w1 * x + w0,其中x0 = 1,x1 = x

初始化訓練集

我們需要通過創建以下Python腳本來初始化數據:

TensorFlow——實現簡單的線性迴歸

如果您運行此腳本,結果可能如下所示:

TensorFlow——實現簡單的線性迴歸

梯度下降算法

在初始化訓練集之後,我們反覆運行訓練集,並且每次遇到訓練示例時,我們僅根據關於該單個訓練示例的誤差的梯度來更新權重。以下代碼允許您使用TensorFlow庫為給定數據創建最佳擬合線:

TensorFlow——實現簡單的線性迴歸

運行上面腳本的結果:

TensorFlow——實現簡單的線性迴歸

結論

在本文中,我介紹瞭如何使用梯度下降算法解決線性迴歸問題。線性迴歸的一個問題是它往往不適應數據,解決這個問題的一種方法是稱為局部加權線性迴歸的技術。您可以在[1]中發現有關此技術的更多信息。

TensorFlow——實現簡單的線性迴歸

編譯出品


分享到:


相關文章: