Japanese Docs
Search…
FNCについて

Feature Neutral Correlation (FNC)

Motivation

Feature Neutral Correlation(FNC)とは、モデルの予測値と、Numeraiがもつすべての特徴量を中和した後の、ターゲットとの相関のことです。 少数の特徴量に依存しているモデルは、FNCが低くなりますが、短期的には高いパフォーマンスを持つかもしれません。 たとえば、dex7を予測値としたこのモデルは、高いパフォーマンスを示す時期があります。
しかし、このようなモデルでは長期的なパフォーマンスが低い可能性があります。 様々な特徴量を使用し、なおかつターゲットとの相関性が高いモデルは、FNCが高く、長期的に安定したパフォーマンスを発揮する可能性が高いです。

FNCの計算方法

・あるラウンドにおけるユーザのFNCを計算するために、提出された予測値を正規化します。 ・Numeraiがもつ特徴量に対して中和をします。 ・中和された予測値とターゲットとのスピアマン順位相関を計算します。
1
def calculate_fnc(sub, targets, features):
2
"""
3
Args:
4
sub (pd.Series)
5
targets (pd.Series)
6
features (pd.DataFrame)
7
"""
8
9
# Normalize submission
10
sub = (sub.rank(method="first").values - 0.5) / len(sub)
11
12
# Neutralize submission to features
13
f = features.values
14
sub -= f.dot(np.linalg.pinv(f).dot(sub))
15
sub /= sub.std()
16
17
sub = pd.Series(np.squeeze(sub)) # Convert np.ndarray to pd.Series
18
19
# FNC: Spearman rank-order correlation of neutralized submission to target
20
fnc = np.corrcoef(sub.rank(pct=True, method="first"), targets)[0, 1]
21
22
return fnc
Copied!

Discussion

より詳しいFNCの計算についてはこちらをご覧ください。
Last modified 5mo ago