`

特征选择-weka搜索函数

阅读更多
由于笔者水平限制,本文可能晦涩难懂,特此向阅读本编文章的朋友们表示歉意!
weka3.8.1中关于特征选择的搜索函数有3个类,分别是Ranker,GreedyStepwise,BestFirst,这3个类的作用是配合评估函数,将训练数据集中的特征进行筛选、排序。以下是笔者对于这3个类的个人理解,如有错误之处望发现的朋友予以批评指正。

总的来说Ranker速度最快,如果不考虑特征间的关系,可以考虑使用它,比如朴素贝叶斯算法;GreedyStepwise速度次之,如果资源有限,又要考虑特征间的关系,比如逻辑回归、决策树,建议用GreedyStepwise;如果资源较多,又要考虑特征间的关系,建议使用BestFirst,因为它的效果会比GreedyStepwise更好。

Ranker
获得一个特征排序列表,按照每个特征的作用进行排序;
优点
速度快,每个特征都独立获得评估;
缺点
只能评估单个的特征,不能评估特征组合

GreedyStepwise
获得一个推荐的特征集合,该特征集合包括初始指定的特征集合,如果不指定即为空;
在初始特征集合的基础上,按顺序遍历每一个特征,评估每个一个特征对初始特征集合的作用,如果有积极作用,则将该特征加入初始特征集合,如果没有积极作用,则将该特征忽略;
优点:
每个特征都得到评估,基本上可以找出一个相对有价值的特征集合,计算量不是很大,计算时间不会太长。
疑点1
特征集合评估的基础集合不断变化,对于每一个待评估的特征不公平;比如第1个特征有价值1.0,第二个特征价值1.1,均入选,到了第n个特征,由于初始数据集中入选了大量有价值的特征,n的特征价值是2.0,也许可能被落选。即前面的特征选择比较宽松,遍历到后期,特征选择比较苛刻。
疑点2
按顺序筛选,可能存在的问题是,特定组合效果非常好,未必会被发现,比如1、2、3组合的效果是1.0,但123加上4的效果并不好,123加上5的效果也不好,
4加上5的效果却好于123的组合,此时4、5的组合就无法被发现。(疑点待验证)

BestFirst
1、初始化特征集合r,作为下一步计算的基础;初始集合可以在函数中指定;否则初始集合为空,如果是反向获取(做减法),初始集合为全部特征;
2、克隆特征集合r,得到新的集合c,遍历所有集合,找出和克隆集合c配合最好的n个特征,将这列特征分别加入到现有的初始特征集合中,存放在列表l中(n可设置)
3、从列表l中取得第一个对象,即当前效果最好的特征集合,作为新的克隆特征集合c,比较集合c和r,如果c效果更有,将c赋值给r,同时在列表l中删除第一个对象,重复步骤2
4、循环重复步骤3,直到连续循环n次,特征集合r均未发生变化,则退出,并返回特征集合r。
优点
各个特征独立参与,保证每个特征在公平环境下竞争,可以解决GreedyStepwise的疑点1
组合顺序不是特定的按特征排序,可以解决GreedyStepwise的疑点2
如果参数设置足够大,几乎可以遍历所有种可能,在优中选优的指导思想下,在计算资源足够多时,很可能可以找出比较优秀靠谱的特征集合。
疑点
计算量比较大,对计算机资源消耗比较大。如果参数设置的比较小,虽然计算量可控,但依然有很大的可能性是没有找出最佳特征集合。

增加个广告:http://51msg.net  http://008sou.com http://s.008sou.com  http://ask.008sou.com
分享到:
评论

相关推荐

    weka3.8导入libsvm

    4. 使用LibSVM:选择LibSVM后,可以配置相应的参数,如核函数类型、惩罚系数C、核函数参数γ等,然后运行分析。 值得注意的是,虽然LibSVM是一个强大的工具,但正确设置其参数至关重要。不同的问题可能需要不同的...

    weka中使用libsvm需要的包

    3. 在Weka的“选择运行”菜单中,选择“Explorer”或“Experimenter”模式。 4. 在“过滤器”或“分类”部分,点击“加载更多...”按钮,然后在弹出的文件浏览器中选择“libsvm”类别,此时应该能看到Libsvm的相关...

    KNN.rar_java k-nn_knn算法_weka k_weka knn

    KNN,全称为K-最近邻(K-Nearest Neighbors),是一种简单而有效的监督学习算法...因此,在实际使用时,需要根据具体情况选择合适的K值,优化距离度量方法,甚至考虑使用更高效的搜索策略,如kd树或球树,来提高效率。

    通过关联规则算法Apriori解读Weka源代码

    ### 通过关联规则算法Apriori解读Weka源代码 #### 概述 本文主要探讨了数据挖掘领域中一种非常重要的算法——关联规则算法Apriori,并重点分析了该算法在Weka系统中的具体实现方式。Weka是一个开源的数据挖掘平台...

    Weka_LibSVM

    用户还可以结合Weka的数据预处理工具,如特征选择和标准化,来优化SVM的表现。 4. **参数调优**:C是正则化参数,控制模型复杂度与过拟合之间的平衡;γ是核函数的宽度,影响决策边界的形状。在实际应用中,通常...

    FS_Code_java_特征选择_源码.rar

    2. 包裹式(Wrapper Method):包裹式方法将特征选择作为优化问题,通过遍历或搜索特征子集,评估每个子集在特定学习算法上的性能。例如,递归特征消除(RFE)是一种常用的包裹式方法,它利用支持向量机、决策树等...

    matlab开发-在TLAB中使用ekassvmregessionfunctions

    本教程将聚焦于如何在MATLAB中利用TLAB(Toolbox for MATLAB)接口来调用WEKA的EKSVMRegression函数,进行支持向量机(SVM)回归分析。以下是对这一主题的详细阐述。 1. **支持向量机(Support Vector Machine, SVM...

    matlab开发-FeatureAnalysis

    接着,执行特征选择方法,如过滤法(基于统计检验)、包裹法(穷举搜索最佳子集)或嵌入法(在模型训练过程中考虑特征重要性)。最后,将选择的特征用于构建模型,并通过交叉验证评估模型的性能。 总的来说,...

    java实现logistic回归算法

    - **Weka**:一个强大的机器学习库,包含多种预处理、模型选择和评估方法,可以直接使用其API实现Logistic回归。 - **Deeplearning4j**:虽然主要用于深度学习,但其也支持逻辑回归模型的构建。 5. **代码实现...

    libsvm-3.12

    libsvm-3.12提供了一种网格搜索(Grid Search)的方法来寻找最优的参数组合,这通常涉及到C(惩罚系数)和γ(核函数参数)的选择。`svm-grid`工具可以帮助用户在预设的参数网格上进行交叉验证,自动找出最优参数。 ...

    libsvm_LibSVM_

    - 自动调参:内置网格搜索(grid search)方法进行参数调优,如C(惩罚系数)和γ(核函数参数)。 3. **LibSVM的编程接口** LibSVM提供了简洁的C/C++接口,同时提供了Python、Java、Perl等语言的封装库。用户...

    Main_LR分类_逻辑回归_

    2. **数据预处理**:在应用逻辑回归之前,数据通常需要进行预处理,如缺失值处理、异常值检测、特征缩放、特征选择等。 3. **模型构建**:使用Weka的Classifier接口,可以选择Logistic分类器,然后用训练数据拟合...

    遗传算法实践以及遗传算法实践

    利用遗传算法,可以通过编码图的结构信息,如边的连接关系,来构造种群,并通过遗传操作(选择、交叉、变异)来搜索可能的同构映射。在这个过程中,适应度函数通常是评价映射是否正确的重要标准,通过不断迭代优化,...

    matlab开发-在TLAB中使用Ekassvm分类功能

    2. **加载数据**:在MATLAB中,你可以使用内置的函数读取数据,例如`csvread`或`textscan`,或者直接使用Weka的`weka.core.converters`包中的类来加载常见的数据格式,如.arff文件。 3. **创建SVM模型**:使用Weka...

    java实现SVM支持向量机算法

    总的来说,使用Java实现SVM支持向量机算法涉及多个步骤,包括理解SVM的数学基础,实现优化算法,处理数据,选择和实现核函数,以及参数调优和模型评估。"svm-optimization-master"这个项目很可能是对SVM优化部分的...

    基于Python的数据分析与挖掘,主要根据机器实战、利用Python数据分析与挖掘实战以及sciki_learn机器.zip

    3. 模型选择与评估:通过交叉验证、网格搜索等方法,选择最佳模型参数,评估模型性能。 四、机器学习实战 1. 监督学习:利用已知输入与输出的训练数据,学习一个函数,使得对未知数据的预测尽可能准确。 2. 无监督...

    java-svm-inputoutputmodel.zip_源码

    8. **调优与模型选择**:如果模型性能不理想,可能需要返回调整参数,或者尝试不同的核函数,进行多次训练和验证,以找到最佳的模型。 以上就是Java中实现SVM模型的输出和调用的基本步骤和涉及的知识点。通过阅读...

    svm相关工具包

    此外,它还提供了调参、交叉验证和网格搜索等方法,便于模型优化。 2. **LibSVM** & **LibLinear**: LibSVM和LibLinear是由Chih-Chung Chang和Chih-Jen Lin开发的原生C++库,它们专注于高效地实现SVM算法。虽然...

    SVM 算法java实例

    1. **数据预处理**:在使用SVM之前,数据通常需要进行预处理,包括标准化(归一化或正则化)、缺失值处理和特征选择。这一步确保数据的质量和一致性,有利于算法的稳定性和性能。 2. **构建模型**:SVM的核心是构建...

Global site tag (gtag.js) - Google Analytics