回歸與分類
回歸與分類
機器學習的主要任務便是聚焦於兩個問題:回歸與分類
回歸與分類
回歸的定義
- 機器學習的過程就是尋找函數的過程,通過訓練獲得一個函數映射,給定函數的輸入,函數會給出相應的一個輸出,若輸出結果是一個數值scalar時,即稱這一類機器學習問題為回歸問題
- 就如李宏毅老師所說:Regression就是找到一個函數function,通過輸入特徵x,輸出一個數值scalar
- 例如:房價數據,根據位置、周邊、配套等等這些維度,給出一個房價的預測
分類與回歸的區別
- 分類是基於數據集,作出分類選擇
- 分類與回歸區別在一輸出變量的類型
- 輸出是離散的就可以做分類問題,即通常多個輸出,輸出i是預測為第i類的置信度
- 輸出是連續的就可以做回歸問題 ,即單連續值輸出,跟真實值區別作為損失
模型步驟
- step1:模型假設,選擇模型框架(線性模型)
- step2:模型評估,如何判斷眾多模型的好壞(損失函數)
- step3:模型優化,如何篩選最優的模型(梯度下降)
一、線性模型
step1 模型假設
- 給定n維輸入 x = [x1,x2,….,xn]^T
- 線性模型有一個n維權重和一個標量偏差 即w與b
- 輸出是輸入的加權和 y = w1x1 + w2x2 + … +wnxn +b
- 向量版本 y = <w,x> + b
假設1:影響房價的關鍵因素是卧室個數,衛生間個數,和居住面積,記為x1,x2,x3
假設2:成交價是關鍵因素的加權和 則 y = w1x1 + w2x2 +w3x3 + b,
權重和偏置的實際值在後面決定
step2 模型評估(衡量預估質量)
- 收集和訓練數據
- 如何判斷眾多模型的好壞(根據損失函數判斷)
1.平方損失 y為真實值,y1為估計值(預測值)
$$
p(y,y1) = 1/2(y-y1)^2
$$
2.訓練損失
$$
p(X,y,w,b) = ∑(y[i] – (b + <w,x[i]>))^2
$$
step3 選取最優模型(梯度下降)
- 為了獲得最優模型故要使L(w,b)損失函數值最小化,而對於L(w,b)實質上就是w,b的函數,因此可以通過求偏微分來尋找其最小化損失點
最小化損失學習參數
$$
w* , b* = arg min(X,y,w,b)
$$
-
而對於梯度下降來講
-
1.首先要挑選一個初始值 w0,同時引入學習率(步長的超參數) η
-
2.重複迭代參數 t =1,2,3
-
3.沿梯度方向將增加損失函數值
$$
w[t] = w[t-1] -η*(∂L/∂w[t-1])
$$
註:上式中減號意思為沿着梯度反方向
import numpy as np
import matplotlib.pyplot as plt
def my_func(x): #定義原函數
return x**4 + 2*x**3 - 3*x**2 -2*x
def grad_func(x): #定義導數
return 4*x**3 + 6*x**2 -6*x -2
eta = 0.09 #學習係數
x = -1.5 #定義自變量x起始值
record_x = [] #記錄x值
record_y = [] #記錄y值
for i in range(20): #將x循環20次
y = my_func(x)
record_x.append(x) #將記錄添加
record_y.append(y)
x -= eta*grad_func(x) #梯度下降法公式 學習係數*導數值
x_f = np.linspace(-2.8,1.6)
y_f = my_func(x_f)
plt.plot(x_f,y_f)
plt.scatter(record_x,record_y)
plt.xlabel("x", size=14)
plt.ylabel("y", size=14)
plt.grid()
plt.show()
二、廣義線性模型(generalized linear model)
$$
y=g^-1 (w^Tx+b)
$$
上面式子即為廣義線性模型的一種表達,其中g(.)被稱為聯繫函數,同時要求單調可微。使用廣義線性模型可以實現強大的非線性函數映射功能(比如對數線性回歸,令g(.) = ln(.),此時模型預測值對應的是真實值標記在指數尺度上的變化)
那麼線性模型的輸出是一個實值,而分類任務的標記是離散值,怎麼把二者聯繫起來呢?
- 廣義線性模型已經給了我們答案,我們要做的是找到一個單調可微的聯繫函數,把二者聯繫起來
- 對於一個二分類任務,比較理想的函數是階躍函數(激活函數)
對數線性回歸(log-linear regression)
由於單位階躍函數不連續,所以不能直接用作聯繫函數。故思路轉換為如何在一定程度上近似單位階躍函數呢? 對數幾率函數正是我們所需常用的替代函數:sigmoid函數
- 對於分類任務,由於是離散的數據,可以通過廣義線性模型的非線性函數映射進行,簡單來說將其離散數據映射在相似函數之上,也就是激活函數
總結
那麼對於一整個回歸過程來說 首要要假設模型去進行預選,接着要進行模型的評估計算損失函數,最後一步則是對損失函數進行優化即梯度下降算法
將一整個回歸過程放在神經網絡中時 在正向傳播中,首先進行將數據值x進行輸入,其次通過權值和的計算以及激活函數得到輸出值,傳輸至第二層,層層往下,最後輸出值 根據輸出值與真實值之間的distance即為loss函數