Python大規模機器學習》—2 Scikit-learn中的可擴展學習

      網友投稿 604 2025-04-01

      第2章

      Scikit-learn中的可擴展學習

      假如擁有這個時代強大而又實惠的電腦,那么,將數據集加載到內存中、準備好數據矩陣、訓練機器學習算法以及使用樣本外觀察法來測試其泛化能力通常并不是非常困難。然而,隨著要處理的數據規模越來越大,不可能將其加載到計算機核心內存中,即使能加載,在處理數據管理和機器學習兩方面,其結果依舊會很棘手。

      一種避開核心內存的可行策略是:將數據分割為樣本,使用并行性,最后從小批量或單個實例中學習。本章重點介紹Scikit-learn軟件包提供的開箱即用解決方案:從數據存儲器中以“流”的方式讀入小批量實例并基于它們進行增量學習。這種解決方案稱為“非核心學習”。

      通過處理可管理的數據塊和增量學習來處理數據是個好方法。然而,當試圖實現時,由于現有學習算法的局限性,它也具有挑戰性。并且,流動中的數據流也對數據管理和特征提取提出新要求。除了通過Scikit-learn提供非核心學習功能外,我們還提供Python解決方案,以解決只有一小部分數據時可能面臨的問題。

      本章討論以下主題:

      在Scikit-learn中實現非核心學習算法

      使用散列技巧有效管理數據流

      隨機學習的基本原理

      通過在線學習實現數據科學

      數據流的無監督轉換

      2.1????非核心學習

      非核心學習是指一組處理數據的算法,這些數據不能放入單臺計算機內存,但很容易放入某些數據存儲介質,例如本地硬盤或網絡存儲庫。單臺機器的核心內存(即可用RAM)的大小通常可能只有幾千兆字節(有時是2GB,但4GB更常見,這里假設最多2GB),在有些大型服務器上會高達256GB。大型服務器與用來提供像Amazon彈性計算云(EC2)這樣的云計算服務的機器類似,在使用這樣的服務時,只需用一個外部驅動器,你的存儲能力就能輕易超過千兆字節(最有可能是1TB,有時高達4TB)。

      由于機器學習立足于全局降低成本函數,因此許多算法最初都被認為將處理所有可用數據,并能在優化過程的每次迭代中訪問這些數據。這樣的情況特別適用于基于統計學習的所有矩陣演算算法(例如逆矩陣),而且基于貪婪搜索的算法需要在執行下一步前評估盡可能多的數據。因此,最常見的開箱即用的回歸式算法(加權線性特征組合)會更新其系數,以盡量減少合并整個數據集的錯誤。類似地,由于對數據集中的噪聲非常敏感,決策樹必須根據所有可用數據決定最佳分割,以便找到最優解決方案。

      如果這種情況下數據無法放入計算機核心內存,那么就不存在解決方案。只有增加可用內存(這受限于主板,否則只能采用書中后幾章介紹的分布式系統,比如Hadoop和Spark這樣的解決方案),或簡單減少數據集以適應內存。

      如果是稀疏數據,也就是說,數據集中有許多零值,則可將稠密矩陣轉換為稀疏矩陣。這就是典型的具有許多列的文本數據,因為每列就是一個文字,但表示字頻數的值很小,因為單個文本文件通常只顯示有限文字。有時利用稀疏矩陣能解決這個問題,它允許你同時加載和處理其他相當大的數據集,但這不是靈丹妙藥(也就是說,沒有適合解決所有問題的解決方案),因為某些數據矩陣雖然稀疏,但其大小常常令人吃驚。

      這種情況下,總是可以嘗試減少實例數量或限制特征數量來減少數據集,從而達到減少數據集矩陣維數和內存中占用區域的目的。只選擇一部分觀察數據來減少數據集大小稱為子采樣(或簡單抽樣)解決方案。子采樣雖好,但也有嚴重缺陷,在決定分析前務必注意這一點。

      2.1.1選擇子采樣

      使用子采樣時,實際上會失去一部分信息,并且無法確定是否只丟棄了冗余信息,而不是有用的觀察數據。實際上,只有考慮到所有數據,才能找到有價值的信息。盡管子采樣在計算方面很有吸引力(因為子采樣只需一個隨機生成器來告訴你是否應該選擇某個實例),但這樣確實可能限制算法以完整方式學習數據中的規則和關聯的能力。在對偏差與方差的權衡中,由于數據中的隨機噪聲或離線觀測,致使估計變得更不確定,從而導致子采樣預測方差膨脹。

      在大數據世界里,能處理更多高質量數據的算法會獲勝,因為它能學習更多方法,從而將預測與預測器關聯,而那些用更少、更嘈雜數據學習的模型與此相反。因此,盡管子采樣可以作為一種解決方案,但由于預測不準確和估計方差較大,子采樣可能影響機器學習結果。

      《Python大規模機器學習》—2 Scikit-learn中的可擴展學習

      在數據的多個子樣本上學習多個模型,然后將所有解決方案或所有模型結果堆疊,從而創建用于進一步訓練的簡化數據矩陣,以達到克服子采樣限制的目的。這個過程稱為bagging,它實際上是以這種方式壓縮某些特征,從而減少內存數據空間。后面章節會介紹集成和堆疊,并說明如何減少被子采樣所膨脹的數據估計方差。

      另一種選擇是裁剪特征,而不是裁剪實例,但是這同樣也會遇到問題:這需要從數據中構建模型以測試選擇哪些特征,因此,仍然不得不用無法放入內存的數據來構建模型。

      scikit-learn Python 機器學習

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:xlsx表頭出現紅色三角感嘆號(excel紅色三角感嘆號)
      下一篇:如何在Excel中的過濾列表列中填充一系列數字?
      相關文章
      亚洲成av人片不卡无码久久| 苍井空亚洲精品AA片在线播放| 亚洲爆乳少妇无码激情| 亚洲国产精品人久久电影| 久久精品亚洲视频| 亚洲电影一区二区| 亚洲AV日韩AV鸥美在线观看| 国产成A人亚洲精V品无码| 亚洲精品中文字幕乱码三区| 亚洲线精品一区二区三区| 国产亚洲美女精品久久久| 亚洲欧洲自拍拍偷精品 美利坚| 亚洲国产成人精品女人久久久| 国产亚洲视频在线观看| 国产午夜亚洲精品不卡免下载| 亚洲国产电影av在线网址| 亚洲片一区二区三区| 亚洲午夜久久久久久噜噜噜| 亚洲人成在线播放网站| 亚洲av午夜福利精品一区人妖| 久久精品视频亚洲| 亚洲一区二区在线视频| 亚洲黄色在线视频| 亚洲一区二区三区不卡在线播放| 亚洲Av高清一区二区三区| 中文字幕无码精品亚洲资源网久久| 亚洲人av高清无码| 国产亚洲成在线播放va| 国产综合精品久久亚洲| 亚洲va中文字幕无码久久| 亚洲人成在线影院| 亚洲avav天堂av在线网爱情| 亚洲乱色伦图片区小说| 亚洲AV无码一区二区三区在线观看| 亚洲精品无码成人片在线观看 | 亚洲国产最大av| 亚洲av中文无码字幕色不卡| jizzjizz亚洲| 久久精品国产69国产精品亚洲| 亚洲欧洲日产国码久在线观看| 亚洲成人高清在线观看|