处理机器学习大数据的7种方法
文章目錄
- 目錄
- 1.分配更多的內(nèi)存
- 2.使用較小的樣本
- 3.將數(shù)據(jù)提交至服務(wù)器上
- 4.更改數(shù)據(jù)格式
- 5.使用數(shù)據(jù)流方式或者逐行讀入的方法
- 6.使用關(guān)系數(shù)據(jù)庫
- 7.使用大數(shù)據(jù)平臺(tái)
目錄
在實(shí)際的生產(chǎn)過程中,我們經(jīng)常會(huì)遇到數(shù)據(jù)文件太大,而無法直接讀入到計(jì)算機(jī)中進(jìn)行處理,或者因?yàn)閿?shù)據(jù)量太大,讀入內(nèi)存后運(yùn)行出錯(cuò)。因此,如何解決大數(shù)據(jù)的讀入問題是解決大數(shù)據(jù)機(jī)器學(xué)習(xí)的第一步。
1.分配更多的內(nèi)存
如果硬件可以支持分配更多的內(nèi)存或者使用虛擬內(nèi)存的時(shí)候,可以采取擴(kuò)充內(nèi)存的方式
檢查是否可以重新配置工具或庫以分配更多的內(nèi)存
比較好的例子是WEKA,他可以在運(yùn)行的時(shí)候擴(kuò)充內(nèi)存
2.使用較小的樣本
采用某種下采樣的方法,從原始的海量數(shù)據(jù)中抽取部分具有代表性的樣本,然后使用這些抽樣的樣本訓(xùn)練模型,并在實(shí)際的測試集上進(jìn)行測試。
采用這種方法具有一定的風(fēng)險(xiǎn),首先得保證降采樣的樣本能夠很好的代表全部樣本的一個(gè)分布,否則很容易導(dǎo)致模型學(xué)偏,無法很好的對新樣本泛化。
但是該方法可以迅速的查看算法和結(jié)果。
3.將數(shù)據(jù)提交至服務(wù)器上
由于本地的機(jī)器一般內(nèi)存比較小,所以可以將數(shù)據(jù)提交至服務(wù)器上,利用服器強(qiáng)大的數(shù)據(jù)處理能力,解決大數(shù)據(jù)導(dǎo)入內(nèi)存出錯(cuò)的問題。
4.更改數(shù)據(jù)格式
您的數(shù)據(jù)是否存儲(chǔ)在原始ASCII文本中,如CSV文件?
也許您可以通過使用其他數(shù)據(jù)格式來加快數(shù)據(jù)加載并減少內(nèi)存使用。一個(gè)很好的例子是像GRIB,NetCDF或HDF這樣的二進(jìn)制格式。
有許多命令行工具可用于將一種數(shù)據(jù)格式轉(zhuǎn)換為另一種不需要將整個(gè)數(shù)據(jù)集加載到內(nèi)存中的數(shù)據(jù)格式。
使用另一種格式可能允許您以更緊湊的形式存儲(chǔ)數(shù)據(jù),從而節(jié)省內(nèi)存,例如2字節(jié)整數(shù)或4字節(jié)浮點(diǎn)數(shù)。
5.使用數(shù)據(jù)流方式或者逐行讀入的方法
可以使用一個(gè)在線的增量式的學(xué)習(xí)方法,不是將數(shù)據(jù)一下子讀入到內(nèi)存中,而是在模型訓(xùn)練的過程中不斷的讀入到內(nèi)存中,然后使用新讀入的數(shù)據(jù)對模型的參數(shù)進(jìn)行更新。
例如,Keras深度學(xué)習(xí)庫提供了逐漸加載圖像文件的功能,稱為flow_from_directory。
另一個(gè)例子是pandas,可以加載大塊的大型CSV文件
6.使用關(guān)系數(shù)據(jù)庫
關(guān)系數(shù)據(jù)庫提供了存儲(chǔ)和訪問非常大的數(shù)據(jù)集的標(biāo)準(zhǔn)方法。
在內(nèi)部,存儲(chǔ)在磁盤上的數(shù)據(jù)可以批量逐步加載,并且可以使用標(biāo)準(zhǔn)查詢語言(SQL)進(jìn)行查詢。
可以使用免費(fèi)的開源數(shù)據(jù)庫工具,如MySQL或Postgres,大多數(shù)(所有?)編程語言和許多機(jī)器學(xué)習(xí)工具可以直接連接到關(guān)系數(shù)據(jù)庫。您還可以使用輕量級(jí)的方法,如SQLite。
這種方法在過去對于非常大的表格數(shù)據(jù)集非常有效。
同樣,您可能需要使用可以處理重復(fù)學(xué)習(xí)的算法
7.使用大數(shù)據(jù)平臺(tái)
可以使用大數(shù)據(jù)平臺(tái),使用分布式計(jì)算,解決單個(gè)電腦性能不足
設(shè)計(jì)用于處理非常大的數(shù)據(jù)集的平臺(tái),允許您在其上使用數(shù)據(jù)轉(zhuǎn)換和機(jī)器學(xué)習(xí)算法。
兩個(gè)很好的例子是Hadoop的Mahout機(jī)器學(xué)習(xí)庫和Spark機(jī)智的MLLib庫。
我確實(shí)相信這是最后的手段,當(dāng)您用盡了上述選項(xiàng),只是為了機(jī)器學(xué)習(xí)項(xiàng)目帶來的額外的硬件和軟件復(fù)雜性。
參考博客
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的处理机器学习大数据的7种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法(7)-leetcode-explo
- 下一篇: 算法(17)-leetcode-剑指of