Python大規模機器學習》—1.1.3使用Python進行向上擴展">《Python大規模機器學習》—1.1.3使用Python進行向上擴展
669
2025-03-31
2.2.5關注實例排序
作為數據流主題的總結,必須警告讀者:數據流傳輸時實際上包含了學習過程中的隱藏信息,因為你的學習是按實例順序進行的。
事實上,在線學習器會根據所評估的每個實例優化其參數,在優化過程中,每個實例都會引導學習器朝某個方向前進。
如果有足夠多的評估實例,則在全局過程中學習器應采取正確優化方向
。但是,如果學習器是由有偏差的觀察數據訓練的(例如,按時間排序或以某種有意義分組的觀察數據),那么算法也將學習偏差。訓練過程中可以設法不記住之前看見的實例,但不管怎樣還是會引入某些偏差。如果正在學習時間序列(對時間流的響應常常是模型的一部分),這種偏差相當有用,但在大多數其他情況下,它會導致某種過擬合,并在最終的模型中導致某種程度的泛化缺失。
如果數據經過某種排序,并且你希望機器算法學習該排序(如ID排序),則有必要在傳輸數據前盡量打亂其順序,以獲得更適合在線隨機學習的最優隨機順序。
最快和占用更少磁盤空間的方式是在內存中流化數據。大多數情況下(但不是全部),由于所訓練數據的相對稀疏性和冗余性,以及所使用的壓縮算法,該方式是有效的。而在無效的情況下,需要你直接在磁盤上打亂數據,這也意味著要用更多磁盤空間。
這里,首先介紹一種內存中的快速打亂方法,所用的zlib包能快速將行數據壓縮到內存中,還會用到random模塊中的shuffle函數:
對于UNIX用戶,通過調用一次sort命令(-R參數),即可很方便地打亂大量文本文件,并且比Python更有效,通過采用管道技術,它可以與解壓和壓縮步驟聯合使用。
具體實現命令類似如下:
當RAM不能存儲所有壓縮數據時,唯一可行的辦法是在磁盤上就對文件進行操作。下面的代碼段定義了一個函數,它重復地將文件拆分為越來越小的文件,然后在內部打亂它們,最后在更大的文件中將其隨機排列。結果不是完全的隨機重排,但它的數據行被分散后,足以破壞之前任何可能影響在線學習的順序:
TensorFlow python 機器學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。