LoginSignup
11
4

More than 5 years have passed since last update.

Frequency Encodingとハーフィンダール・ハーシュマン・インデックス(HHI)

Last updated at Posted at 2019-03-24

概要

異常検知を勉強している中で、日本語解説の少ないEncoding手法が必要になったので自分なりにまとめておきます。

Frequency Encoding

Frequency Encodingとは、各カテゴリ変数値の出現確率でEncodingする方法です。
例えば下の表で考えると、カテゴリBは出現回数が2回、全体のレコード数が6回であることから、2/6=0.333....となります。

id カテゴリ 出現頻度 Frequency Encoding
0 A 3 0.500
1 A 3 0.500
2 A 3 0.500
3 B 2 0.333
4 B 2 0.333
5 C 1 0.167

使用例

Frequency Encodingの平均値を取ると、各カテゴリ変数の占有度合いが比較できそうな気がします。
以下のような表を考え、売れた商品のカテゴリをFrequency Encodingしてその平均値を比較してみます。

id 会社 カテゴリ 出現頻度 Frequency Encoding
0 A社 食品 5 0.833
1 A社 食品 5 0.833
2 A社 食品 5 0.833
3 A社 食品 5 0.833
4 A社 食品 5 0.833
5 A社 日用品 1 0.167
6 B社 食品 2 0.333
7 B社 食品 2 0.333
8 B社 家電 2 0.333
9 B社 家電 2 0.333
10 B社 2 0.333
11 B社 2 0.333

表を見た限り、A社の売れた商品カテゴリは偏っているように感じます。
この感覚を数値化できるのがFrequency Encodingの平均値です。
実際に計算してみると、A社の平均は0.722...、B社の平均は0.333...となり、数値によって差別化されています。

Frequency Encodingの平均値まとめ

値が大きいほどカテゴリ変数の偏りが大きくなります。最大値は全レコードが同じカテゴリの場合、すなわち1です。
反対に、値が小さいほどカテゴリ変数の偏りが小さくなります。最小値は全レコード(Nレコード)が異なるカテゴリの場合、すなわち1/Nです。

ハーフィンダール・ハーシュマン・インデックス(HHI)

ここまでFrequency Encodingの平均値というものを考えてきましたが、経済学の文脈ではハーフィンダール・ハーシュマン・インデックス(HHI)という数値が存在します。Wikipedia(https://ja.wikipedia.org/wiki/ハーフィンダール・ハーシュマン・インデックス) から引用すると、

ハーフィンダール・ハーシュマン・インデックス(Herfindahl-Hirschman Index, HHI)とは、ある産業の市場における企業の競争状態を表す指標の一つ。その産業に属する全ての企業の市場占有率の2乗和と定義される。HHIは独占状態においては 1(数値に%表示のものを用いるときには10000)となり、競争が広くいきわたるほど 0 に近づく。寡占度指数とも呼ばれる。

とあります。これはどこかで見たことある気がする...。
試しに先ほどの例を元にして、会社を産業に、カテゴリ変数を企業に、出現確率を占有率にそれぞれ読み替えてA社とB社のHHIを計算してみると
A社は$(\frac{5}{6})^2+(\frac{1}{6})^2=0.722...$、B社は$(\frac{2}{6})^2\times 3=0.333...$とまったく同じ値になりました。

証明は省略しますが、このようにFrequency Encodingの平均値と読み替え後のHHIは一致します。
私は経済学に明るくなかったため、指摘があるまでまったく知りませんでした。

最後に

Frequency Encodingは何かしらの予測モデルというより、異常検知向きなEncoding手法だと思っています。
参考になれば幸いです。

11
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
11
4