数据挖掘重要变量(数值型):从哪里开始?

我在外汇市场上有一个交易策略,正在尝试改进它。

我有一个巨大的表格(超过10万行),代表市场上每笔可能的交易,交易类型(买入或卖出),交易结束后的盈亏,以及大约10个额外的变量,这些变量代表交易开启时的各种市场测量值。

我正在尝试找出这10个变量中是否有任何一个与盈亏显著相关。

例如,假设变量X的范围从50到-50。买单的X平均值为25,卖单的X平均值为-25。

如果最赚钱的买单X值大于25,而最赚钱的卖单X值小于-25,那么我会认为X与盈利的关系是显著的。

我希望有一个好的起点。我已经安装了RapidMiner 5,如果有人能给我一个具体的建议就更好了。


回答:

或许从决策树开始是最好的选择。

决策树本身是对特征重要性排序的视觉总结(或如提问者所述的重要变量)。

  • 为你提供整个分类/回归分析的视觉表示(以二叉树的形式),这使其与我所知的任何其他分析/统计技术区别开来;

  • 决策树算法对数据的预处理要求非常少,不需要标准化,不需要重新缩放,不需要将离散变量转换为整数(例如,男性/女性=>0/1);它们可以接受分类(离散)和连续变量,许多实现还可以处理不完整的数据(数据矩阵中某些行的值缺失);并且

  • 再次强调,决策树本身是对特征重要性排序的视觉总结
    (即,重要变量)——最重要的变量是根节点,并且比两个子节点更重要,而这两个子节点又比它们的四个子节点更重要。这里的“重要性”指的是解释的方差百分比(相对于某个响应变量,即“目标变量”或你试图预测的东西)。有一个前提:从决策树的视觉检查中,你无法区分同一级别节点之间的变量重要性。

如果你之前没有使用过决策树,以下是它们的工作原理:算法将遍历你的数据中的每个变量(列)和每个变量的每个值,并根据这些值将你的数据分成两个子集。算法实际选择哪个分裂——即,分裂标准是什么?选择“净化”数据最多的特定变量/值组合(即,最大化信息增益)来分裂数据(该变量/值组合通常被标示为节点的标签)。这种简单的启发式方法只是递归执行,直到剩余的数据子集是纯的或者进一步分裂不会增加信息增益。

这告诉你数据集中变量的“重要性”是什么?重要性由接近根节点的程度表示——即,层次级别或排名

一个建议:决策树通常可以无问题地处理分类和离散数据;然而,根据我的经验,如果响应变量(你试图使用所有其他变量来预测的变量)是离散/分类而不是连续,决策树算法总是表现得更好。看起来你的可能是连续的,在这种情况下,我会考虑将其离散化(除非这样做会使整个分析变得毫无意义)。要做到这一点,只需使用与你的问题领域相关的参数(箱大小、箱数量和箱边界)对你的响应变量值进行分箱——例如,如果你的响应变量由1到100的“连续值”组成,你可以合理地将它们分成5个箱,0-20,21-40,41-60,等等。

例如,从你的问题来看,假设你的数据中的一个变量是X,它有5个值(10, 20, 25, 50, 100);还假设在该变量上以第三个值(25)分裂你的数据会得到两个几乎纯净的子集——一个低值和一个高值。只要这种纯度高于从其他值分裂得到的子集,数据就会在这个变量/值对上分裂。

RapidMiner确实有决策树实现,看起来网上有很多教程可用(例如,来自YouTube,这里这里)。(注意,我没有使用过R/M中的决策树模块,也没有使用过RapidMiner。)

我会考虑的另一组技术通常被归类为降维特征提取特征选择是D/R之后最常见的两个术语。最广泛使用的是PCA,或主成分分析,它基于对协方差矩阵的特征向量分解(从你的数据矩阵中导出)。

这种特征向量分解的一个直接结果是每个特征向量解释的数据变异性比例。仅从这个结果,你就可以确定需要多少维度来解释,例如,你数据中95%的变异性

如果RapidMiner有PCA或其他功能类似的降维技术,找到它并不明显。我确实知道RapidMiner有一个R扩展,当然这让你可以在RapidMiner内访问R。R有大量的PCA库(包)。我下面提到的所有包都在CRAN上可用,这意味着那里的任何PCA包都满足文档和代码示例(vignettes)的最低包要求。我可以推荐pcaPP(通过投影追求的鲁棒PCA)。

此外,我可以推荐两个关于PCA的优秀的逐步教程。第一个来自NIST工程统计手册。第二个是一个教程,用于独立成分分析(ICA)而不是PCA,但我在这里提到它是因为它是一个优秀的教程,而且这两种技术用于相似的目的。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注