量化交易软件:赫兹量化中暴力算法的 CatBoost 模型高级重采样与选择
我试图提供一个关于主要机器学习模型创建步骤及其进一步实际应用的总体思路。在这一部分中,我想从简单的模型切换到具有统计意义的模型。由于创建一个基于机器学习的交易系统不是一个简单的任务,我们将从一些数据准备改进开始,这将有助于实现最佳结果。可以使用各种重采样技术来改进源数据的表示(训练示例)。本文将讨论其中一种技术。
原始GIGO数据集分析
本文使用了前一部分中修改和改进的函数。载入数据:
LOOK_BACK = 5 MA_PERIODS = [15, 55, 150, 250] SYMBOL = 'EURUSD' MARKUP = 0.00010 TIMEFRAME = mt5.TIMEFRAME_H1 START_DATE = datetime(2020, 1, 1) TSTART_DATE = datetime(2015, 1, 1) STOP_DATE = datetime(2021, 1, 1) # make dataset pr = get_prices(START_DATE, STOP_DATE) pr = add_labels(pr, min=10, max=25, add_noize=0) res = tester(pr, plot=True) pca_plot(pr)
由于原始数据集的维数是20个特征(look_back*len(ma_periods))或任何其他大的特征,所以在平面上显示它不是很方便。让我们使用PCA方法,只显示5个主要组件,这将允许以最少的信息损失压缩特征空间:
如果您不熟悉PCA(主成分分析),请在谷歌中搜索。
def pca_plot(data): from sklearn.decomposition import PCA pca = PCA(n_components = 5) components = pd.DataFrame(pca.fit_transform(data[data.columns[1:-1]])) components['labels'] = data['labels'].reset_index(drop = True) import seaborn as sns g = sns.PairGrid(components, hue="labels", height=1.2) g.map_diag(sns.histplot) g.map_offdiag(sns.scatterplot) g.add_legend() plt.show()