線性迴歸
算法方程:hθ(x)=∑i=0nθixi=θTx
損失函數:J(θ0,θ1,…,θn)=2m1∑i=1m(hθ(x(i))−y(i))2
將損失函數看做是關於θ的函數。
最小化損失函數:凸函數可以找到全局最優解,算法梯度下降。
θ0:=θ0−αm1∑i=1m(hθ(x(i))−y(i))x0(i)θ1:=θ1−αm1∑i=1m(hθ(x(i))−y(i))x1(i)θ2:=θ2−αm1∑i=1m(hθ(x(i))−y(i))x2(i)…
學習率:θ1:=θ1−αdθ1dJ(θ1)
與收斂速度相關
過擬合與欠擬合:我們的假設函數曲線對原始數據擬合得非常好,但喪失了一般推到性,以致於預測效果很差。
解決方法:正則化
作用:控制參數幅度;限制參數搜索空間
J(θ)=2m1[∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθj2]
假設原始線程方式是hθ(x)=θ1x1+θ2x2+θ3x3+θ4x4,在線訓練過程中,根據訓練集數據大小,每一個θ的都可能非常大,或者非常小,這條線抖動非常大。如果在損失函數中加入∑j=1nθj2,因爲損失函數要求最小值,所以每一個θ的值就不可能很大。
λ是一個超參數。λ太小,正則化項不起作用;λ太大,學習到的參數主要由正則化項決定,與訓練數據無關,也是錯誤的。
通常使用L1、L2正則化。
logistic迴歸
線性迴歸在分類問題上使用,健壯性差,所以使用logistic迴歸。
sigmoid函數值域在(0,1)之間,可以看做一個概率函數。
在線性迴歸外面套一層sigmoid函數。
算法方程:hθ(x)=g(θ0+θ1x1+θ2x2)
hθ(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x22)
損失函數:cost(hθ(x),y)={−log(hθ(x))−log(1−hθ(x)) if y=1 if y=0
J(θ)=−m1[∑i=1my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]
梯度下降優化公式:θj:=θj−α∂θj∂J(θ)
加入正則化:J(θ)=[−m1∑i=1my(i)log(hθ(x(i))+(1−y(i))log1−hθ(x(i))]+2mλ∑j=1nθj2