LoginSignup
2
4

More than 1 year has passed since last update.

こんにちは、アルファアーキテクトでVPoEをやっております胡 恩召(Ethan Hu)です。

先日書いた記事「機械学習の基礎 ①:モデル評価指標」の続き、機械学習の前段階の「特徴量エンジニアリング」をご紹介いたします。

特徴抽出

機械学習のモデルは、直接生データから学習出来ず、生データからいろいろな前処理をして、モデルが学習出来、フォーマットを変換した後データは、特徴データです。

仮で下記のデータがあります。これからデータの処理方法をご紹介します。

ID 性別 出身地 年齢 身長(cm) 体重(kg)
1 男性 東京都 25 165 55
2 女性 神奈川県 29 173 60
3 女性 千葉県 31 158 49
4 男性 大阪府 48 181 73
5 不明 埼玉県 18 177 67
... ... ... ... ... ...

数値データ処理

上記のデータの中で、数値特徴は、年齢と身長と体重です。

区切り

年齢の処理は、5歳刻みまた10歳刻みで区切り出来ます。
10歳刻み場合、処理後「年齢」データが下記です。

ID 年齢(元) 年齢(~20) 年齢(21~30) 年齢(31~40) 年齢(41~50) 年齢(51~60) 年齢(60~)
1 25 0 1 0 0 0 0
2 29 0 1 0 0 0 0
3 31 0 0 1 0 0 0
4 48 0 0 0 1 0 0
5 18 1 0 0 0 0 0
... ... ... ... ... ... ... ...

変換

身長と体重の処理は、変換して出来ます。変更方法は、主に下記の3種類があります。

  • Mean Normalization
x^{new} = \frac{x - mean(x)}{max(x) - min(x)}
  • Min-Max Normalization
x^{new} = \frac{x - min(x)}{max(x) - min(x)}
  • Standardization / Z-Score Normalization

標準化処理

x^{new} = \frac{x - mean(x)}{σ(x)}

標準差計算式:

σ(x) = \frac{1}{N} \cdot \sum_{i=1}^{N}(x_i - mean(x))^2

カテゴリーデータ処理

Label encoding

カテゴリーのテキスト値を数字に変換する。出身地の処理は、使えます。

出身地(都道府県名) Label 数字
北海道 1
... ...
埼玉県 11
千葉県 12
東京都 13
... ...
沖縄県 47

Label化した

ID 出身地(元) 出身地(数字)
1 東京都 13
2 神奈川県 14
3 千葉県 12
4 大阪府 27
5 埼玉県 11
... ... ...

One-hot encoding

性別と出身地の処理は、One-hot encodingで出来ます。

ID 性別(元) 性別(男性) 性別(女性) 性別(不明)
1 男性 1 0 0
2 女性 0 1 0
3 女性 0 1 0
4 男性 1 0 0
5 不明 0 0 1
... ... ... ... ...

Hash encoding

Hash化処理は、One-hot encodingと似ています。One-hot encodingとの違いは、One-hot encodingは、種類が多すぎな特徴(ドメイン、国など)の場合、処理後の列数(特徴数)も多すぎてしまい、超スパースデータセットになります。Hash化処理をすれば、処理後の列数(特徴数)が減ります。

特徴選択

特徴量エンジニアリング(Feature Engineering)は、機械学習のモデルにおいて重要な工程です。良い特徴量を見つけられれば、同じモデルでも効果が違います。これからよく使う特徴選択手法をご紹介します。

Pearson相関係数

Pearson相関係数は、変数 $X$ と $Y$ の線形相関関係を計算出来ます。

Pearson相関係数の計算式:

ρ_{X,Y} = \frac{con(X,Y)}{σ_X \cdot σ_Y} = \frac{E[(X - μ_X)(Y - μ_Y)]}{σ_X \cdot σ_Y}

サンプルのPearson相関係数の計算式:

r = \frac{\sum_{i=1}^{n}(X_i - \overline{\text{X}})(Y_i - \overline{\text{Y}})}{\sqrt(\sum_{i=1}^{n}(X_i - \overline{\text{X}})^2) \cdot \sqrt(\sum_{i=1}^{n}(Y_i - \overline{\text{Y}})^2)}

Pearsonカイ二乗検定

カイ二乗統計量が大きいほど変数間の相関関係が高いです。
カイ二乗統計量の計算式:

χ^2 = \sum_{i=1}^{r}\sum_{j=1}^{c} \frac{(Q_{i,j} - E_{i,j})^2}{E_{i,j}^2} = N \cdot \sum_{i,j}p_ip_j(\frac{(Q_{i,j}/N) - p_ip_j}{p_ip_j})^2

$N$:合計サンプル数
$Q_i$:類別$i$のサンプル数

Fisherスコア

分類のタスクで、良い特徴は、同じ類別の値の差が少なくて、異なる類別の値の差が大きいです。その評価手法は、Fisherスコアで出来ます。Fisherスコアが大きいほど変数間の相関関係が高いです。

Fisherスコアの計算式:

S_i = \frac{\sum_{j=1}^{K} n_j(μ_{ij} - μ_i)^2}{\sum_{j=1}^{K} n_jρ_{ij}^2}

$μ_i$:特徴$i$の平均値

$n_j$:類別$j$のサンプル数

$μ_{ij}$:類別$j$の中で、特徴$i$の平均値

$ρ_{ij}$:類別$j$の中で、特徴$i$の分散(variance)

Kullback–Leibler情報量

Kullback–Leibler情報量は、確率論と情報理論における2つの確率分布の差異を計る尺度である。Kullback–Leibler情報量が大きいほど変数間の相関関係が高いです。

Kullback–Leibler情報量の計算式:

I(X, Y) = \sum_{y \in Y}^{}\sum_{x \in X}^{} p(x,y) \cdot log(\frac{p(x,y)}{p(x)\cdotp(y)}) = D_{KL}(p(x,y)||p(x)\cdotp(y))

まとめ

特徴量エンジニアリング作業は、とても重要な作業です。質が高い学習データを作れば、より良いモデルを構築出来ます。

アルファアーキテクトは現在IPOを目指しています。『VeleT』の発展を加速させるため、 現在インフラエンジニアバックエンドエンジニアテックリードなどを積極的に募集しています。動画広告サービス『VeleT』の開発を一緒に推進してくれる方、是非応募をお待ちしています!

参照

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4