線性回歸是統計學中最基本的數學模型,它的基本數學表述為:y=
ax+b
y =a
x+
b,其中的
x x
自變數,在資料分析(機器學習)中被稱為特徵值(features),
y' role="presentation" style="position: relative;">y
y被稱為因變數,資料分析(機器學習)中被稱為標籤(labels)。當我們知道兩組組x,
y x,y
的時候,我們就可以得到a,
b a,b
的值,進而,當給出乙個自變數(特徵)時,我們就可以**出對應的因變數(標籤)。
可以然而在實際的使用過程中,會出現以下的問題:
當解決了以上兩個問題之後,就可以認為乙個基本的線性回歸模型建立完成了(其實,在其他更加複雜的監督學習模型中,面臨的問題基本是相同的,只是解決手段更加麻煩。)
特徵值不唯一的解決辦法就是把多個特徵組成乙個特徵向量,也就是在使用過程中,我們進行運算的特徵不再是
x x
而是乙個由x1
,x2,
...,
xi' role="presentation" style="position: relative;">x1,
x2,.
..,x
ix1,
x2,.
..,x
i共同組成的特徵向量
x x
,相應的引數也就變為了乙個向量,至此線性回歸模型變為了y=
axy =a
x(注意,此處根據矩陣的運算規則,引數應為行向量,特徵應為列向量)。當然,樣本資料不可能只用一條,因此,許多的樣本疊加形成了矩陣。至此,特徵值不唯一的問題從數學上解決了。
如何確定a,
b a,b
的值?解決思路很簡單,找到一條線(如果特徵值為3則為面,更高維則為超平面)使得訓練資料的各個點但這條線的距離最短。在尋找這條線的過程中,機器學習使用的方法和統計學方法並不相同。這裡簡單的介紹統計學的方法,規定 ∑(
yi−y
i^)2
=∑(y
i−a^
xi−b
^)2 ∑(y
i−yi
^)2=
∑(yi
−a^x
i−b^
)2
用來表示各個點到線的距離之和,其中^ ^
表示**值。當∑(
yi−y
i^)2
∑ (y
i−yi
^)
2最小時我們可以認為這條線最為合理。如何通過數學方法找到a^
,b^ a^,
b^
這裡不做討論。
計算機的運算過程如下:
具體的**如下
def
fit(self, x, y):
''' :param x: 訓練資料的自變數(特徵)
:param y: 訓練資料的因變數(標籤)
:return: self
'''m_samples, n_features = x.shape
self.__initialize_weights(n_features)
x = np.insert(x, 0, 1, axis=1)
y = np.reshape(y, (m_samples, 1))
self.train_errors =
if self.gradient == true:
for i in range(self.n_iterations):
y_pred = x.dot(self.w)
loss = np.mean(0.5 * (y_pred - y) ** 2) + self.regularization(self.w)
a_grad = x.t.dot(y_pred - y) + self.regularization.grad(self.w)
self.w = self.w - self.learning_rate * a_grad
else:
x = np.matrix(x)
y = np.matrix(y)
_coef = x.t.dot(x)
_coef = _coef.i
_coef = _coef.dot(x.t)
self.w = _coef.dot(y)
在估計引數a^
a
^的過程為:根據已知引數得到y_pred(即y^
y
^), 使用y-y_pred的到損失值,根據損失值確定引數的變化梯度a^
grad
=xt∗
(y−y
^)a ^g
rad=
xt∗(
y−y^
)(注意此處涉及線性運算規則,順序不可以錯)。將引數根據學習速率(learning_rate)和變化梯度(a_grad)進行從新計算,直至迴圈結束。
這裡在構建特徵值的時候,直接將引數b^
=0b ^=
0加入,並未對其進行調整,有待改進。另外,當資料模型的損失小於一定值時,也可以結束迴圈。
至此模型引數估計完成,完整**見github。
線性回歸資料分析
首先,什麼是回歸,回歸分析研究的是多個變數之間的關係。它是一種 性的建模技術,它研究的是因變數 目標 和自變數 器 之間的關係。這種技術通常用於 分析,時間序列模型以及發現變數之間的因果關係。其次,回歸分析的好處比較多,主要有以下幾點 1 它表明自變數和因變數之間的顯著關係 2 它表明多個自變數對乙...
分類和回歸 一 線性模型
分類和回歸 spark.mlib提供了多種方法用於用於二分類 多分類以及回歸分析。下表介紹了每種問題型別支援的演算法。問題型別 支援方法 二分類線性svms 邏輯回歸 決策樹 隨機森林 梯度增強樹 樸素貝葉斯 多分類邏輯回歸 決策樹 隨機森林 樸素貝葉斯 回歸線性最小二乘法 決策樹 隨機森林 梯度增...
TensorFlow 例項一 線性回歸模型
encoding utf 8 create by ibf on 2018 5 6 import numpy as np import tensorflow as tf 1.構造乙個資料 np.random.seed 28 n 100 x np.linspace 0,6,n np.random.nor...