資料分析模型學習(一) 線性回歸

2021-08-26 05:50:27 字數 2615 閱讀 8922

線性回歸是統計學中最基本的數學模型,它的基本數學表述為: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...