特征选择第1部分:特征加权


特征选择第1部分:特征加权
在某些用例中,您可能对找出哪些属性对于预测给定标签是重要的感兴趣。这个属性性能本身可以是结果,因为它可以告诉您是什么原因使某人或某事以这种方式表现。在本文中,我们将讨论查找这些特征权重的常用技术。
过滤方法
确定属性重要性最常用的方法之一是使用统计度量来定义重要性。常用的衡量标准是相关性、基尼指数或信息增益。在RapidMiner中,您可以使用重量操作符。
得到的对象是一个权重向量。权重向量是所有特征加权操作的中心对象。如果我们看一下,它看起来是这样的:
有两个操作符对于权重对象的使用很重要。数据权重将此表转换为示例集。然后可以将其导出到Excel或数据库中。
按权重选择允许您使用此权重选择属性。例如,您可以只选择权重大于0.1的属性,或者选择k个最前面的属性。
包括非线性属性和组合
上面的Filter方法存在不包含非线性的问题。克服这个问题的一种技术是生成相同属性的非线性组合。操作员生成功能集可以用来生成pow(年龄,2)或sqrt(年龄)之类的东西,以及它们之间的组合。此操作符通常与按结构重命名以获得可读的名称。
处理依赖关系
过滤器方法的另一个已知问题是变量之间的依赖关系。如果你的数据集包含Age, 2xAge,3xAge和4xAge,它们都可能得到一个高度特征权重。克服这个问题的一个方法是MRMR.MRMR包含在RapidMiner的功能选择扩展.
基于模型的特征权重
另一种获得特征权重的方法是使用模型。有些模型能够自己提供权重向量。这些值告诉你一个属性对学习者本身有多重要。每个学习者的具体计算方案不同。权向量由这些算子提供:
- 线性回归
- 广义线性模型
- 梯度增强树
- 支持向量机(仅带线性核)
- 逻辑回归
- 逻辑回归(SVM)
通常建议在取权重之前调整这些操作符的参数(和选择)以获得最大的预测精度。
一个特殊的例子是随机森林算子。随机森林模型可以被输入到树重要性加权算子得到特征权值。
特征选择方法
除了特征加权,你还可以使用特征选择技术。不同之处在于,你只得到一个权重向量,如果它在所选属性集合中,则为1,如果它不在所选属性集合中,则为0。最常用的技术也是包装器方法,即前向选择和后向排除。
多标称分类问题与聚类
在多标称分类问题中,以一对全的方式这样做通常是有用的。这就回答了“是什么让A组不同于其他组”这个问题?该方法的一种变体包括将其应用于聚类标签以获得聚类描述。
进化特征生成
另一种结合非线性和交互项的复杂方法(例如,找到像sqrt(年龄-权重)这样的依赖项)是使用进化特征生成方法。RapidMiner中的操作符是Yagga和Yagga2。请查看运营商信息了解更多细节。
规范的分析
除了生成一般的特征权重,您还可以为单个示例找到单独的依赖项。在这种情况下,您可以改变示例中的变量,并检查模型预测的影响。一个常见的用例是通过检查客户的个人评分结果来检查是否值得打电话给客户。
乐鱼体育安装
德国多特蒙德
评论
伟大的文章@mschmitz!在我的培训课程中出现过几次的一个问题是,是否有任何操作符可以为多元评分模型提供属性重要性。正如你上面提到的,一些建模算法直接输出权重,但许多流行的算法不这样做(例如决策树,神经网络,朴素贝叶斯)。在这些情况下,我通常会告诉学生,他们可以采用本文中讨论的其他方法之一(例如第一节中讨论的“加权”运算符,它涉及独立权重,但不涉及特定模型上下文中的权重)。
理论上,另一种方法是获取所有模型属性的列表,并从最终模型中逐个删除它们,以查看模型性能的最终恶化情况,并相应地对它们进行排序(其中导致性能下降最大的属性具有最高权重,所有其他属性的权重都按比例缩放)。当然,这可以手动完成(甚至可以通过循环来减少重复操作),但是如果RapidMiner添加一个操作符来为任何模型自动执行此操作,并将结果表作为一组权重输出,那就更好了。只是对未来产品增强的一个想法!
Lindon合资企业
乐鱼平台进入来自认证RapidMiner专家的数据科学咨询
谢谢@Telcontar120,
我同意,随着时间的推移,还有一些更多的方法将被纳入本文。你的建议完全没问题。我通常称之为n-1模型。整个行为非常类似于向后四舍五入。
另一方面,Breiman等人建议不删除它们,而只是在测试过程中通过洗牌来“噪声”一个属性。我认为这种技术比删除属性有一些很好的优势(例如更好地处理共线性)。我在某个地方找到了这个过程…需要搜索
~马丁
德国多特蒙德
谢谢@mschmitz当然,我也意识到,要回答“我的模型中变量的重要性是什么?”这个问题,并没有一个简单、单一的方法。所以回答这个问题的多种方式可能是合适的。然而,在我的经验中,这是一个非常常见的问题,所以如果RapidMiner有一个方便和易于解释的方法来提供给用户,那就太好了。正如您所说,“n-1”方法与向后消除非常相似,事实上,如果可以提供现有向后消除操作符的中间输出,那么对于RapidMiner来说,这可能是一种非常简单的方法,可以创建一个操作符,为该问题提供一个视角。当然,如果你找到一个相关的过程,并张贴在这里,我将非常感激:-)
欢呼,
布莱恩
Lindon合资企业
乐鱼平台进入来自认证RapidMiner专家的数据科学咨询
嗨,马丁,
关于这部分:
“操作符Generate Function Set可用于生成pow(年龄,2)或sqrt(年龄)等内容,以及它们之间的组合。”
如果我们需要使用这种方法克服非线性,我们还应该在转换后丢弃原始属性(取消选中“保留所有”),我是否正确?也许你有整个过程的例子?
谢谢!
弗拉基米尔•
http://whatthefraud.wtf
嗨
请帮帮我
莫里茨
我想知道这些方法是否以并行方式实现执行。
特别是因为其中一些方法不能很好地随数据大小的增加而扩展。