前後変化のある2変数の次元削減

機械学習の前処理を仕事上よくしている者です。
前後変化のある特徴量(月間利用金額/月間利用回数など)を使った機械学習をさせる際の特徴量エンジニアリング手法を紹介します。

【背景】
変化前後の各2変数をそのまま入れると、「変数A(前)→変数A(後)」「変数B(前)→変数B(後)」といった関連付けでなく「変数A(前)→変数B(前)」「変数B(前)→変数A(後)」といった関連付けで変数を解釈するようなモデリングをされてしまう可能性がある。
そのため、変化前後の2変数を1つの特徴量にエンコーディングすることで誤った解釈のないモデリングを狙いたい。
ただ、2変数を1次元に圧縮するにあたって、単純な計算ではこれらような問題点が発生する。
・(変化後)-(変化前)のような差分を計算すると、「700-200」と「1500-1000」のような場合、同じ評価値になってしまう(単位の大きさが評価できない)
・(変化後)/(変化前)のような変化率を計算すると、「200/100」と「300/150」のような場合、同じ評価値になってしまう(変化の大きさが評価できない)
このことから「単位の大きさ」と「変化の大きさ」2つの情報を損失せず1つの値として評価できるような定式化をしたい。

【定式化】
{(変化後)-(変化前)} * √{(変化後)*(変化前)}

【導入例】

【備考】
今回は量的変数の事例を上げましたが、質的変数の場合は単純に(変化前)と(変化後)を結合すればよいかと思います。

この記事が気に入ったらサポートをしてみませんか?