『Machine Learning for Asset Managers』のリポジトリに貢献しました
『Machine Learning for Asset Managers』は,金融市場分析に役立つ機械学習に関する手法をまとめられた2019年に刊行の書籍です.この本は日本語訳版『アセットマネージャーのためのファイナンス機械学習』としても出版されています.
この書籍は Python コードによる実践例と合わせて解説する構成となっており,GitHub 上でコードがまとめて公開されています.しかし,このリポジトリ上のコードは著書の説明と食い違う箇所がいくつかあり,解釈を困難にしています.たとえば次の例のようなスペルミスや変数名の間違いなどがあります.
Machine_Learning_for_Asset_Managers/ch3_metrics.py
l37:
#codesnippet 3.4 Correlation and normalized mutual information of two independent gaussian random variables
– def mutualInfor(x,y, norm=False):
+ def mutualInfo(x,y, norm=False):
#mutual information
bXY = numBins(x.shape[0], corr = np.corrcoef(x,y)[0,1])
cXY = np.histogram2d(x,y, bXY)[0]
iXY = mutual_info_score(None, None, contingency=cXY)
if norm:
– hX = ss.entropy(np.histogram(x, bins)[0]) #marginal
– hY = ss.entropy(np.histogram(y, bins)[0]) #marginal
+ hX = ss.entropy(np.histogram(x, bXY)[0]) #marginal
+ hY = ss.entropy(np.histogram(y, bXY)[0]) #marginal
iXY /= min(hX, hY) #normalized mutual information
return iXY
|
Machine_Learning_for_Asset_Managers/ch6_feature_importance_analysis.py
l30:
#code snippet 6.2 implementation of an ensembke MDI method
def featImpMDI(fit, featNames):
#feat importance based on IS mean impurity reduction
– df0 = {i:tree.feature_importances_ for i, tree in enumerate(fit.enumerators_)}
+ df0 = {i:tree.feature_importances_ for i, tree in enumerate(fit.estimators_)}
df0 = pd.DataFrame.from_dict(df0, orient=’index’)
df0.columns = featNames
df0 = df0.replace(0, np.nan) #because max_features=1
|
これ以外にもおそらく説明と食い違っている箇所を含め,新たに fork したリポジトリ上で修正を行って Pull Request を提出しました.また,正常に動作するかを確認するため実行デモを行う Jupyter notebook を作成,公開しました.
本リポジトリはオリジナルの Apache License 2.0 ライセンスに従い,自由に使ってもらって構いません.新たに修正すべき点があればissueを投げてください.
今後も金融市場における機械学習技術に注目していきます.
GitHubリポジトリ: https://github.com/emoen/Machine-Learning-for-Asset-Managers
文責:崎下 雄稀
2023/08/29