def brute_force(samples=5000):
import numpy.linalg as lnalg
gen = []
for index_cl, cls in enumerate(arr_classes):
dlt = samples * 60
sub_arr = np.zeros((dlt, len(cols), 1))
#generate samples ahd lables for cls class
col_counter = 0for col in cols:
sub_arr[:, col_counter] = np.random.normal(loc=desc_df[index_cl][col]['mean'],
scale=desc_df[index_cl][col]['std'],
size=(dlt, 1)
)
col_counter += 1
sub_arr = sub_arr.reshape((sub_arr.shape[:-1]))
#normalization lables
sub_arr[-1] = np.where(sub_arr[-1] >= 0.5, 1, 0)
mh = np.zeros((arr_classes.shape[0]))
counter = 0
#selection of the most successful samples
for index, i in enumerate(sub_arr):
for m_index, m_cls in enumerate(arr_classes):
mu, isig = inv_sig[m_cls]
mh[m_index] = mahalanobis(i[:-1], mu, isig)
#if gmm assignment the same as the original label add in gen
if np.argmin(mh) == i[-1]:
gen = np.append(gen, i)
counter += 1if counter == int(samples / 2):
break
...
Karoch 我不知道,也许我的枪法不对 )))但我看不出有它和没有它有什么区别,在我看来,一切都是由目标决定的,别无其他....
我总共有 6 万个数据。
我从前端 10k 个数据中随机抽取 500 个点。
我要么立即对它们进行模型训练,要么先训练 gmm,然后再训练模型。
在剩余的 5 万个点上进行测试
即使用通常的方法,你也能找到像 gmm 这样的模型,而且它们的遗传频率是相同的。
例如
不使用 gmm 的模型在 500 个点上训练,在 50k 个点上测试。
=================================================================================================
看到一个值得思考的有趣现象.....
有一种观点认为,应将市场划分为不同的状态,并在每个状态下采用不同的策略进行交易,但我所知道的所有尝试都不成功,要么是看不到状态,要么是即使在 "一种 "状态下模型的交易也很糟糕。
但通过这种方法,你可以很清楚地看到模型 "喜欢 "哪个市场,不喜欢哪个市场。哪些不喜欢。
可能是由于来自 mashka 的回报作为标志,该模型在平盘时运行得更好。
您可以手动分割成不同的状态,然后将这些时间段放入示例中。您需要按 "状态 "平衡示例,或通过 gmm 制作人工示例
是的,您可以按状态来做 HMM,但这都将通过滑动窗口来识别,因此窗口大小会有滞后,所以 ......)
我刚刚看到有一个非常清晰的状态视图,看起来很有趣。
是的,您可以按状态进行 HMM 处理,但所有状态都将通过滑动窗口识别,因此窗口大小存在滞后性,因此 ......。)
我刚刚看到,您可以在这里非常清楚地看到状态,这似乎很有趣。
.我怎么从来没有在裸体模特身上得到过这样的效果。也许几个马什卡人就能做到。
我一直在用 gmm,尝试不同的方法,这样那样。
我痴迷于通过优化分布或函数来创建训练样本。
根本不用任何样本,只需生成 "一些东西",然后在真实数据上进行测试。
但我还不知道如何实现它
=====================================================
我还有一个想法,就是通过删除模型中的坏树来提高质量,这可能也有帮助。
我痴迷于通过优化分布或函数来创建训练样本。
然后,无需从任何样本开始,只需生成 "一些东西",并在真实数据上进行测试。
但我还不知道如何实现它。
=====================================================
我还有一个想法,可以通过删除模型中的坏树来提高质量,这可能也有帮助。
这是一种奇特的方法。为了平衡阶级。可以为我们所用我突然想到
https://towardsdatascience.com/augmenting-categorical-datasets-with-synthetic-data-for-machine-learning-a25095d6d7c8
我试图将这种方法整合到文章中的聚类器中,但不是作为一种类平衡方法,而是作为一种新的平衡数据集生成器。
那里有一个计算两个一维数组之间马哈拉诺比斯距离的 好方法。文章说,这是样本与分布均值的标准差的多变量概括。
我还没有完全体验过这个指标,但作者建议用它来评估生成的特征是否属于某个特定类别 。
https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.mahalanobis.html
要计算这个指标,我们需要两个单变量数组和一个协方差矩阵。
在我们的例子中,第一个数组是生成的特征,第二个数组是来自 GMM 的特征平均分布。协方差矩阵也来自 GMM。GMM 是为每个类别分别准备的。同时生成每个特征的平均值、标准偏差和标签。这些都是生成新数据所需要的。
生成和选择新数据的一切准备就绪。下面在平均值和偏差的基础上随机生成每个类别的特征,数量比规定的多 60 倍以上。这样做的目的是为了有所选择。并将标签带入 0 -1 状态。
计算每个样本与两个类别的 GMM 平均分布数组之间的马哈拉诺比距离 指数后,会得到一个包含 2 个值的数组,显示生成的样本与两个类别的接近程度。如果标签与之吻合,我们就将其添加到训练样本中。这样我们就得到了一个完全平衡的样本。
但这并不能消除手鼓舞和随机性的复杂关系。但如果你足够努力,就能得到一个正常的结果:
如果我有时间和精力,我会尝试在生成器中播撒 25 到 75 个量级的特征分布,也许会有收获。
我还尝试使用距离指标来评估目标特征的选择。我的想法是,如果标签和目标选择正确,该指标的平均值就会降低。
我运行了所有可用的 "成功 "目标和特征组合,同时也复制了 "不成功 "的组合。通过这种粗略的分析,成功的变体的指标值会降低,而不成功的变体的指标值会升高。这可能有一定的关联性,但您必须进行检查。如果您有任何网格扫描仪版本或 GA,可以查看一下
我试着将这种方法集成到文章中的聚类引擎中,但不是作为类平衡方法,而是作为新平衡数据集的生成器。
我运行了所有 "成功 "的目标和属性组合,并复制了 "不成功 "的组合。在这个粗略的分析中,成功变体的指数下降,不成功变体的指数上升。可能存在一定的相关性,但您必须进行检查。如果您有任何网格扫描仪版本或 GA,可以查看一下
还没有扫描仪。太好了,我得仔细看看。到目前为止,我一直在收集可以改进模型的其他方法的信息(除了编码员)。我可能很快就会正式发表一篇文章。
还没有扫描仪。太好了,我得仔细看看。与此同时,我一直在收集可以改进模型的其他方法的信息(除了编码员)。我可能很快就会正式发表一篇文章。
关于您提到的在搜索过程中结合成功模型的问题,我已经尝试过结合不同属性的成功模型。这种方法可以使历史记录中某些部分的缩减趋于均匀。我还注意到,即使有 R^2 为 0.85-0.95 的模型,添加R^2 为 0.65 以上的模型也能改善结果。
除了上述在搜索过程中组合成功模式的方法外,我还尝试了组合具有不同属性的成功模式。这种技术使历史上某些部分的缩减趋于均匀。我还注意到,即使存在 R^2 为 0.85-0.95 的模型,添加R^2 在 0.65 以上的模型也能改善结果。
是的,但代价往往是交易次数减少 10-20%。