翻译自Optimal parameters, 原地址:
http://weka.wikispaces.com/Optimizing+parameters
,这一篇我看到网上是有人译过的,但是我感觉他翻译的有的地方有些问题(比如对floor函数的翻译),并且没有译全,所以我又重译了,但我也不能保证我的翻译没有大问题,我以前没有怎么调过参数,因为我相信数据才是最大的问题。
因为寻找一个分类器的最优参数是一个很枯燥耗时的过程,所以Weka提供了一些有点自动化味道的方法,你可以用下面的两个meta-classifiers优化你的基分类器参数。
weka.classifiers.meta.CVParameterSelection
weka.classifiers.meta.GridSearch (on
ly developer version)
找到了可能的最优参数,meta-classifiers用这些参数训练一个基分类器,再用这个基分类器来预测。
CVParameterSelection
CVParameterSelection可以优化任意多个参数的基分类器,但它有一个缺点(如果不算参数的组合爆炸,Koala++译注:就是指参数所有可能的组合数太多,组合数举例来说,比如有两个参数,一个参数有2个取值,另一个参数有5个参数,可能的组合就是10个):它不能优化内嵌(nested)参数,只能优化基分类器的直接(directly)参数。这是什么意思呢,这意味着,你可以优化weka.classifiers.functions.SMO的参数C,但你不能优化在weka.classifiers.meta.FilteredClassifier中的weka.classifiers.functions.SMO的参数C。
这有几个例子:
J48 and it's confidence interval ("-C")
1. 在Explorer中选择你的数据集。
2. 选择weka.classifiers.meta.CVParameterSelection为分类器。
3. 选择weka.classifiers.trees.J48为CVParameterSelection的基分类器。
4. 打开CVParameters的ArrayEditor,然后输入以下的字符串(然后点Add)
C 0.1 0.5 5
它的意思是测试confidence(Koala++译汪:也就是C)参数,从0.1到0.5的效果,步长是0.1(=5步)。
5. 关闭对话框,运行。
6. 你会得到类似下面的结果,找到的最佳参数是用黑体表示的。
Cross-validated Parameter selection.
Classifier: weka.classifiers.trees.J48
Cross-validation Parameter: '-C' ranged from 0.1 to 0.5 with 5.0 steps
Classifier Options: **-C 0.1** -M 2
SMO and it's complexity parameter ("-C")
1. 在Explorer中选择你的数据集。
2. 选择weka.classifiers.meta.CVParameterSelection为分类器。
3. 选择classifiers.functions.SMO为CVParameterSelection的基分类器,如果有必要,修改它的设置,比如选用RBF核。
4. 打开CVParameters的ArrayEditor,然后输入以下的字符串(然后点Add)
C 2 8 4
它的意思是测试complexity参数2,4,6,8(=4步)。
5. 关闭对话框,运行。
6. 你会得到类似下面的结果,找到的最佳参数是用黑体表示的。
Cross-validated Parameter selection.
Classifier: weka.classifiers.functions.SMO
Cross-validation Parameter: '-C' ranged from 2.0 to 8.0 with 4.0 steps
Classifier Options: **-C 8** -L 0.0010 -P 1.0E-12 -N 0 -V -1 -W 1 -K "weka.classifiers.functions
LibSVM
and the gamma parameter of the RBF kernel ("-G")
1. 在Explorer中选择你的数据集。
2. 选择weka.classifiers.meta.CVParameterSelection为分类器。
3. 选择
weka.classifiers.functions.LibSVM
为CVParameterSelection的基分类器,如果有必要,修改它的设置,比如选用RBF核。
4. 打开CVParameters的ArrayEditor,然后输入以下的字符串(然后点Add)
G 0.01 0.1 10
这就表示对G进行从0.01到0.1的迭代(=10步)。
5. 关闭对话框,运行。
6. 你会得到类似下面的结果,找到的最佳参数是用黑体表示的。
Cross-validated Parameter selection.
Classifier: weka.classifiers.functions.LibSVM
Cross-validation Parameter: '-G' ranged from 0.01 to 0.1 with 10.0 steps
Classifier Options: **-G 0.09** -S 0 -K 2 -D 3 -R 0.0 -N 0.5 -M 40.0 -C 1.0 -E 0.0010 -P 0.1
GridSearch
weka.classifiers.meta.GridSearch是用于优化两个参数的meta-classifier,这也是它名字里有grid(网格)原因。如果你将日志选项打开,分类器会产生可以用于
gnuplot
的输出,比如,log会包含脚本和数据区。GridSearch不但可以用于一个分类器,而且可以优化一个基分类器和一个过滤器的参数(分类器中的一个参数和过滤器的一个参数),与CVParameterSelection不同的是,它不仅限于优化基分类器第一层的参数,因为它使用
Java Beans
Introspection
,所以可以指定一个想优化的属性的路径,属性这里指的是在GenericObjectEditor中显示的字符串(由Introspection产生),比如weka.classifiers.meta.Bagging的bagSizePercent,或weka.classifiers.meta.Bagging的分类器。
因为一些重要的bug修正,你应该使用3.5.6以后的版本。
对于要优化的两个坐标轴,X和Y,你可以指定下面的参数。
Property
要进行优化的忏悔是用点分隔的路径指定的,为了区别过滤器的路径和分器类的路径,你现在将分别的过滤器和分器的路径加上filter.或classifier.的前缀。
Expr
ession
对进行属性测试的参数值的数学表达式,是用weka.core.MathmaticalExpression类来处理的,因支持以后函数,abs,sqrt,log,exp,sin,cos,tan,rint,floor,pow,ceil。这些函数可以在BASE,FROM,TO,STEP,I中使用,I变化范围为从FROM到TO。
开始的最小值。
从min到max的步长
用于pow计算的底。
GridSearch可以参数以下指标进行优化:
Correlation coefficient (= CC) 相关系数
Root mean squared error (= RMSE) 均方根误差
Root relative squared error (= RRSE) 相对平方根误差
Mean absolute error (= MAE) 平均绝对误差
Root absolute error (= RAE) 平均绝对误差平方根
Combined: (1-abs(CC)) + RRSE + RAE 结合的
Accuracy (= ACC) 正确率
注意,Correction coefficient只适用于连续值类别,Accuray只适用于离散类别
下面是几个使用GridSearch的例子
1. 载入一个离散类别的数据集。
2. 选择评价方式为Accuracy.
3. 设置过滤器为weka.filters.AllFilter,因为我们不需要对数据进行任何的特殊处理,在这种情况下,我们不对过滤器进行优化。
4. 设置weka.classifiers.functions.SMO为分类器,并使用核函数weka.classifiers.functions.supportVector.RBFKernel。
5. 设置XProperty为“classifier.c”,XMin为“1”,XMax为“16”,XStep为“1”,XExpression为“l”。这表示会测试SMO分类器参数从1变化到16的情况。
6. 设置YProperty为“classifier.kernel.gamma”,YMin为“-5”,YMax为“2”,YStep为“1”,YBase为“10”,YExpression为“pow(BASE,I)”。这会测试RBFKernel中的gamma参数值10-5,10-4,…,102。
7. 运行后会输出与下面相似的结果。
Filter: weka.filters.AllFilter
Classifier: weka.classifiers.functions.SMO -C 2.0 -L 0.0010 -P 1.0E-12 -N 0 -V -1 -W 1 -K
"weka.classifiers.functions.supportVector.RBFKernel -C 250007 -G 0.0"
X property: classifier.c
Y property: classifier.kernel.gamma
Evaluation: Accuracy
Coordinates: [2.0, 0.0]
Values: **2.0** (X coordinate), **1.0** (Y coordinate)
Optimizing PLSFilter with LinearRegression (# of components and ridge)
1. 载入一个连续值类别的数据集。
2. 选择评价方式为Correlation coefficient。
3. 设置过滤器为weka.filters.supervised.attribute.PLSFilte。
4. 设置weka.classifiers.functions.LinearRegression为分类器,并使用no attribute selection和no elimination of collinear attributes(极大提高LinearRegression的速度)。
5. 设置XProperty为“filter.numComponents”,XMin为“5”,XMax为“20”(这与你所用的数据集有很大关系,它不应该大于某个值),XStep为“1”,XExpression为“l”。这表示会测试FLSFilter component从5到20的情况。
6. 设置YProperty为“classifier.ridge”,YMin为“-10”,YMax为“5”,YStep为“1”,YBase为“10”,YExpression为“pow(BASE,I)”。这会测试RBFKernel中的gamma参数值10-10到105。
运行后会输出与下面相似的结果。
Filter: weka.filters.supervised.attribute.PLSFilter -C 5 -M -A PLS1 -P center
Classifier: weka.classifiers.functions.LinearRegression -S 1 -C -R 5.0
X property: filter.numComponents
Y property: classifier.ridge
Evaluation: Correlation coefficient
Coordinates: [5.0, 5.0]
Values: **5.0** (X coordinate), **100000.0** (Y coordinate)
Notes:
分类器的属性以classfier.开头
过滤器的属性以filter.开头
对象的数组用[<index>]方法表示,index从0开头,比如在GridSearch中使用weka.filters.MultiFilters包含一个ReplaceMissingValues和一个PLSFilter,你可以用filter.filter[1].numComponents来表示FLSFilter的numComponents属性。
Downloads
CVParam.java
优化J48的C参数
数据挖掘
、
机器学习
这些字眼,在一些人看来,是门槛很高的东西。诚然,如果做算法实现甚至算法
优化
,确实需要很多背景知识。但事实是,绝大多数
数据挖掘
工程师不需要去做算法层面的东西。他们的精力,集
中
在特征提取、算法选择和
参数
调优上。那么,一个可以方便地提供这些功能的工具,便是十分必要的了。而
weka
,便是
数据挖掘
工具
中
的佼佼者。
Weka
的全名是怀卡托智能分析环境(WaikatoEnvironmentforKnowledgeAnalysis),是一款免费的,非商业化的,基于Java环境下开源的
机器学习
以及
数据挖掘
软件,它和它的源代码可在其官方网站下载。有趣的是,该软件的缩写
weka
也是NewZealan
中
,移动到刚刚下载的目录
(cMLA-GitRepo)
为了预处理和转换
weka
的数据集,移动到数据集目录并运行(F9)转换器(例如:移动到\Datasets\BCIC_3_DS_4a_100hz,运行BCIC_3_DS_4a_converter.m)
要绘制结果(Clustergram
Pearson
相关矩阵),请运行
plotresults_new.m
要绘制平均皮尔逊相关矩阵,请在
plotresults_new.m
中
删除第
187-248
行的注释符号
要向绘图添加标题,请在
plotresults_new.m
中
,从第
156,165,216
行
中
删除注释符号,并相应地手动重命名第
行
中
的标题。
变更日志:
04.01.2016
添加了
优化
的
参数
值
添加了用于在傅立叶变换前后绘制示例信号的脚本
05.12.2015
更新的图表和结果
13.05.2015
数据挖掘
、
机器学习
这些字眼,在一些人看来,是门槛很高的东西。诚然,如果做算法实现甚至算法
优化
,确实需要很多背景知识。但事实是,绝大多数
数据挖掘
工程师,不需要去做算法层面的东西。他们的精力,集
中
在特征提取,算法选择和
参数
调优上。那么,一个可以方便地提供这些功能的工具,便是十分必要的了。而
weka
,便是
数据挖掘
工具
中
的佼佼者。
Weka
的全名是怀卡托智能分析环境(WaikatoEnvironmentforKnowledgeAnalysis),是一款免费的,非商业化的,基于JAVA环境下开源的
机器学习
以及
数据挖掘
软件。它和它的源代码可在其官方网站下载。有趣的是,该软件的缩写
WEKA
也是NewZeala
近期,由Frank Hutter, Lars Kotthoff, Joaquin Vanschoren撰写的《AUTOML:方法,系统,挑战》“AUTOML: METHODS, SYSTEMS, CHALLENGES (NEW BOOK)” 221页的草稿版本已经放出,详细讲解了所有AutoML系统背后的基础知识,以及对当前AutoML系统进行了深入描述,Auto-
WEKA
、Hyperopt-Sklearn、Auto-sklearn等,最后介绍了AutoML的挑战。作者当前正在完成这本新书的编辑工作,它将由NIPS 2018出版发行。
AutoML提供了一种选择模型和
优化
超
参数
的方法。它还可以用于获取对于一个
问题
可能性能的基准结果。
因为涉及到版权
问题
,只弄核心部分。
数据方面以及
weka
在这一篇博客
中
介绍了
链接: https://blog.csdn.net/Nothing_ness/article/details/109331074.
1引入依赖pom.xml(记得刷新maven配置)
<!--
weka
集成java-->
<dependency>
<groupId>nz.ac.waikato.cms.
weka
</
가지가 많고 잎이 무성한 나무는
살랑거리는 바람에도 잎이 흔들려서 잠시도 조용한 날이 없다는 뜻으로,
자식을 많이 둔 어버이에게는 근심, 걱정이 끊일 날이 없음을 비유적으로 이르는 말.
가지 많은 나무 바람 잘 날 없다고 우리 부모님 마음 편할 날이 없으셨지.
具体分析:
가지 많은 나무에〔나무가〕바람 잘 날 〔잠잠할 적〕 이 없다.
转自网易博客http://nanjiguilai.blog.163.com/blog/static/114800242201322033836158/
1.线性回归(LinearRegression)
1.1原理
在统计学
中
,线性回归是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型
参数
的线性组合。只有