請記住,一個重要的關鍵是建立一個成功的分類要仔細構成具體和簡單的術語,因此,它可以由一個有限的回答你的問題預定的類別的列表中的目標變量。請注意,並非所有的功能輸入的數據也同樣有用,你必須選擇的功能被用來作為預測指標變量仔細,你可能需要嘗試多種組合,以發現哪些是 有用的分類表現良好。記住,務實是非常重要的。有了這些想法,回想起到品酒的例子的目標 你的機器的分類應該是幫助你到晚餐時間,不是為了幫助你做微妙的審美判斷生活中的美好事物。
參考:http://en.wikipedia.org/wiki/Stochastic_gradient_descent
1 線性回歸
了解邏輯回歸之前先了解下線性回歸:因變量和自變量之間存在線性關系。一般模型如下:
從一般模型可以看出Y和X(X1,X2,X3...)之間存在線性關系。線性回歸的目的就是為了確定因變量和自變量的關系程度,換言之,就是求回歸模型的參數。
2 邏輯回歸
(1) why need it?
要說邏輯回歸的優點,自然要先說下線性回歸的缺點,主要有難以處理以下兩個問題
a. 因變量Y如果不是數值型
b. 因變量與自變量不存在線性關系
(2) 邏輯回歸的一般形式
P是概率,是某個事件發生的概率,處理類別屬性,例如是否是男性,是否是色狼?
而且進行了logit變換。也就是說logit(P)與自變量之間存在線性關系,而p顯然和X不存在線性關系。
那為什么是logit變換,不是XXX其他的變換,這里有一個前提假設:概率與自變量的關系往往是 S 型的曲線
(3)參數估計
模型有了,需要利用已知的樣本來進行參數估計,最大似然估計用的比較多。mahout中用的是隨機梯度下降法(SGD)。此處介紹下隨機梯度下降法。
a. 梯度下降法
搜索尋優的一個過程,假定一個初始狀態,然后不斷更新,知道達到目標函數的極小值。其中 稱為學習率,他決定梯度下降搜索的步長。算法流程如下:
其中W表示權重。
b. 隨機梯度下降
sgd解決了梯度下降的兩個問題: 收斂速度慢和陷入局部最優。修正部分是權值更新的方法有些許不同。
3 基於梯度下降的學習
對於一個簡單的機器學習算法,每一個樣例包含了一個(x,y)對,其中一個輸入x和一個數值輸出y。我們考慮損失函數,它描述了預測值
和實際值y之間的損失。預測值是我們選擇從一函數族F中選擇一個以w為參數的函數
的到的預測結果。
我們的目標是尋找這樣的函數,能夠在訓練集中最小化平均損失函數
由於我們不知道數據的真實分布,所以我們通常使用
來代替
經驗風險用來衡量訓練集合的效果。期望風險E(f)描述了泛化(generation)的效果,預測未知樣例的能力。
如果函數族F進行足夠的限制(sufficiently restrictive),統計機器學習理論使用經驗風險來代替期望風險。
3.1 梯度下降
我們經常使用梯度下降(GD)的方式來最小化期望風險,每一次迭代,基於更新權重w:
,
為學習率,如果選擇恰當,初始值選擇合適,這個算法能夠滿足線性的收斂。也就是:
,其中
表示殘余誤差(residual error)。
基於二階梯度的比較出名的算法是牛頓法,牛頓法可以達到二次函數的收斂。如果代價函數是二次的,矩陣是確定的,那么這個算法可以一次迭代達到最優值。如果足夠平滑的話,
。但是計算需要計算偏導hession矩陣,對於高維,時間和空間消耗都是非常大的,所以通常采用近似的算法,來避免直接計算hession矩陣,比如BFGS,L-BFGS。
3.2 隨機梯度下降
SGD是一個重要的簡化,每一次迭代中,梯度的估計並不是精確的計算,而是基於隨機選取的一個樣例
:
隨機過程 依賴於每次迭代時隨機選擇的樣例,盡管這個簡化的過程引入了一些噪音,但是我們希望他的表現能夠和GD的方式一樣。
隨機算法不需要記錄哪些樣例已經在前面的迭代過程中被訪問過,有時候隨機梯度下降能夠直接優化期望風險,因為樣例可能是隨機從真正的分布中選取的。
隨機梯度算法的收斂性要滿足: 並且
二階隨機梯度下降:
這種方法並沒有減少噪音,也不會對計算有太大改進。
3.3 隨機梯度的一些例子
下面列了一些比較經典的機器學習算法的隨機梯度: