【云小課】基礎服務第42課 網絡知識一籮筐——揭開IP地址的神秘身份
931
2025-03-31
2.3.3Scikit-learn的SGD實現
Scikit-learn軟件包含許多在線學習算法。并不是所有機器學習算法都有在線學習算法,但是在線算法種類一直在穩步增長。在監督學習方面,我們將可用學習器分成分類器和回歸器,并列舉它們。
對于分類器有以下幾點說明:
sklearn.naive_bayes.MultinomialNB
sklearn.naive_bayes.BernoulliNB
sklearn.linear_model.Perceptron
sklearn.linear_model.PassiveAggressiveClassifier
sklearn.linear_model.SGDClassifier
回歸器有兩種選擇:
sklearn.linear_model.PassiveAggressiveRegressor
sklearn.linear_model.SGDRegressor
它們都可以增量學習,逐實例更新自己,但只有SGDClassifier和SGDRegressor是基于我們之前描述的隨機梯度下降優化算法,本章重點介紹它們。對于所有大型問題,SGD學習器都為最優,因為其復雜度為O(k*n*p),其中k為數據遍歷次數,n為實例數量,p為特征數(如果使用稀疏矩陣為非零特征):一個完全線性時間學習器,學習時間與所顯示的實例數量成正比。
其他在線算法將被用作比較基準。此外,基于在線學習的partial_fit 算法和mini-batch(傳輸更大塊非單個實例)的所有算法都使用相同API。共享相同API便于這些學習技術在你的學習框架中任意互換。
擬合方法能使用所有可用數據進行即時優化,與之相比,partial_fit基于傳遞的每個實例進行局部優化。即使數據集全傳遞給partial_fit,它也不會處理整批數據,而是處理每個元素,以保證學習操作的復雜度呈線性。此外,在partial_fit后,學習器可通過后續調用partial_fit來不斷更新,這樣的方法非常適合于從連續數據流進行在線學習。
分類時,唯一要注意的是,第一次初始化時需要知道要學習的種類數及其標記方法。可以使用類參數來完成,并指出標簽數值的列表。這就需要事先進行探索,疏理數據流以記錄問題的標簽,并在不平衡情況下關注其分布——相對其他類,該類在數值上會太大或太小(但是Scikit-learn提供了一種自動處理問題的方法)。如果目標變量為數值變量,則了解其分布仍然很有用,但是這對于成功運行學習算法來說不是必需的。
Scikit-learn中有兩個實現——一個用于分類問題(SGDClassfier),一個用于回歸問題(SGDRegressor)。分類實現使用一對多(OVA)策略處理多類問題。這個策略就是,給定k個類,就建立k個模型,每個類針對其他類的所有實例都會建立一個模型,因此總共創建k個二進制分類。這就會產生k組系數和k個向量的預測及其概率。最后,與其他類比較每類的發生概率,將分類結果分配給概率最高的類。如果要求給出多項式分布的實際概率,只要簡單地與其相除就能對結果歸一化。(神經網絡中的softmax層就會這么處理,下一章會看到詳細介紹。)
Scikit-learn中實現分類和SGD回歸時都會有不同的損失函數(成本函數,隨機梯度下降優化法的核心)。
可以按照以下內容用損失參數表示分類:
loss='log':經典邏輯回歸
loss='hinge':軟邊界,即線性支持向量機
loss='modified_huber':平滑hinge loss
回歸有三個損失函數:
loss='squared_loss':普通最小二乘法線性回歸(OLS)
loss='huber': 抗噪強的魯棒回歸抗Huberloss
loss='epsilon_insensitive':線性支持向量回歸
我們將給出一些使用經典統計損失函數的實例,例如對數損失和OLS。下一章討論hinge loss和支持向量機(SVMS),并詳細介紹其功能。
作為提醒(這樣讀者就不必再查閱其他機器學習輔助書籍),如果回歸函數定義為h,其預測由h(x)給出,因為X為特征矩陣,那么其公式如下:
因此,最小化的OLS成本函數如下:
在邏輯回歸中,將二進制結果0/1變換為優勢比,пy為正結果的概率,公式如下:
因此,對數損失函數定義如下:
Tensorflow python 機器學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。