Weka加载大数据量内存不足的解决办法
150M的訓練集用WEKA做起來應該比較困難有這么幾個辦法:
1 增加內存。 其實WEKA不光可以用物理內存,還可以占用虛擬內存。把JAVA的可用內存設置成2G的話,如果機器的物理內存只有1G,操作系統是會在需要時自動在硬盤上劃分一塊出來作為虛擬內存的。不過這時候一般會處理得比較慢,因此不推薦這個方法。
2 抽樣。從訓練集中隨機抽取一部分數據來作訓練。在二分類的時候,一般樣本數量達到幾千個時就能預測得比較準確了。如果幾千個樣本還不怎么準,那要么是所用的分類算法不適合,要么數據中的輸入變量根本無法預測目標變量。
我試過了KDD 99中“kddcup.data_10_percent” 數據集,接近50萬條數據,做成ARFF文件后有70多M。在Explorer中10來秒就載入了,抽取1%的樣本僅花了幾秒鐘。
3 增量學習(Incremental Learning)。所謂增量學習簡單的說就是讀取一條訓練數據就修正一下模型,而不是把全部訓練數據都讀入之后才得到模型。在WEKA KnowledgeFlow 中支持增量學習算法。目前WEKA中有5種算法可以在這種方式下工作:NaiveBayesUpdateable, IB1, IBk, LWR。另外RacedIncrementalLogitBoost可以讓任意的基于回歸的算法來增量地學習分類任務。
要注意的是,有時候數據不是ARFF格式的,而是C45,CSV等格式。這時手動把數據轉換成ARFF,會節省很多內存,并且數據集中的錯誤更容易被檢測出來。
from:http://john2007.javaeye.com/blog/267181
總結
以上是生活随笔為你收集整理的Weka加载大数据量内存不足的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [WEKA]如何将英文文本数据集转换为A
- 下一篇: UCINET 社会网络分析工具