見出し画像

【ExcelVBA】機械学習 優良顧客スコアリング ~住所データから生成する特徴量について~

こんにちは。最後に記事を書いてから約2年・・・
だいぶ期間が空いてしまいましたが、スキル・経験ともにパワーアップして帰ってきた、と信じたいpikiです。

入社してから早7年、ようやく業務で機械学習を活用した施策立案をする機会を頂き、日々データやプログラムとにらめっこしています。
とりわけ力を入れているのがOne to Oneマーケティングであり、お客様一人ひとりにあったレコメンドや販促を行うための仕組みづくりを行っています。

One to Oneの施策を行うためには、顧客データ等様々な情報からより解像度の高いお客様像を作り上げていく必要がありますが、あくまで企業がもつ顧客データは業務やその管理に必要なものであることが多く、「機械学習」で扱いにくいデータ構造となっています。

企業が持つ顧客データイメージ

私自身、業務の中でこの管理のための顧客データをいかにして機械学習で扱いやすい形に変換させるか、その方法に頭を悩ませることが多いです。
この記事では、そうした顧客データをうまく変換し、機械学習で扱いやすいデータ形式にするテクニックおよびVBAコードをご紹介します。

住所情報から生活スタイルを導く

顧客データには、年齢や性別、住所など様々な特徴量があります。
例えば、化粧品を扱うEC企業による顧客データを使ったOne to Oneマーケティング施策を考えます。

この化粧品企業では、
・若年層向けコスパ重視の商品
・一つで五役、機能性に富んだ30~40代向けスタンダード価格の商品
・厳選美容成分配合の中高年層向けプレミアム価格帯の商品
といった様々な年代に向けて基礎化粧品を扱っているとします。

この企業が、利益率の高いプレミアム価格帯の商品をもっと売っていこうという方針を取る場合、どのようなアプローチをすべきでしょうか。

商品のコンセプト通り、美容に悩みをもつ中高年齢層の女性にアプローチをするのが定石ですが、単に年齢や性別だけを切り口にするのではOne to Oneな施策であるとはいいがたいです。
実現場では、顧客データに加え、EC会員登録時のアンケートデータや過去の購買履歴なども使って、より顧客像の解像度を上げていくのですが、今回は実は有力な情報が眠っているものの、取り扱いの難しさから有効活用されていない「住所」を使って、解像度を上げるテクニックを紹介します。

住所からどんなことが分かるのか

住所からは、顧客の生活スタイル推測に役立ちます。
例えば、東京都かつマンションの10階に住んでいる50代の女性であれば、
おおよそ裕福な暮らしをしているであろうことが分かりますし、先ほどの化粧品企業であればプレミアム価格帯商品のターゲットとなる可能性があると思われます。
また、広島県戸建てに住んでいる女性50代であれば、もちろんプレミアム価格帯のターゲットともなりえますが、スタンダード価格帯商品を好まれる可能性のほうが高いかもしれません。
もちろん、実購買データを見ないことには偏見ともなりうるものの見方ですが、あくまでここで言いたいことは住所情報が加わることで、その顧客の生活スタイルがイメージしやすくなるということです。

「建物名」から特徴量を生成する

ECサイトの住所フォームは、「都道府県市区町村」、「町域番地」、「建物名」の三つに分かれることが多いのですが、この「建物名」から特徴量を導くコツを伝授します。

①建物名から建物構造を導く

例えば、「コーポ」や「ハイツ」のような名称であれば木造アパートメント住宅である可能性が高く、「県営」や「区営」などと入ればいわゆる公営住宅である可能性が高いです。また特にこの欄に記載がなければ「一戸建て」住宅である可能性が高いでしょう。
このように「建物名」からある程度そのお客様がどのような住居に住んでいるのかが推測できます。うまくラベリングしてあげることで、お客様にあった価格帯、使用用途の商品をレコメンドできる確率が高まります。

②部屋番号から階数を導く

「301」や「1201」といった部屋番号からはその居住スペースのフロア数が導けます。例えば階数が高いお客様であれば生活水準も高い可能性があります。また、年齢と掛け合わせた変数を作ることで、さらにお客様の解像度が高まることが期待できます。
階数は、間隔尺度として変数化することもできますし、「●階以上なら1」といったダミー変数としても扱うことが可能です。

建物名から「●階以上かどうか」を判定するVBAコード

特徴量を生成する際にPython等のコードを用いる方もいれば、Excelで加工を行う方もいるかと思います。
今回はサンプルコードとしてExcelVBA上で使用できるモジュールをご紹介いたします。
このモジュールで可能となるのは、建物名の欄から部屋番号を自動で抜き出し、階数を推測、特定の階数以上であれば「1」、そうでなければ「0」という判定になります。
これにより、お客様毎に住居のフロア数に応じたラベリングが可能となります。下記が3階より高いかどうかを判定した場合の結果です。


3階より高いなら「1」そうでない場合は「0」に変換


2番と7番のお客様が該当

VBAソースコード

下記のコードをマクロに入りつければそのまま使用できます。
カラム名、基準となる階数は適宜書き換えて使用してください。

ここから先は

3,878字

¥ 100

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