PythonでHML分析
HML分析とは?
代表的な例としては、アクセスログ解析をする際に、
ヘビーユーザー・ミドルユーザー・ライトユーザーの3つのグループに分けることがある。
それぞれの頭文字をとってH(ヘビー)M(ミドル)L(ライト)分析と言う。
例えば、ユーザーのPV数で分けたり、課金額、CV数などを使って3分割することが多い。
ウェブサイト系に限った話ではなく、多種多様な業界に用いることができる分析手法である。
それではPythonでHML分析を実行する際の手順を説明していく。
手順①:HMLに分類するデータの準備
今回は、対象データが無いのでランダムに数値を生成し、 それをHML分析の際の元データとする。
import numpy as np # 0~100の間の整数を100個生成する nums = np.random.randint(0, 100, 100)
念のため、このnumsにはどのような値が入っているのかというと、
array([93, 80, 25, 4, 62, 23, 40, 4, 27, 0, 30, 34, 62, 81, 65, 19, 37, 43, 23, 1, 50, 72, 34, 59, 89, 74, 4, 2, 69, 20, 5, 72, 98, 49, 63, 20, 72, 23, 82, 22, 29, 4, 45, 28, 56, 41, 42, 19, 97, 99, 24, 96, 45, 30, 95, 30, 42, 91, 4, 46, 92, 33, 35, 13, 58, 9, 20, 44, 98, 48, 26, 54, 62, 10, 14, 11, 60, 36, 70, 11, 78, 83, 3, 85, 90, 57, 51, 1, 1, 29, 13, 63, 74, 52, 83, 47, 61, 85, 32, 5])
こんなデータが入っております。
手順②:データの前処理
HMLの3つに分割する際には、Kmeansという機械学習手法を利用する。
現在のデータの形のまま計算させようとしてもできないので、計算できるように前処理をしよう。
- モデルに投入するデータイメージ
[[1],[2],[3]]
このような形に変換したいので、以下のコードを実行します。
import pandas as pd df = pd.Series(sorted(nums)).reset_index() df.columns = ['index', 'num'] modeling_data = df[['num']]
手順③:KMeansを使って3つに分割
HMLの3つに分割したいデータの前処理が完了しました。
それでは実際にモデルに投入してみましょう。
from sklearn.cluster import KMeans km = KMeans(n_clusters=3) km.fit(modeling_data) df.loc[:, 'cluster'] = km.labels_
cluster列に分割した結果が格納されました。
データフレームの一部を出力してみましょう。
index | num | cluster |
---|---|---|
0 | 1 | 0 |
1 | 2 | 0 |
2 | 2 | 0 |
3 | 5 | 0 |
4 | 7 | 0 |
手順④:グラフに出力する
clusterの値ごとに色を変えて出力してみました。
numの値でハイ・ミドル・ロウの3つに別れましたね。
このグラフを描画するスクリプトは以下の通りです。
import matplotlib.pyplot as plt fig, ax = plt.subplots() colors = cm.Accent.colors for i in range(3): target = df[df['cluster'] == i] ax.scatter(x=target['index'], y=target['num'], c=colors[i]) ax.set_title('HML Graph') ax.set_xlabel('index') ax.set_ylabel('num') plt.savefig('hml_graph.png') plt.show()
仕事で機械学習を使うなら
今回取り上げたHML分析以外にも仕事で機械学習を用いる方には、
こちらの本がオススメになります。
- 作者: 有賀康顕,中山心太,西林孝
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/01/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
1冊手元にあって損は無い本だと思うので、
ぜひ読んでみると良いと思います。
今回参考させていただいたサイトはこちらです いつものHML分析 - ひよこ、通勤中。