Blog信息 |
blog名称:宿命宽恕轮回修仙 日志总数:18 评论数量:3 留言数量:0 访问次数:114800 建立时间:2009年3月18日 |
« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |

| |
[WEKA](转)当weka遇到大数据集时 文章收藏, 软件技术
宿命宽恕轮回修仙 发表于 2009/6/2 20:46:37 |
用的数据集是Reuters-21578和20个新闻组。结果光是前者,我还只是选择了其中的7个类别,最后生成的训练集的arff文件就有150MB。 我为此还换了个1G的内存。调整了JVM的大小,居然还是不行。有没有高人指点一下呢。
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,会节省很多内存,并且数据集中的错误更容易被检测出来。 |
|
|