Python大規模機器學習》—1.1.3使用Python進行向上擴展">《Python大規模機器學習》—1.1.3使用Python進行向上擴展
599
2025-04-01
第3章實現快速SVM
上一章內容已接觸了在線學習,與批量學習相比,讀者可能已經對其簡單性、有效性和可擴展性感到驚訝。盡管每次只學習單個示例,SGD依然能得到很好的估計結果,就好像使用批處理算法處理存儲在核心存儲器中的所有數據一樣,唯一的要求就是數據流確實是隨機的(數據中無趨勢),并且學習器也針對問題進行了很好調整(學習率通常是需要固定的關鍵參數)。
無論如何,仔細檢查這些成果,相對于批線性模型,計算結果仍然具有可比性,但不適用于更復雜并具有方差高于偏差特征的學習器。例如支持向量機(SVM)、神經網絡或者bagging和boosting決策樹。
對于某些問題,比如高而寬但稀疏的數據,僅僅線性組合就足夠了,因為我們觀察到,具有更多數據的簡單算法要勝過以更少數據訓練的更復雜的算法。然而,即使使用線性模型并明確地將現有特征映射到更高維數的特征(使用不同交互順序、多項式展開式和核近似),我們也能加速并改善對響應和特征間的復雜非線性關系的學習。
因此,本章我們首先介紹線性SVM,將它作為替代線性模型的機器學習算法,并采用不同方法解決從數據中學習的問題。然后,在面對大規模數據,尤其是高數據(有很多待學習案例的數據集)時,演示如何利用已有特征創造更豐富的特征,以便更好完成機器學習任務。
綜上所述,本章討論以下主題:
介紹SVM的基本概念和數學公式并了解其工作原理。
給出大規模任務的基于hinger loss的SGD解決方法,使用與批處理SVM相同的優化方法。
推薦SGD的非線性近似。
介紹Scikit-learn的SGD算法以外的其他大型在線解決方法。
3.1測試數據集
與前一章一樣,我們將使用來自UCI 機器學習存儲庫的數據集,具體是共享單車數據集(回歸問題)和森林覆蓋類型數據(多類別分類問題)。
如果之前沒有下載或者需要再次下載這兩個數據集,需要用到在2.2.1節定義的兩個函數unzip_from_UCI和gzip_from_UCI,兩者都提供了與UCI存儲庫的Python連接;只需下載壓縮文件并將其解壓到Python工作目錄中。如果從IPython單元調用這些函數,將會發現需要的新目錄和文件正好是IPthyon要求的位置。如果函數不工作,我們將為你提供直接下載鏈接,下載后將數據解壓到當前Python工作目錄中,通過在Python接口(IPython或其他IDE)運行以下命令即可發現該目錄:
3.1.1共享單車數據集
該數據集包括兩個CSV格式文件,包含2011~2012年在美國華盛頓特區的共享單車系統內每小時和每日租用單車的總數。提醒一下,數據包含有關出租當天的相應天氣和季節信息。下面的代碼使用方便的unzip_from_UCI封裝函數將數據集保存在本地硬盤:
如果運行成功,該代碼會指示CSV文件保存在哪個目錄,并輸出兩個解壓縮文件的名稱。如果失敗,只需從https://archive.ics.uci.edu/ml/machine-learning-databases/00275/Bike-Sharing-Dataset.zip下載文件,并將day.csv和hour.csv兩個文件解壓到先前在Python工作目錄中創建的bikesharing目錄。
TensorFlow python 機器學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。