weka是java写的开源模式识别和数据挖掘软件,已经有十多年的历史了。weka的官网在http://www.cs.waikato.ac.nz/ml/weka/。
模式识别和数据挖掘有四个问题,
第一:问题是什么
第二:数据是什么
第三:如何学习
第四:学习结果可靠吗?
第一个问题来自需求。分析需求是很难的:严密的逻辑,深入了解行业宏观和细节,熟悉技术领域和学术领域的进展,有多个成功项目的实践经验,这四个因素缺一不可,所以通常由一个团队不同领域的精英合作完成。
weka不解决需求问题。
第二个问题是数据。每个样本对应一个weka的Instance,由多个样本组成的数据集对应weka的Instances,这是存储。对数据集,需要选择各种样本进行训练和测试,这里存在诸多的选择方法。比如,只选择部分样本进行训练和测试,处理属性缺失的样本,只选择部分属性进行训练和测试,如何对样本次序重排以改变训练和测试效果。如何以有监督或者无监督的方式选择样本及其属性。
第三个问题是学习。如果能精确定义第一个问题,那么第三个问题的答案也必然是清晰的。weka提供大量的算法,分类,回归,聚类,关联规则等等。对初学者而言,选择算法是个大问题,每种算法都各有好处,但又没有一种算法在大多数指标上好过其他算法。这里的诀窍就是大量的做实验并分析结果,做的多了自然就知道什么是好的。
第四个问题是验证学习器是否可靠。常用的方式就是交叉验证,五倍交叉或者十倍交叉。再配合网格调参。常规问题就可以解决了。
对大数据big data,weka的建议是,用命令行操作数据和训练,如果有可能,自己用groovy或者jython实现算法,或者使用可以增量学习的算法。它这么说的意思其实表明,weka目前还没有对big data做好准备,所以最好用它解决单机能搞定的问题。