線性回歸-1-線性回歸入門

一、線性回歸概述

I‘m Linear Regression, One of the most important mathematical models and Mother of Models.

線性回歸模型形式簡(jiǎn)單、易于建模,簡(jiǎn)單到讓人懷疑其是否有研究?jī)r(jià)值以及使用價(jià)值。但實(shí)際上,線性回歸模型可以說是最重要的數(shù)學(xué)模型之一,蘊(yùn)含著機(jī)器學(xué)習(xí)中很多重要的思想,很多功能更強(qiáng)大的非線性模型(nonlinear nodel)都是建立在它的基礎(chǔ)之上,可以被稱為是“模型之母”。

二、簡(jiǎn)單線性回歸

2.1、簡(jiǎn)單線性回歸的定義

在機(jī)器學(xué)習(xí)算法中,算法大體被分為分類回歸兩種類型,比如kNN算法屬于分類(Classification),即label為離散類別型(categorical variable),如:顏色類別、手機(jī)品牌、是否患病等。

而線性回歸是屬于回歸(regression),即label為連續(xù)數(shù)值型(continuous numerical variable),如:房?jī)r(jià)、股票價(jià)格、降雨量等。

那么什么是簡(jiǎn)單線性回歸?

  • 簡(jiǎn)單,是指只有一個(gè)樣本特征,即只有一個(gè)自變量;
  • 線性,是指方程是線性的;
  • 回歸,是指用方程來模擬變量之間是如何關(guān)聯(lián)的。

2.2、簡(jiǎn)單的小例子

首先引入一個(gè)數(shù)據(jù)源,該數(shù)據(jù)源中保存了工作年限與薪水的若干條相關(guān)信息

income = pd.read_csv(r'./file/Salary_Data.csv')
income.head()

通過seabourn繪制工作年限與收入之間的散點(diǎn)圖

# 導(dǎo)入第三方模塊
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 繪制散點(diǎn)圖
sns.lmplot(x = 'YearsExperience', y = 'Salary', data = income, ci = None, fit_reg=False)
# 顯示圖形
plt.show()

通過對(duì)數(shù)據(jù)源的可視化會(huì)發(fā)現(xiàn)工作年限與薪水存在著一定的線性關(guān)系,那么我們是否可以畫出一條直線,最大程度的擬合樣本特征和樣本數(shù)據(jù)標(biāo)記之間的關(guān)系。如下圖所示:

sns.lmplot(x = 'YearsExperience', y = 'Salary', data = income, ci = None)
plt.show()

2.3、求解的基本思路

通過上圖發(fā)現(xiàn),這條直線是我們初中就學(xué)過的一個(gè)一次函數(shù) y = ax + b,那么我們?nèi)绾吻蟪鰠?shù)ab的值呢?下面是簡(jiǎn)單的推導(dǎo)過程:

首先,則對(duì)于每個(gè)樣本點(diǎn)x^{(i)},根據(jù)我們的直線方程,預(yù)測(cè)值為:\hat{y}^{(i)}=a x^{(i)}+b。

我們所期望的是當(dāng)選取合適的ab后,直線方程能夠盡可能地?cái)M合真實(shí)情況,換句話說,就是真實(shí)值y^{(i)}與方程得到的預(yù)測(cè)值\hat{y}^{(i)}之間的差距盡可能的小。

這二者直接的值有可能為正也有可能為負(fù),因此使用絕對(duì)值來表示二者之間的差距:|y^{(i)}-\hat{y}^{(i)}|。

但是在線性回歸中,我們需要找極值,需要函數(shù)可導(dǎo),而 y=|x|不是一個(gè)處處可導(dǎo)的函數(shù),因此很自然地想到可以使用:(y^{(i)}-\hat{y}^{(i)})^2

考慮所有樣本,我們推導(dǎo)出:\sum_{i=1}^{m}\left(y^{(i)}-\hat{y}^{(i)}\right)^{2}
最終我們目標(biāo)變?yōu)椋?strong>已知訓(xùn)練數(shù)據(jù)樣本x、y ,找到a和b的值,使\sum_{i=1}^{m}\left(y^{(i)}-a{x}^{(i)}-b\right)^{2}盡可能小。

2.4、損失函數(shù)與風(fēng)險(xiǎn)函數(shù)

2.4.1、損失函數(shù)

在2.3節(jié)的思路中,我們的目的是找到一組參數(shù),使得真實(shí)值與預(yù)測(cè)值之間的差距盡可能地小,也就是損失的部分盡量小。

在機(jī)器學(xué)習(xí)中,我們使用損失函數(shù)(loss function)(也有算法是衡量擬合的程度,稱函數(shù)為效用函數(shù)(utility function))來描述沒有擬合的部分,損失函數(shù)是衡量預(yù)測(cè)模型預(yù)測(cè)期望結(jié)果表現(xiàn)的指標(biāo),用來度量模型一次預(yù)測(cè)的好壞。損失函數(shù)越小,模型的魯棒性越好。
\sum_{i=1}^{m}\left(y^{(i)}-a{x}^{(i)}-b\right)^{2}

常見的損失函數(shù)有一下幾種:

  • 0-1損失函數(shù):用來表述分類問題,當(dāng)預(yù)測(cè)分類錯(cuò)誤時(shí),損失函數(shù)值為1,正確為0
  • 平方損失函數(shù):用來描述回歸問題,用來表示連續(xù)性變量,為預(yù)測(cè)值與真實(shí)值差值的平方。(誤差值越大、懲罰力度越強(qiáng),也就是對(duì)差值敏感)L(Y, f(X))=(Y-f(X))^2
  • 絕對(duì)損失函數(shù):用在回歸模型,用距離的絕對(duì)值來衡量L(Y, f(X))=|Y-f(X)|
  • 對(duì)數(shù)損失函數(shù):是預(yù)測(cè)值Y和條件概率之間的衡量。事實(shí)上,該損失函數(shù)用到了極大似然估計(jì)的思想。P(Y|X)通俗的解釋就是:在當(dāng)前模型的基礎(chǔ)上,對(duì)于樣本X,其預(yù)測(cè)值為Y,也就是預(yù)測(cè)正確的概率。由于概率之間的同時(shí)滿足需要使用乘法,為了將其轉(zhuǎn)化為加法,我們將其取對(duì)數(shù)。最后由于是損失函數(shù),所以預(yù)測(cè)正確的概率越高,其損失值應(yīng)該是越小,因此再加個(gè)負(fù)號(hào)取反。L(Y, f(X))=-\log P(Y | X)

以上損失函數(shù)是針對(duì)于單個(gè)樣本的,但是一個(gè)訓(xùn)練數(shù)據(jù)集中存在N個(gè)樣本,N個(gè)樣本給出N個(gè)損失,如何進(jìn)行選擇呢?

這就引出了風(fēng)險(xiǎn)函數(shù)。

2.4.2、風(fēng)險(xiǎn)函數(shù)

期望風(fēng)險(xiǎn):對(duì)所有樣本預(yù)測(cè)錯(cuò)誤程度的均值【全局】

期望風(fēng)險(xiǎn)是損失函數(shù)的期望,用來表達(dá)理論上模型f(X)關(guān)于聯(lián)合分布P(X,Y)的平均意義下的損失。又叫期望損失/風(fēng)險(xiǎn)函數(shù)。期望風(fēng)險(xiǎn)是全局的,基于所有樣本點(diǎn)損失函數(shù)最小化。期望風(fēng)險(xiǎn)是全局最優(yōu),是理想化的不可求的。
R_{e x p}=E_{p}[L(Y, f(X))]=\int_{X \times Y} L(y, f(x)) \cdot P(x, y) d x d y

經(jīng)驗(yàn)風(fēng)險(xiǎn):多次預(yù)測(cè)的錯(cuò)誤程度的均值【局部】

模型f(X)關(guān)于訓(xùn)練數(shù)據(jù)集的平均損失,稱為經(jīng)驗(yàn)風(fēng)險(xiǎn)或經(jīng)驗(yàn)損失。經(jīng)驗(yàn)風(fēng)險(xiǎn)是局部的,基于訓(xùn)練集所有樣本點(diǎn)損失函數(shù)最小化。經(jīng)驗(yàn)風(fēng)險(xiǎn)是局部最優(yōu),是現(xiàn)實(shí)的可求的。

其公式含義為:模型關(guān)于訓(xùn)練集的平均損失(每個(gè)樣本的損失加起來,然后平均一下)
R_{e x p}=\frac{1}{n} \sum_{i=1}^{n} L(Y, f(X))

經(jīng)驗(yàn)風(fēng)險(xiǎn)最小的模型為最優(yōu)模型。在訓(xùn)練集上最小經(jīng)驗(yàn)風(fēng)險(xiǎn)最小,也就意味著預(yù)測(cè)值和真實(shí)值盡可能接近,模型的效果越好。公式含義為取訓(xùn)練樣本集中對(duì)數(shù)損失函數(shù)平均值的最小。

期望風(fēng)險(xiǎn)是模型關(guān)于聯(lián)合分布的期望損失,經(jīng)驗(yàn)風(fēng)險(xiǎn)是模型關(guān)于訓(xùn)練樣本數(shù)據(jù)集的平均損失。根據(jù)大數(shù)定律,當(dāng)樣本容量N趨于無窮時(shí),經(jīng)驗(yàn)風(fēng)險(xiǎn)趨于期望風(fēng)險(xiǎn)

因此很自然地想到用經(jīng)驗(yàn)風(fēng)險(xiǎn)去估計(jì)期望風(fēng)險(xiǎn)。但是由于訓(xùn)練樣本個(gè)數(shù)有限,可能會(huì)出現(xiàn)過擬合的問題,即決策函數(shù)對(duì)于訓(xùn)練集幾乎全部擬合,但是對(duì)于測(cè)試集擬合效果過差。因此需要對(duì)其進(jìn)行矯正

結(jié)構(gòu)風(fēng)險(xiǎn):經(jīng)驗(yàn)風(fēng)險(xiǎn) + 正則項(xiàng)(懲罰項(xiàng))

R_{s r m}=\frac{1}{n} \sum_{i=1}^{n} L\left(y_{i}, f\left(x_{i}\right)\right)+\lambda J(f)

結(jié)構(gòu)風(fēng)險(xiǎn)最小化:當(dāng)樣本容量不大的時(shí)候,經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化容易產(chǎn)生“過擬合”的問題,為了“減緩”過擬合問題,提出了結(jié)構(gòu)風(fēng)險(xiǎn)最小理論。結(jié)構(gòu)風(fēng)險(xiǎn)最小化為經(jīng)驗(yàn)風(fēng)險(xiǎn)與復(fù)雜度同時(shí)較小。

通過公式可以看出,結(jié)構(gòu)風(fēng)險(xiǎn):在經(jīng)驗(yàn)風(fēng)險(xiǎn)上加上一個(gè)正則化項(xiàng)(regularizer),或者叫做罰項(xiàng)(penalty) 。正則化項(xiàng)是J(f)是函數(shù)的復(fù)雜度再乘一個(gè)權(quán)重系數(shù)(用以權(quán)衡經(jīng)驗(yàn)風(fēng)險(xiǎn)和復(fù)雜度)

2.5、參數(shù)學(xué)習(xí)算法的基本思路

對(duì)于所有的參數(shù)學(xué)習(xí)模型來說,推導(dǎo)思路大致為:

  1. 通過分析問題,確定問題的損失函數(shù)或者效用函數(shù)
  1. 然后通過最優(yōu)化損失函數(shù)或者效用函數(shù),獲得機(jī)器學(xué)習(xí)的模型

區(qū)別在于模型不同,建立的目標(biāo)函數(shù)不同,優(yōu)化的方式也不同。

2.6、最小二乘法

回歸到之前的問題,如何計(jì)算\sum_{i=1}^{m}\left(y^{(i)}-a{x}^{(i)}-b\right)^{2}的最小值呢?這里引入最小二乘法的概念

最小二乘法源于法國(guó)數(shù)學(xué)家阿德里安的猜想:

對(duì)于測(cè)量值來說,讓總的誤差的平方最小的就是真實(shí)值。這是基于,如果誤差是隨機(jī)的,應(yīng)該圍繞真值上下波動(dòng)。

....推導(dǎo)過程未完待續(xù)

最小二乘法得到a、b的表達(dá)式:

a=\frac{\sum_{i=1}^{m}\left(x^{i}-\bar{x}\right)\left(y^{i}-\bar{y}\right)}{\sum_{i=1}^{m}\left(x^{(i)}-\bar{x}\right)^{2}} \quad b=\bar{y}-a \bar{x}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容