欠拟合(Underfitting)與過拟合(Overfitting)
欠拟合指預測值f(x)還沒有接近真實值y。解決欠拟合是優先的。
過拟合是指預測值與真實值比對得太好,前面提到過,會有泛化的問題。解決這個問題往往需要更大的精力。
對樣本比對得太好,對資料總體往往不是好事。
參數優化parameter optimization:
調整參數,使預測值越來越準。這個過程氷是參數優化。
每一個權重的集合都表示一個關是“輸出input意味着什麼,它和label是什麼關系”的特定假設。
所有可能的權重集合就表示問題域的假設空間。
通過損失函數和優化算法,我們要幹的事就是搜素整個假設空間,找到最好的假設。
樣本量越大,假設空間就越大,存在最好假設的可能性就越大。
機器學習的工作主要就是确定參數向量中,哪個有用,哪個沒有,有多大的用。
決策邊界:指由線性模型的參數向量建立的超平面。
成本:拟合線與真實點之間的距離,是機器學習的核心。距離的總和要最小,即最小損失。
三維空間中,就是坡峰和坡谷,優化算法就是告訴坡度的。
參數VS超參數:
超參數決定了模型學習速度,參數決定了模型最終是否準确。
調優的參數就是超參數,它決定了控制優化和模型選擇。
收斂Convergence:能找到一個參數向量,使損失最小。
模型三元件:
1. 參數。轉化輸入,以幫助網絡分類。
2. 損失函數:度量每一步分類的準确性。
3. 優化函數:把模型引向最小損失。(更新函數An update function,損失函數的導數)
凸優化:
MLE:maximum likelihood estimation
最大可能性和最小成本是同一問題的兩種描述方法。
凸面:把一塊方布的四個角捏在雙手裡,向中間靠一點,中間就會向下墜。再一個例子就是碗。這些都是是凸面。
凸面可以讓算法得知,下一步朝那個方向走才能得到更好的參數向量。
坡度下降gradient descent:一個地形圖,坡峰表示誤差大,坡谷表示誤差小。初值的選擇需要基于領域知識或随機值。
目标:讓其盡快下坡。
坡度下降能感覺到每個權重的實際坡度,或方向,即權重變化引起的損失的變化,即權重的一階導,導數向了優化算法下一步的方向。
反複執行如下操作:
損失函數計算損失--》損失函數一階導明确方向--》優化,損失函數計算損失--》損失函數一階導明确方向。。。
當一階導為0時,得到不動點,即可能是極值點。
f(x,y)對x的偏導,它描述了在x方向上的最大變化速度。二進制微分中,就是正切。
線性模型就是凸優化,它一般隻有一個最優點。
坡度下降的缺點:
1.其它的非線性模型可能有好幾個坡谷,找到的可能不是全局最優。隻有一個全局最優,其它都是局部最優。後面講如何找到全局最優。
2.特征沒有标準化,導緻找到最陡坡度的時間不一樣。
随機坡度下降Stochastic Gradient Descent SGD:
差異:坡度下降是計算所有樣本的損失總和,再計算坡度,更新參數向量。
随機坡度下降是每做一個樣本,做一次損失計算,它是全批量的一個估計,更快,并發性更好。
小批量與SGD:
是SGD的一個變體,性能更好,收斂更平滑,能更好的利用硬體如GPU。
準牛頓優化法:在搜尋方向上與其它方法不同。
雅可比Jacobian矩陣:
Hessian矩陣:
Hessian計算困難,使用準牛頓算法做近似估計,如L-BFGS。
generative model:學習聯合分布p(x, y),生成一個機率圖模型,表達x,y的關系。
discriminative model:學習條件分布,用于分類p(y|x),成生一個如果x,則y的機率圖。
邏輯回歸Logistic Regression:
線性分類中的著名模型,适用于0-1分類或多标簽分類。
因變量是類别,自變量是特征。
形式也是:Ax = b
資料假設:f(x) = 1/(1 + e−θx) Logistic Function x:正無窮到負無窮, y: 0-1,正好是概論的範圍,也用σ表示。
當連導log-sigmoid函數的範圍在0-1時,就是這個樣子。
成本函數:最大可能性估計
優化函數:成本函數的導數
logit函數是Logistic函數的逆函數。
混淆矩陣,又名混淆表。
FP: False Positive實際值0,預測值1稱為1類錯誤。 01=1
FN: False Negative,實際值1,預測值0稱為2類錯誤。 10=2
TP:True Positive,實際值1,預測值1,11=3
TN: True Negative, 實際值0,預測值0,
敏感性Sensitivity與特異性specificity:
0-1分類的兩個方面。
Sensitivity,又名Recall,或true positive rate:
Sensitivity = TP / (TP + FN) 實際有病,診斷有病的正确率。因為一部分實際有病,但被診斷為沒病。
Specificity = TN / (TN + FP) 實際沒病,診斷沒病的正确率。因為一部分實際沒病,但被診斷為有病。
對于大病,要求Sensitivity高。如果兩個名額都是百分百,完美。
Accuracy = (TP + TN) / (TP + FP + FN + TN)
Precision,又名positive prediction value:
Precision = TP / (TP + FP)
F1 = 2TP / (2TP + FP + FN)
Score = MIN(Precision, Recall)