處理機器學習大數據的7種方法

文章目錄

  • 目錄
    • 1.分配更多的內存
    • 2.使用較小的樣本
    • 3.將數據提交至服務器上
    • 4.更改數據格式
    • 5.使用數據流方式或者逐行讀入的方法
    • 6.使用關系數據庫
    • 7.使用大數據平臺

目錄

在實際的生產過程中,我們經常會遇到數據文件太大,而無法直接讀入到計算機中進行處理,或者因為數據量太大,讀入內存后運行出錯。因此,如何解決大數據的讀入問題是解決大數據機器學習的第一步。

1.分配更多的內存

如果硬件可以支持分配更多的內存或者使用虛擬內存的時候,可以采取擴充內存的方式
檢查是否可以重新配置工具或庫以分配更多的內存
比較好的例子是WEKA,他可以在運行的時候擴充內存

2.使用較小的樣本

采用某種下采樣的方法,從原始的海量數據中抽取部分具有代表性的樣本,然后使用這些抽樣的樣本訓練模型,并在實際的測試集上進行測試。
采用這種方法具有一定的風險,首先得保證降采樣的樣本能夠很好的代表全部樣本的一個分布,否則很容易導致模型學偏,無法很好的對新樣本泛化。
但是該方法可以迅速的查看算法和結果。

3.將數據提交至服務器上

由于本地的機器一般內存比較小,所以可以將數據提交至服務器上,利用服器強大的數據處理能力,解決大數據導入內存出錯的問題。

4.更改數據格式

您的數據是否存儲在原始ASCII文本中,如CSV文件?
也許您可以通過使用其他數據格式來加快數據加載并減少內存使用。一個很好的例子是像GRIB,NetCDF或HDF這樣的二進制格式。
有許多命令行工具可用于將一種數據格式轉換為另一種不需要將整個數據集加載到內存中的數據格式。
使用另一種格式可能允許您以更緊湊的形式存儲數據,從而節省內存,例如2字節整數或4字節浮點數。

5.使用數據流方式或者逐行讀入的方法

可以使用一個在線的增量式的學習方法,不是將數據一下子讀入到內存中,而是在模型訓練的過程中不斷的讀入到內存中,然后使用新讀入的數據對模型的參數進行更新。
例如,Keras深度學習庫提供了逐漸加載圖像文件的功能,稱為flow_from_directory。
另一個例子是pandas,可以加載大塊的大型CSV文件

6.使用關系數據庫

關系數據庫提供了存儲和訪問非常大的數據集的標準方法。
在內部,存儲在磁盤上的數據可以批量逐步加載,并且可以使用標準查詢語言(SQL)進行查詢。

可以使用免費的開源數據庫工具,如MySQL或Postgres,大多數(所有?)編程語言和許多機器學習工具可以直接連接到關系數據庫。您還可以使用輕量級的方法,如SQLite。
這種方法在過去對于非常大的表格數據集非常有效。
同樣,您可能需要使用可以處理重復學習的算法

7.使用大數據平臺

可以使用大數據平臺,使用分布式計算,解決單個電腦性能不足
設計用于處理非常大的數據集的平臺,允許您在其上使用數據轉換和機器學習算法。
兩個很好的例子是Hadoop的Mahout機器學習庫和Spark機智的MLLib庫。
我確實相信這是最后的手段,當您用盡了上述選項,只是為了機器學習項目帶來的額外的硬件和軟件復雜性。

參考博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445424.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445424.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445424.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Head First設計模式》第六章筆記-命令模式

封裝調用-命令模式 命令模式可將“動作的請求者”從“動作的執行者”對象中解耦。 本篇中將不再描述書中所引入的“巴斯特家電自動化公司”的遙控器控制案例,而使用簡單易懂的餐廳案例。 在開始之前,讓我們通過一個現實中的例子來了解命令模式。 理解…

kaggle(04)---avazu_ctr_predictor(baseline)

比賽的目的: 通過分析網上的系統日志和用戶行為信息,來預測某些網頁上項目的點擊率。是一個二分類的問題,只需要預測出用戶是否點擊即可最好能夠輸出某個概率,比如:用戶點擊某個廣告的概率。 比賽官網 文件信息&…

一文讀懂機器學習庫graphLab

文章目錄目錄什么是graphlab為什么使用graphlab?如何安裝graphlab?graphlab的簡單使用。目錄 什么是graphlab GraphLab 是由CMU(卡內基梅隆大學)的Select 實驗室在2010 年提出的一個基于圖像處理模型的開源圖計算框架,框架使用C語言開發實…

《Head First設計模式》第七章-適配器模式、外觀模式

適配器模式 適配器模式是什么,你一定不難理解,因為現實中到處都是。比如說: 如果你需要在歐洲國家使用美國制造的筆記本電腦,你可能需要使用一個交流電的適配器…… 當你不想改變現有的代碼,解決接口不適配問題&#…

《Head First設計模式》第八章筆記-模板方法模式

模板方法模式 之前所學習的模式都是圍繞著封裝進行,如對象創建、方法調用、復雜接口的封裝等,這次的模板方法模式將深入封裝算法塊,好讓子類可以在任何時候都將自己掛接進運算里。 模板方法定義:模板方法模式在一個方法中定義一…

機器學習基礎-吳恩達-coursera-(第一周學習筆記)----Introduction and Linear Regression

課程網址:https://www.coursera.org/learn/machine-learning Week 1 —— Introduction and Linear Regression 目錄 Week 1 Introduction and Linear Regression目錄一 介紹1-1 機器學習概念及應用1-2 機器學習分類 二 單變量的線性回歸2-1 假設函數hypothesis2…

常見8種機器學習算法總結

簡介 機器學習算法太多了,分類、回歸、聚類、推薦、圖像識別領域等等,要想找到一個合適算法真的不容易,所以在實際應用中,我們一般都是采用啟發式學習方式來實驗。通常最開始我們都會選擇大家普遍認同的算法,諸如SVM&a…

redis——數據結構(字典、鏈表、字符串)

1 字符串 redis并未使用傳統的c語言字符串表示,它自己構建了一種簡單的動態字符串抽象類型。 在redis里,c語言字符串只會作為字符串字面量出現,用在無需修改的地方。 當需要一個可以被修改的字符串時,redis就會使用自己實現的S…

Hotspot虛擬機的對象

創建 Step1:類加載檢查 虛擬機遇到一條 new 指令時,首先將去檢查這個指令的參數是否能在常量池中定位到這個類的符號引用,并且檢查這個符號引用代表的類是否已被加載過、解析和初始化過。如果沒有,那必須先執行相應的類加載過程。 Step2:分…

劍指offer(刷題1-10)--c++,Python版本

文章目錄目錄第一題:解題思路:代碼實現:c順序查找二分查找Python第二題:解題思路:代碼實現:cpython第三題:解題思路:代碼實現:c使用棧輔助反轉鏈表python第四題&#xff…

redis——數據結構(整數集合,壓縮列表)

4、整數集合 整數集合(intset)是 Redis 用于保存整數值的集合抽象數據結構, 可以保存 int16_t 、 int32_t 、 int64_t 的整數值, 并且保證集合中不會出現重復元素。 實現較為簡單: typedef struct intset {// 編碼方…

原 劍指offer(刷題11-20)--c++,Python版本

文章目錄目錄第11題:解題思路:代碼實現:cpython第12題:解題思路:代碼實現:cpython第13 題:解題思路:代碼實現:cpython第 14題:解題思路:代碼實現&…

LRU介紹和實現

LRU全稱是Least Recently Used,即最近最久未使用的意思。 LRU算法的設計原則是:如果一個數據在最近一段時間沒有被訪問到,那么在將來它被訪問的可能性也很小。也就是說,當限定的空間已存滿數據時,應當把最久沒有被訪問…

機器學習知識總結系列- 知識圖譜(0-0)

文章目錄目錄機器學習知識圖譜目錄 本系列的文章只是根據個人的習慣進行總結,可能結構與一些書籍上不太一樣,開始的內容比較簡單,會隨著后續的深入,不斷豐富和更新圖譜,同時也期待有相同興趣的朋友一起給我留言一起豐富…

跳表介紹和實現

想慢慢的給大家自然的引入跳表。 想想,我們 1)在有序數列里搜索一個數 2)或者把一個數插入到正確的位置 都怎么做? 很簡單吧 對于第一個操作,我們可以一個一個比較,在數組中我們可以二分,這…

機器學習知識總結系列- 基本概念(1-0)

文章目錄目錄1. 機器學習的定義2. 機器學習的分類2.1根據是否在人類監督下進行訓練監督學習非監督學習半監督學習強化學習2.2根據是否可以動態漸進的學習在線學習批量學習2.3根據是否在訓練數據過程中進行模式識別實例學習基于模型的學習3. 機器學習中的一些常見名詞4. 機器學習…

劍指offer(刷題21-30)--c++,Python版本

文章目錄目錄第 21題:解題思路:代碼實現:cpython第22 題:解題思路:代碼實現:cpython第23 題:解題思路:代碼實現:cpython第24 題:解題思路:代碼實現…

redis——對象

剛寫了redis主要的數據結構: 動態字符串、雙端鏈表、字典、壓縮列表、整數集合、跳表等 redis肯定不能直接使用這些數據結構來實現數據庫,它用這些數據庫建立了一個對象系統,包含: 字符串對象、列表對象、哈希對象、集合對象、…

劍指offer(刷題31-40)--c++,Python版本

文章目錄目錄第31 題:解題思路:代碼實現:cpython第32題:解題思路:代碼實現:cpython第33題:解題思路:代碼實現:cpython第34題:解題思路:代碼實現&a…

redis——數據庫

redis服務器將所有數據庫都保存在redis/redisServer中,數組db存放所有數據庫,每一項是一個redisdb結構。dbnum代表數據庫數量。 客戶端有一個指針指向當前數據庫,可以切換,也就是移動指針。 鍵空間 現在稍微介紹一下redisdb結構…