交易中的机器学习:理论、模型、实践和算法交易 - 页 2974

 
mytarmailS #:
反正也是空的

是的,如果你不想的话

 
mytarmailS #:
带有目标定位功能的机器学习不起作用,单次学习不起作用,真是可悲....

移除对称特征以减少偏差。

例如,用绝对增量(波动性)代替增量。

有时会有帮助

 
Maxim Dmitrievsky #:

去除对称特征以减少偏差

例如,用绝对增量(波动性)代替增量

有时会有帮助。

不,比这复杂得多。
 
Aleksey Vyazmikin #:

我的想法是获得一个模型,通过一些统计特征来选择稳定的量子片段。欢迎大家加入这个项目。

你为什么对这些量子如此着迷?

它们没有任何知识性可言。只需将 10000 条线分成 100 块,即排序并从最下面开始数 100 条线,如果下面的线与第 100 条线重合(即重复),那么我们就将它们全部归入第一块。如果有重复的行,则将其全部转到第一块。重复的行结束后,开始在第二块中输入行数--下一个 100 行+重复的行。以此类推,直到行数用完。

即使是一棵树,它所包含的有用信息(因为它是经过数据训练的)也要比这些量子段(只有 100 个带重复的排序字符串)多得多。

 
Forester #:

你为什么这么迷恋这些经济学家?....

它们根本没有什么智慧可言。只需将 10000 行分成 100 份,即排序并从下往上数 100 行,如果接下来的行与第 100 行重合(即重复),则将它们全部归入第一份。如果有重复,则将其全部转到第一块,重复的则从第二块开始输入行数--下一个 100 行+重复的(如果有的话)。以此类推,直到行数用完。

即使是一棵树,它所包含的有用信息(因为它是在数据基础上训练出来的)也比这些量子段(只有 100 个带重复的排序行)要多得多。

量子段是构建 CatBoost 模型的基础。据我所知,这种方法最初解决了节省内存和加速计算的问题。另一个好处是减少了预测指标组合的变体,在减少多重共线性方面迈出了一步,总体上有助于提高训练的速度和质量。此外,数据漂移的问题也得到了部分解决。

我还看到了其他方面的推动力--探索量子分段数据中概率估计的潜力。如果我们采用您建议的量化方法(实际上,我们最好想象该过程的目的是筛选出同质组--类似于聚类),并根据示例数量将数据分成 20 个相等的量子段,那么结果是每个量子段中只剩下 5% 的数据。CatBoost 默认创建 254 个分隔符,即 255 个段。然后根据这些分段建立树。假设所有量子片段都同样有用,则应通过建立决策树的方法,将组划分为若干子组,从而确定它们的插入位置。分区既可以通过根预测因子进行,也可以通过其他预测因子进行。即使我们只用一棵树,在经过 6 次分割后,"1 "正类的原始例子中还有多少会留在最终列表中?我们必须考虑到,拆分选择是基于量子拆分的累积数量指标的。考虑到树形构建方法本身,很明显,将预测器分割成量子段的质量越高,要达到相同的叶片精确度,所需的分割次数就越少。我注意到--每个分割都是一个假设,而所有假设都不可能是真的。因此,如果我们在进行拆分时考虑到量子片段有可能更多地属于其中一个类别,那么我们就可以减少拆分的次数,从而达到相似的准确度,也就减少了潜在错误假设(拆分)的数量。此外,如果我们能立即将预测器拆分为全局 3 个区域--两个用于类别成员资格,一个用于不确定性,那么平均而言,模型就会更小,统计性能也会更好--我预计也会更稳健。

例如,假设预测因子是 RSI 振荡器--参与者的重要行动发生在 70、50、30 水平附近--比方说,超出这个水平的一切都不会影响市场参与者的决策。那么,建立一个量子表,将这三个值与其他值分开是合理的。否则,其中一个分隔会随机地在类成员的量子段中出现更多实例,这样就会得到一个错误假设的错误规则。

您可以用量化的预测得分绘制柱形图,并为每一列绘制类别成员概率 "1 "的曲线。如果曲线更可能是一条直线,那么我就会把这样的预测因子放在板凳上。在我看来,好的预测器要么会有一条斜线,要么会在某些列上出现尖峰。

我们可以说,通过量化,我正在寻找影响价格变动概率的离散事件。

 
规则正是将
rsi>69 & rsi<71....
这就是量化。
你把一个木制的 AMO 分成几棵树,然后把正确的树拔出来。

什么量化?你真是胡说八道,太可悲了。

三行代码就能解决所有问题...
而你已经研究这个量子化很多年了 就像个疯狂的教授一样
 
mytarmailS #:
规则只需除以
rsi>69 & rsi<71....
这就是所有的量化...
你把一个木制的 AMO 分成几棵树,然后取出正确的...

什么量化?你在胡说八道,真是可悲。

三行代码就能解决所有问题......
而你在这个量化媒介上捣鼓了好几年 就像个疯子教授一样

创建量化表有不同的方法。我认为,你确实可以通过一个现成的软件包来实现,它可以在单个预测因子上构建树,并在表中给出关于示例百分比的约束条件。我不知道那个软件包是什么,也不知道如何以我需要的格式获取数据。

重要的不仅仅是分割,而是找到评估量子分割的标准,从而提高在新数据中保留类成员身份的概率。

我为什么要这么做--因为这是建立定性模型的关键。

为什么要花很长时间--大量的实验和测试脚本。我对 OpenCL 有一点了解,现在代码已经部分计算在显卡上--这需要时间--我必须研究很多东西。

 
Aleksey Vyazmikin #:

重要的不仅仅是分区,而是 找到评估这一量子截止值的标准,从而提高类别成员资格在新数据中持续存在的可能性。

你有没有看过同一台机器中的代码?你正在使用它。它没有使用第三方软件包。但就是这么一个小函数(比我描述的还要简单,它不会根据重复的数量移动分离点)。
,我写了关于出现的情况的注释。输入是一个已排序的列。

static THashSet<float> GenerateMedianBorders(
    const TVector<float>& featureValues, const TMaybe<TVector<float>>& initialBorders, int maxBordersCount) {
    THashSet<float> result;
    ui64 total = featureValues.size(); //число строк в столбце
    if (total == 0 || featureValues.front() == featureValues.back()) { // проверки
        return result;
    }

    for (int i = 0; i < maxBordersCount; ++i) { // цикл по числу квантов
        ui64 i1 = (i + 1) * total / (maxBordersCount + 1); // номер строки начала кванта номер i
        i1 = Min(i1, total - 1); // не больше числа строк 
        float val1 = featureValues[i1]; // значение в строке i1
        if (val1 != featureValues[0]) { // если != значению в 0-й строке, чтобы не было дубля с 0-й строкой
            result.insert(RegularBorder(val1, featureValues, initialBorders)); // сохранить значение в массив границ разделяющих кванты (не смотрел, но очевидно, что дубликаты пропустит и не создаст им квант)
        }
    }
    return result;
}


稍微复杂一些的变体可以根据重复行的数量进行移动,也可以优化量子的大小(例如,如果 10000 行中有 9000 行重复,那么简单函数将产生 11 个量子:前 1000 行中的 10 个量子和第 11 行中剩余的 9000 个重复量子,或者也可以将前 1000 行分为 99 个量子 + 1 个量子,其中包含 9000 个重复量子)。
但它们也没有什么智力上的区别--同样是简单地计算所需的字符串数量。

原始的(还有更复杂的变体)https://github.com/catboost/catboost/blob/3cde523d326e08b32caf1b8b138c2c5303dc52e5/library/cpp/grid_creator/binarization.cpp
学习本页的函数一周,就能节省好几年的时间。

附注:下一个量子不是正好 100 个字符串,而是 315 或 88 或 4121 的主要原因不在于某个超级棘手的公式(根据预测能力组合字符串,您想用它来 搜索该量子段的评估标准),而在于重复的数量。
catboost/binarization.cpp at 3cde523d326e08b32caf1b8b138c2c5303dc52e5 · catboost/catboost
catboost/binarization.cpp at 3cde523d326e08b32caf1b8b138c2c5303dc52e5 · catboost/catboost
  • catboost
  • github.com
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 
有必要去救一个明显溺水却乐于自杀的人吗?
当你向他伸出援助之手时,他拒绝了,与你争吵,不试图自己做任何事情来脱身,并提出他自己的条件,比如:
"要么你自己救我,在我最喜欢的音乐声中把我举过头顶,把我从水里捞上来,要么你就别救我。
然后你根本不想救我。


 
Forester #:

你有没有看过同一款猫弹中的代码?你正在使用它。它没有使用第三方软件包。但这只是一个很小的函数(比我描述的还要简单,它不会根据重复的数量移动分离点)。
,我写了关于出现的情况的注释。输入是已排序的列。

我当然看了。此外,我准备支付在 MQL5 中重现所有定量方法的工作费用。目前的尝试都不成功,您愿意试试吗?

Forester#:

正如您所看到的,一切都非常简单,没有任何知识性的东西--例如,只需计算 100 行,就可以了。

您已经给出了最简单的方法--是的,这并不难。

另外,我有写过有巧妙的量化方法之类的吗?这和我写的有什么矛盾吗?