转载自:http://blog.sciencenet.cn/blog-460242-350331.html
背景介绍:
1)Weka:Weka有两种意思:一种不会飞的鸟的名字,一个机器学习开源项目的简称(Waikato Environment for Knowledge Analysis,http://www.cs.waikato.ac.nz/~ml/weka/)。我们这里当然要介绍的是第二种意思啦,Weka项目从1992年开始,由新西兰政府支持,现在已在机器学习领域大名鼎鼎。Weka里有非常全面的机器学习算法,包括数据预处理、分类、回归、聚类、关联规则等。Weka的图形界面对不会写程序的人来说非常方便,而且提供“KnowledgeFlow” 功能,允许将多个步骤组成一个工作流。另外,Weka也允许在命令行执行命令。
2)R
R就不用我废话了吧,呵呵,越来越受欢迎的统计软件(http://www.r-project.org/)。
3)R与Weka:
R里有很多机器学习的函数和包,不过Weka里提供的函数更全面更集中,所以我有时候需要用到Weka。以前我是这样用R和Weka的:
在R中准备好训练的数据(如:提取数据特征……);
整理成Weka需要的格式(*.arff);
在Weka里做机器学习(如:特征选择、分类……);
从Weka的预测结果计算需要的统计量(如:sensitivity, specificity, MCC……)。
来回捣腾两个软件还是挺麻烦的;为了偷懒,我没学Weka的命令行,只会用图形界面的,在数据量大的时候非常受罪,有时候还会内存不够。现在发现R竟然提供了和Weka的接口函数包RWeka,以后方便多了哦,下面介绍一下RWeka的功能:
RWeka (http://cran.r-project.org/web/packages/RWeka/index.html) :
1) 数据输入和输出
WOW():查看Weka函数的参数。
Weka_control():设置Weka函数的参数。
read.arff():读Weka Attribute-Relation File Format (ARFF)格式的数据。
write.arff:将数据写入Weka Attribute-Relation File Format (ARFF)格式的文件。
2) 数据预处理
Normalize():无监督的标准化连续性数据。
Discretize():用MDL(Minimum Description Length)方法,有监督的离散化连续性数值数据。
3) 分类和回归
IBk():k最近邻分类
LBR():naive Bayes法分类
J48():C4.5决策树算法(决策树在分析各个属性时,是完全独立的)。
LMT():组合树结构和Logistic回归模型,每个叶子节点是一个Logistic回归模型,准确性比单独的决策树和Logistic回归方法要好。
M5P():M5 模型数算法,组合了树结构和线性回归模型,每个叶子节点是一个线性回归模型,因而可用于连续数据的回归。
DecisionStump():单层决策树算法,常被作为boosting的基本学习器。
SMO():支持向量机分类
AdaBoostM1():Adaboost M1方法。-W参数指定弱学习器的算法。
Bagging():通过从原始数据取样(用替换方法),创建多个模型。
LogitBoost():弱学习器采用了对数回归方法,学习到的是实数值
MultiBoostAB():AdaBoost 方法的改进,可看作AdaBoost 和 “wagging”的组合。
Stacking():用于不同的基本分类器集成的算法。
LinearRegression():建立合适的线性回归模型。
Logistic():建立logistic回归模型。
JRip():一种规则学习方法。
M5Rules():用M5方法产生回归问题的决策规则。
OneR():简单的1-R分类法。
PART():产生PART决策规则。
4) 聚类
Cobweb():这是种基于模型方法,它假设每个聚类的模型并发现适合相应模型的数据。不适合对大数据库进行聚类处理。
FarthestFirst():快速的近似的k均值聚类算法
SimpleKMeans():k均值聚类算法
XMeans():改进的k均值法,能自动决定类别数
DBScan():基于密度的聚类方法,它根据对象周围的密度不断增长聚类。它能从含有噪声的空间数据库中发现任意形状的聚类。此方法将一个聚类定义为一组“密度连接”的点集。
5)关联规则
Apriori():Apriori是关联规则领域里最具影响力的基础算法,是一种广度优先算法,通过多次扫描数据库来获取支持度大于最小支持度的频繁项集。它的理论基础是频繁项集的两个单调性原则:频繁项集的任一子集一定是频繁的;非频繁项集的任一超集一定是非频繁的。在海量数据的情况下,Apriori 算法的时间和空间成本非常高。
Tertius():Tertius算法。
6)预测和评估:
predict():根据分类或聚类结果预测新数据的类别
table():比较两个因子对象
evaluate_Weka_classifier():评估模型的执行,如:TP Rate,FP Rate,Precision,Recall,F-Measure。