**
最近學習了一些機器學習的演算法,做了一些實踐,在此總結一下已學演算法中自認為的核心思想,作筆記之用,也請大家指出錯誤,謝謝。(再次強調,以下內容是極有可能出錯的)
1、如何描述回歸的準確程度(擬合度)?
可以用代價函式來描述,比如用 **值與真實值差的平方和的平均值。
2、怎麼產生**值?
對於線性回歸(形似kx+b),可以直接用ax1+bx2+cx3+…+n[^1]描述,而對於形似曲線的回歸問題,需要先將特徵處理成多項式,e.g. x1、x2可以處理成x1x1、x1x2、x2x2,相當於增加了特徵數量,並且可以調整最高次來增加項數。
[^1]"n"指乙個常數,作為偏置項。
3、怎麼確定a、b……n?
梯度下降
可以用 梯度下降法 來確定,先初始化這些係數(比如隨機產生),然後用代價函式分別對這些係數求偏導grad,如果只有兩個係數,可以想象一幅以係數作為x、y軸,代價函式值作為z軸的圖,形狀像山脈。
假設初始化的係數對應的點在山頂上,求偏導相當於確定了下山的方向,然後設定乙個學習率 lr(乙個值),a = a - lr * a_grad , b = b - lr * b_grad,這樣即可重新整理係數(就像下山),並且在重新整理的過程中降低代價函式的值,最後可能可以得到理想的係數,以此完成學習。(有時可能走進乙個小溝裡出不來,或者是一直到不了溝底)
關於梯度下降法可能的區域性極小值:
1、可以試試對引數進行多次不同的初始化,取其中誤差最小的組。
2、採用動量的思想(第一次看到時真是驚了)
——來自於keras作者寫的《python深度學習》
如果將梯度下降的過程比喻成小球下山,可以想象到如果坡度很陡時,小球坑底速度依然很快,可能會掠過坑底。具體來說,就是要描述乙個新的更新梯度的方式,這個方式不僅考慮誤差是否到了最小,同時還考慮上一次的更新。簡單實現如下:
past_velocity =
0momentum =
0.1//不變的動量因子
//迴圈內部
w,loss,gradient =
(初始化)
//velocity儲存了「動量」
velocity = past_velocity * momentum - learning_rate * gradient
w = w + momentum * velocity - learning_rate * gradient
past_velocity = velocity
這個動量因子的目的我認為是為了通過調節來避開「動量過大、過小」時可能錯過最小值、還在區域性極小值的問題。
標準方程
這是解決問題3的第二種思想。
梯度下降中用到的代價函式(差值的平方和)可以用矩陣的乘法來表示,x表示資料矩陣,w表示係數矩陣,y表示真實值,
則代價函式 = (y - wx)的轉置 * (y - wx)
用這個矩陣表示的代價函式對係數矩陣求偏導(涉及到矩陣求導的知識),化簡得
令 = 右邊等於 0(這裡有乙個問題,等於零說明到了極值點,但實際要求的是最小值,如何判斷是否是極大值呢?一直找不到回答),則可以直接求出w的值。
w = (?t ?)^−1 * xt y
4、用方程法求逆矩陣時如果遇到不滿秩(特徵比資料組數多)怎麼辦?
如果可以,手動刪掉不重要的特徵或者是增加資料量當然是最方便的,但如果特徵都對**有足夠的影響呢?這裡就要引入正則化的思想。給要求逆的矩陣加乙個項:w = (?t ? +λe)^−1 * xt y,這樣就避免了求不了逆矩陣的問題。這樣增加後代價函式也變成了
直接從代價函式理解,如果λ比較大,在整個代價函式趨向於最小的過程中,θ就會被減小,相當於減小了係數對擬合的影響。q不確定時,被稱為彈性網;q=2時,被稱為嶺回歸;q=1且給係數加上絕對值時,被稱為lasso。
這是各係數關於λ的影象
一般將λ(嶺係數)選在平滑區域(k0後)。lasso不知道咋確定係數……
5、一些小技巧
對於機器學習來說,資料量似乎是多多益善,資料量不夠多時,則可以採用交叉驗證的思想,即:將資料集分成多份,每次取用不同的部分作為訓練集和測試集。
有時資料由於單位的原因,值相差很大,這樣也不太好,可以採用將資料對映到某一小區間的思想,比如「歸一化」和「均值標準化」。
歸一化:
newvalue = (oldvalue-min)/(max-min) 對映到0~1,可以通過-0.5再*2的方式擴充為-1 ~1。
均值標準化:
newvalue = (oldvalue-u)/s
u為平均值,s為方差。對映到-1/2~1/2.
總結解決回歸問題的核心思想,就是先要用函式描述誤差,再用誤差函式的值與影響因素(資料的特徵)建立聯絡(新的函式),以此來降低誤差,找到理想的回歸方式。其中有兩種策略:梯度下降、標準方程。由標準方程中用到的矩陣運算可知,在資料量龐大時標準方程法的運算量會增加很多,因此兩種方法各有優勢。
在學習回歸問題時,有些小技巧的思想也值得記憶:
1、新增正則項來限制某一變數。
2、在同樣的資料裡多次取不同部分來增加學習資料。
3、用對映到某一較小區間的方式來減小資料間的差距。
4、引入動量的思想來優化梯度下降。
第一次寫部落格,希望以後能養成習慣。
機器學習演算法的PCA思想
pca顧名思義,就是找出資料裡最主要的方面,用資料裡最主要的方面來代替原始資料。具體的,假如我們的資料集是n維的,共有m個資料 x 1 x 2 x m 我們希望將這m個資料的維度從n維降到n 維,希望這m個n 維的資料集盡可能的代表原始資料集。我們知道資料從n維降到n 維肯定會有損失,但是我們希望損...
機器學習總結
1.常用的機器學習演算法包括 監督學習 半監督學習 無監督學習 增強學習 遺傳演算法 監督學習 就是人為的設定規則,告訴機械人該執行怎麼樣的行動。無監督學習就是不告訴機械人具體的實施辦法,只給定規則,讓機械人過程當中自己學習總結經驗 半監督學習就是結合少標籤的樣本和大量無標籤的樣本進行學習和分類 強...
機器學習總結
0機器學習概述 什麼是機器學習?機器學習的分類 兩種分類方式。機器學習的一般流程 模型訓練中的交叉驗證 將資料分為幾份,每份第一次訓練做訓練集,第二次做了測試集 機器學習的評價 混淆矩陣 auc roc 一 線性回歸 解析解的求解過程,要求自己推導 目標函式,過擬合,正則式 模型效果 mse rms...