使用梯度下降法的線性回歸【用編碼示例解釋】

已發表: 2020-12-21

無論您是立志成為軟件開發人員、數據科學家還是數據分析師,機器學習仍在進行。 要在線性回歸方面做出認真的努力,您必須精通 Python。 從初始階段開始可能是一項乏味的任務,本文將幫助您更徹底地了解回歸。

梯度下降法因其必須提供的優化技術而在各種迭代中被選擇。 使用該算法,減小尺寸是可行的,例如邏輯回歸和神經網絡。 在開始使用梯度之前,讓我們看一下線性回歸。

閱讀:數據科學的機器學習算法

目錄

什麼是線性回歸?

它是用於對因變量和一個或多個自變量之間的關係建模的線性方法。 此類變量之間的線性關係將以 ay= mx+b 方程格式表示。

它是一種受監控的機器學習算法,它將根據給定的 x 因變量和 y 作為另一個負責引起影響的變量來增強其學習曲線。 這種性質有助於預測 x 和 y 的值和確定性因子。

什麼是梯度下降?

梯度回歸的使用涉及優化用於找到函數所需參數的值的算法,這能夠直接最小化函數的成本。

讓我們用一個場景來理解這個概念,假設你想在漆黑的環境中下降一個堡壘。 在此期間,讓我們假設您完全殘障,需要想出最短和最容易的距離才能回來。 梯度下降將是用於找出到達目的地的最佳方式的資源。 有了基本的方向輸入,該算法就可以繪製圖表並建議最佳路線。

梯度是機器學習中最常用和被廣泛接受的算法之一,它也被認為是在早期階段掌握機器學習的基礎。

為了更好地近似梯度,讓我們嘗試使用示例中的代碼來實現它,在 NumPy 的幫助下使用 python。

從 NumPy 導入 *

# y = mx + b

# m 是斜率,b 是 y 截距

def compute_error_for_line_given_points(b,m,點):

總誤差 = 0

對於範圍內的 i(0,len(點)):

x = 點數[i, 0]

y = 點數[i, 1]

總誤差 += (y – (m * x + b)) ** 2

返回總錯誤/浮動(len(點))

def step_gradient(b_current, m_current, points, learningRate):

b_gradient = 0

m_gradient = 0

N = 浮動(長度(點))

對於範圍內的 i(0,len(點)):

x = 點數[i, 0]

y = 點數[i, 1]

b_gradient += -(2/N) * (y – ((m_current * x) + b_current))

m_gradient += -(2/N) * x * (y – ((m_current * x) + b_current))

new_b = b_current – (learningRate * b_gradient)

new_m = m_current – (learningRate * m_gradient)

返回 [new_b, new_m]

def gradient_descent_runner(點,starting_b,starting_m,learning_rate,num_iterations):

b = 開始_b

m = 開始_m

對於我在範圍內(num_iterations):

b, m = step_gradient(b, m, array(points), learning_rate)

返回 [b, m]

定義運行():

點= genfromtxt(“data.csv”,分隔符=“,”)

學習率 = 0.0001

initial_b = 0 # 初始 y 截距猜測

initial_m = 0 # 初始斜率猜測

迭代次數 = 1000

打印“在 b = {0}, m = {1}, error = {2} 處開始梯度下降”.format(initial_b, initial_m, compute_error_for_line_given_points(initial_b, initial_m, points))

打印“正在運行……”

[b, m] = gradient_descent_runner(points, initial_b, initial_m, learning_rate, num_iterations)

打印“經過 {0} 次迭代 b = {1}, m = {2}, error = {3}”.format(num_iterations, b, m, compute_error_for_line_given_points(b, m, points))

如果 __name__ == '__main__':

跑步()

代碼參考

這是梯度搜索程序的可視化表示,其中通過將點繪製在一條線上來解決線性回歸中的問題。 該代碼演示了它的工作原理,並有助於沿一條線設置多個點。 梯度下降試圖找到這些與誤差函數有關的參數的最佳值。

該代碼包含一個標記為“運行”的特殊函數。 它有助於定義算法中使用的一組參數,以根據變量的行為和線斜率進行一組初始預測。 其他因素涉及實現梯度下降所需的迭代次數,格式如下所示:

initial_b = 0 # 初始 y 截距猜測

initial_m = 0 # 初始斜率猜測

迭代次數 = 1000

您可以很容易地理解梯度方法非常簡單明了。 一旦您了解了它的功能,那麼您唯一需要關注的部分就是您有興趣優化的功能成本。

目標是不斷努力為變量的每個值進行不同的迭代,評估它們的成本,並創建新的變量,從而在程序中啟動一個更好和更低的成本。

必讀:機器學習面試題

梯度下降技巧

1. 學習率

優化協議有助於降低學習率值,即使是小數點,嘗試洗牌適合平台的不同值,然後選擇最佳工作值。 學習可以更快,更富有成效,要做到這一點,請確保限制通過每個數據集的次數。 理想的數字在 1 到 10 之間。

2. 繪製平均成本

由於運行算法期間花費的額外時間,每個數據集實例的訓練時間可能會導致延遲。 為了獲得更好的結果,請選擇超過 100 或 1000 的平均值,以獲得更好的算法找到更好的學習趨勢的機率。

概括

在本文中,您了解了梯度以及如何創建這樣的算法,這有助於使用學習的回歸模型進行精確且更有效的預測。 要更全面、更深入地了解真實案例場景,請註冊 upGrad。 我們提供專為有抱負的數據科學家和機器學習申請者設計的精選課程。

引領人工智能驅動的技術革命

機器學習和人工智能的 PG 文憑
了解更多