簡體   English   中英

具有R.的隨機森林無法分配大小為7.5 Gb的向量

[英]Random Forest with R. cannot allocate vector of size 7.5 Gb

我有一個帶有2條觀測值(正文和標簽)的10000條推文的數據集(df); 根據正文,前4000條推文被標記為(正或負),我想將其用作訓練集來預測其余推文的標簽,進行測試。 我想使用隨機森林算法來預測(插入符號包)並進行交叉驗證以確定准確性。 我用這個腳本:

training <- subset(df[1:4000,])
testing  <- subset(df[4001:10000,])

fitControl1 <- trainControl(method = "repeatedcv",
                       number = 10,
                       repeats = 10)

rfFit <- train(training$label~ training$body, data = training, 
             method = "rf", 
             trControl = fitControl,
             verbose = FALSE)

但這是來自控制台的錯誤

Error: cannot allocate vector of size 7.5 Gb

我該如何解決? 提前致謝

隨機森林算法可能會破壞您的內存,尤其是如果您沒有太多內存的話。 R可以將磁盤用作內存,因此這可能會對您有所幫助。

如果您檢查

memory.limit()

它將顯示您的內存大小。 但是,您也可以使用此命令進行設置。

memory.limit(100000)

到此為止,您現在擁有約100GB的內存。 其中一堆在您的硬盤上。

如果您沒有太多的硬盤空間,那么這對您沒有幫助。

隨機森林將嘗試在變量或特征之間的可能性樹內分配您的觀察結果。 但是您的操作方式有些奇怪。 如果您在推文正文中有一個變量(推文的字符串),而第二個是標簽。 沒有執行分類的實際功能,隨機森林會嘗試記住(過度擬合)訓練集。 隨機森林算法會創建幾棵可能性樹來創建復合模型,這會產生巨大的可能性空間,特別是如果您沒有從推文集中提取特征(我認為您正在這樣做),並且模型的表現會很差。

您需要做的是將推文的主體標記化,以創建用於提取語料庫特征的模型。 我建議使用sklearn文檔提取文本特征。 如果您不懂python,也可以,解釋非常明確,您會找到在R中執行操作的工具。

由於您將完整的tweet用作一個變量(類字符),因此在訓練模型R時,它將首先將字符向量轉換為因數(因為統計模型可以圍繞數字矩陣而不是字符建立),並且在將每條tweet轉換為一個因數時,會需要這么大的空間,請參閱此博客 另外,這是NLP的問題。 並且在建立模型之前,我建議您首先對數據集進行標記化並制作一個稀疏矩陣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM