2015-10-20 72 views
0

所以發生了什麼是我有一個長度爲860K,寬度大約爲520列的數據集(其中絕大多數是布爾值,表示一個字或者出現或者不出現在給定的文本中)。我想從這個數據集建立一個模型來預測給定的存在使用caret包的各種單詞的評級。然而,即使36gb的ram也不足以一次運行它(顯然我只會在大約60萬次訓練,但仍然)。我設法完成了約25k的記錄。所以這讓我相信我最好的選擇是每次訓練25K條記錄,然後合併模型。但我不確定如何做到這一點,或者如果這是最好的方法。有沒有人有建議?我厭倦了我的電腦在6小時內慢慢爬行,然後在內存不足時發生錯誤。拆分數據,在拆分數據上訓練模型,然後在R中重新組合結果R

+0

如果您提供了有關您的模型結構的信息,將會有所幫助。它是什麼類型的模型,使用什麼軟件包等? –

+1

我創建了這些尺寸的布爾矩陣,它只需要1.7Gb來存儲它。這使我認爲你的內存使用效率低下......是以邏輯或整數(甚至是數字)存儲的布爾變量嗎? – MichaelChirico

+0

@MichaelChirico是否使用稀疏矩陣('庫(Matrix)')?這可能會使內存效率更高。 –

回答

0

首先,插頁甚至支持合併培訓嗎?你正在建造什麼樣的模型?我通常使用的那些無法合併部分訓練集。我知道你已經問過這個問題,但是如果沒有對這個問題的肯定答案,整個解決方案的一個分支就會消失。

是否有預期的單詞之間的交叉相關性,例如某個對的存在會產生與您單獨使用每個單詞所得到的顯着不同的評級?如果這些詞出現獨立,那麼我的第一個想法是拆分列而不是行,並嘗試依賴性地訓練批量詞語。

您的描述意味着一個整數(短)評級,一個好的400位,然後可能是100個其他項目的整數矩陣 - 整數?由此,我推導出一個小於500字節的記錄大小。那些佔用不到500Mb的860k。如果我們不包裝布爾值,它仍然低於1Gb。是否有更好的映射 - 解開每個記錄可能會有輕微的性能損失 - 解決問題?稀疏矩陣如何?幾乎所有這些布爾人都是假的,恩?

你真的需要每字超過1k行訓練嗎?你可以把它縮小到一個易處理的大小,特別是如果重新格式化數據表示能夠爲你節省大部分但不是全部的空間,