SPSS Modelerで自動車クラスタリングによるマーケット分析

様々な車のスペック情報をSPSS Modelerで分析して、クラスタリングによるマーケット分析を行ってみたいと思います。

データと完成版サンプルストリームは以下のzipファイルに入っています。
https://github.com/hkwd/200603AutodataAnalysis/archive/master.zip
データ：cars_data_j.csv
ストリーム：自動車スペッククラスタリング1.str

# 1. データ
UCI: Automobile Data Setを使います。
https://dataplatform.cloud.ibm.com/exchange/public/entry/view/9704374ab42cdd449b6112a0981dfbe1#
Dua, D. and Graff, C. (2019). UCI Machine Learning Repository [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.

元データは英語だったので、日本語に翻訳したデータcars_data_j.csvを準備しました。

キャンバスにドラッグアンドドロップしておいてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/6aa82057-fce1-67f4-9cef-94f3455e4237.png)

出力パレットからテーブルノードを選び、car_data_j.csvに接続し、テーブルノードを選択したうえで、選択内容を実行ボタンを押してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/a6640a57-cd51-b975-c264-fcd6b0c5a0d6.png)

まず、26のフィールドがあり、201車種の情報が入っています。
もともとが自動車保険のデータなので、リスクや損失などの情報が最初の2列にあります。
そのほか、メーカー名や燃料タイプ、エンジンの位置、などの車のスペック情報が続き、最後に都市燃費、高速道路燃費、価格があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/31955846-4527-25b7-94fd-2aa758a6414d.png)

201車種のデータをただ眺めていても、このデータの中にどんな車があるのかを理解することが困難です。クラスタリングはたくさんのデータの中から似たような傾向のデータを持つ数個のグループにまとめることができます。そうやってまとめることでデータの全体像を理解することを助けます。また、自社の製品ラインナップや似たような車種の競合との比較
今回はこれらの様々なスペックを持つ自動車をクラスタリングでグルーピングしてみたいと思います。

右上の赤い×ボタンで閉じてください。

# 2. クラスタの作成
まず、フィールド設定のパレットからデータ型ノードを選び、cars_data_j.csvにつなぎ、ダブルクリックでプロパティを開きます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/8845df13-6cad-2986-f6f6-27fabc593dc8.png)


値の読み込みボタンをクリックします。都市燃費のロールを対象としてください。設定ができたらOKボタンで閉じます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/363a4f42-7ffc-6b2d-fdac-9e10955eb7dc.png)


モデル作成パレットでセグメンテーションを選び、その中からK-Meansノードを選び、データ型ノードにつないで選択した状態で、選択内容を実行ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/cc5ea997-f39e-756c-4868-3e6a98d611b4.png)

黄色のナゲットが作成されますので、以下のように場所を少し動かして、これをダブルクリックして内容を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/62d2b7d5-e990-6ea3-20c7-833f5e07258c.png)

クラスター１から５までの5つのクラスターが作成されました。ビューをクラスターに変更して、「セルには相対分布を表示」をクリックし、各クラスターのグラフが少し見やすくなるように広げます。
どういうクラスターができたか、それぞれのクラスターの特徴をつかんでラベルを付けていきたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/4eefcc16-5905-274b-2e60-a1e3928fbdda.png)

クラスター2の燃料タイプをクリックしてください。右のビューにセルの分布が表示されます。すべてがDieselになっています。他のクラスターとはっきりと区別できますので、このクラスターのラベルを「ディーゼル」と入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/8ac5b693-ff6a-ce42-744d-fd5ad0d0250a.png)

相対分布でもクラスターの特徴は分かりますが、選択したクラスター間のみの比較を行う機能もあります。

クラスター2以外のクラスターを選択してください。
そうすると右のビューにクラスターの比較が表示されます。数値データは箱ひげ図で分布が表現され、カテゴリー値は最大カテゴリの件数が円のサイズで表現されます。

この結果を見るとクラスター3は2ドアのコンパクトカーが集まっているようです。このクラスターのラベルを「2ドアコンパクト」と入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/0f6ec351-5910-004b-c40c-980b9404aea3.png)

次にクラスター5に注目すると車両重量が大きく、全長も大きくなっています。このクラスターのラベルを「大型」と入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/c2b0c950-e281-16c6-92e1-48552c9c0717.png)

次にクラスター1に注目します。ボディスタイルのセルをクリックすると「オープンカー」はすべてこのクラスターに分類されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/4a367727-3191-5e1e-b3b8-73d0cb8e56a4.png)


またドア数のセルをクリックするとすべて「two」になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/b3e75d22-430d-2ffd-810b-ec2652758a11.png)

これらの傾向からクラスター１はスポーツカーということにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/76bb40ff-246d-0703-09ff-24406f1cf939.png)

最後に残ったクラスター4に注目します。ボディスタイルはワゴンやセダンが多く、価格は低く、燃費もまずまずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/caa59a8b-1d8e-5db7-4987-52831c815cfe.png)

これらの傾向からクラスター4はファミリーということにします。

このように201車種あったデータを5つの似た傾向にあるグループにまとめることができました。このようにまとめることでデータの全体像を要約して理解しやすくすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/97cb8310-542c-6fc6-91be-abe92e302b5a.png)

OKで閉じてください。

# 3. クラスタの分析１：燃費と価格
クラスターのラベルをデータにも反映します。
フィールド設定パレットからデータ分類ノードを選択し、黄色のナゲットに接続し、ダブルクリックでプロパティを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/d0d91b85-a789-ff7a-c120-a1831cd78c05.png)

データ分類フィールドに$KM-K-Meansを選びます。
新規フィールド名には「クラスター」と入力してください。
データ分類値の取得ボタンをクリックするとクラスター1から5が表示されますので、対応するスポーツカー、ディーゼル、2ドアコンパクト、ファミリー、大型と入力し、OKで閉じてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/92efc65a-8a13-6512-92f1-5b03f8d79a1f.png)

出力パレットからテーブルノードを選びクラスターノードのナゲットの後ろに接続して、選択内容を実行ボタンを押してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/e325bc5a-6bb8-82b7-583a-da9e7fc7e2bb.png)

スライドバーを一番右まで動かすと各車種に対応したクラスターのラベルが割り当てられています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/ea107dbc-1bea-595a-3871-bf671475230b.png)

確認ができたら赤い×ボタンで閉じてください。

例えばある顧客が車を購入する際に重視する基準が価格と都市燃費だとします。各クラスターがその基準に照らしてどういう傾向をもっているか見てみます。
グラフ作成パレットから散布図ノードを選びクラスターノードに接続し、ダブルクリックでプロパティを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/0432574f-cc47-a5a7-d945-371bd0d92c99.png)

Xフィールドに都市燃費、Yフィールドに価格、オーバーレイの色にクラスターを設定し、実行ボタンを押してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/581c8ca8-6ec9-b0bf-d501-c2a9d525430b.png)


各クラスターで傾向がはっきり分かれているのがわかります。価格が安くて都市燃費が安いクラスターは2ドアコンパクトやファミリーになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/5f41dd3b-332e-eba0-c1ee-b58f36ebb929.png)

確認ができたら赤い×ボタンで閉じてください。

グラフは保存不要なのでいいえで閉じます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/274e184d-3c16-8563-b8fa-d3e6e08f3826.png)

2ドアコンパクトに絞ってメーカーごとの比較をしたいと思います。
テーブルノードを選択して選択内容を実行ボタンを押してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/a874fd75-043b-fce9-57a8-3f8b127659cd.png)

右端までスクロールして2ドアコンパクトのセルを選び、生成メニューから条件抽出ノード("AND")を選びます。そして、赤い×ボタンで閉じてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/82881327-1dce-e341-5b04-31dc3eebb56c.png)

(生成)という名前の条件抽出ノードがキャンバスにつくれられていますので、これをダブルクリックでプロパティを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/3b570b14-b914-1ab7-eb54-6f5406c17437.png)

選択していた、2ドアコンパクトに絞り込む条件が自動生成されています。確認ができたらOKで閉じてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/3e7b4bb6-8e03-c713-e5eb-e738480051b5.png)

(生成)という名前の条件抽出ノードを先ほどの散布図との間にはさみ、散布図を選択して、ダブルクリックでプロパティを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/5169b8b7-e760-25b2-2ae2-0ed0186ff54c.png)

オーバーレイの形状にメーカーを設定し、実行ボタンを押してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/f661d77e-4421-29d6-d3d6-ae09d602e8d3.png)

2ドアコンパクトのみの散布図が表示されます。また、メーカーによって形を変えて表示しています。
これをみるとhondaは燃費や価格帯に広いバリエーションを持っているように見えます。
このように似た車種のグループ内で比較することで各メーカーのラインナップの傾向を読み取ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/ceb970a8-2be4-0986-d6f7-77699fc86805.png)

確認ができたら赤い×ボタンで閉じてください。

グラフは保存不要なのでいいえで閉じます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/d18c8115-ef07-cde7-3477-7e2e4355568c.png)

# 4. クラスタの分析2：メーカーの戦略比較
次は各メーカーがどの車種グループに力を入れているのかを確認してみます。

レコード設定パレットからレコード集計ノードを選び、クラスターノードに接続します。接続できたらダブルクリックでプロパティを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/1b6fcaeb-3184-5673-62cd-ec0ef5ddbdc1.png)

キーフィールドに利用可能なフィールドの設定から取得のボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/16d58e81-7722-21e5-94fe-ff47c660eaa5.png)

クラスターとメーカーを選び、OKで閉じてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/795fcced-e71b-2fae-073e-a88a55d69e8b.png)

キーフィールドにメーカーとクラスターが設定されたことを確認して、プレビューボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/61706d2b-5f4a-fea0-ed14-6544c7107c07.png)

各メーカーごとにどんなクラスターの車種を何台作っているかがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/4e159233-9d01-0fd3-bc0a-61aa49ace1d1.png)
確認ができたら、赤い×ボタンで閉じてください。

OKでレコード集計ノードのプロパティも閉じてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/9240e3f7-aeef-51f0-1692-7d3df03230ee.png)

今作ったレコード集計ノードを右クリックしてノードをコピーを行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/e5bfab3d-c4e3-0aa8-9266-cc649b2e9196.png)

空いているスペースで右クリックをして、貼付けをします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/0ca80c93-378b-96c8-02eb-4bbea1bd552e.png)

貼り付けられたレコード集計ノードをクラスターノードから接続し、ダブルクリックでプロパティを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/c5805c65-bbb2-e13c-1045-ed1025825b3f.png)

キーフィールドでクラスターを削除し、フィールドにレコード度数を含めるの欄に「総件数」と入力し、プレビューボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/dbd77f05-5248-516d-5a70-9b2d36640e26.png)

今度は各メーカーごとの件数が集計されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/6293c1d0-2e0f-c965-cc8a-0767d054637e.png)
確認ができたら、赤い×ボタンで閉じてください。

OKでレコード集計ノードのプロパティも閉じてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/e08ec20a-b5aa-332e-b549-5ec14584d005.png)


レコード設定パレットからレコード結合ノードを選択し、二つつくったレコード集計ノードを繋ぎます。そして、ダブルクリックでプロパティを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/abdb9bcc-9197-2982-2719-d5fbc38bc666.png)

レコード結合方法でキーを選び、キーの候補でメーカーを選びます。そしてOKで閉じてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/fb565c87-8747-0c77-9653-5a82c10c42fa.png)

フィールド設定パレットからフィールド作成ノードを選び、レコード結合ノードの後ろにつなぎます。そしてダブルクリックでプロパティを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/5cd7e404-884e-92c7-294c-e376d1573e7a.png)

派生フィールドに「クラスター比率」と入力し、電卓のボタンで式ビルダーを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/b997d01c-1cf4-28e3-a628-06623aa89ebf.png)

Record_Count / 総件数の入力をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/019700dd-0c12-d534-a16f-7e75fc451ca4.png)

プレビューボタンを押してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/456de8e5-d12b-8be1-49fe-85ec09c23ead.png)

各メーカーのクラスターごとの車種の比率が計算されました。
例えばalfa-romeoは100%がスポーツカーでスポーツカーに特化した戦略をとっていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/1749efde-722a-e023-40b3-f4180cc148fa.png)
確認ができたら、赤い×ボタンで閉じてください。

クラスター比率のノードをOKで閉じてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/88455b15-8265-800c-bc1e-6ba8ccb151cc.png)

グラフ作成パレットからグラフボードノードを選び、クラスター比率ノードの後ろに接続します。そしてダブルクリックでプロパティを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/3169b390-ea0d-a640-78d5-01be8d60bfde.png)

詳細タブを選び、視覚化タイプにヒートマップを選びます。そして列にメーカー、行にクラスター、色にクラスター比率を設定します。そして実行ボタンを押してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/8c0e8911-401b-0e38-66bb-42ac291daad1.png)

各社が力をいれているクラスターが比較できます。先ほどみたalfa-romeoは100%がスポーツカーでしたが、porscheやmercuryも同様です。
一方でmazda、nissan、toyota、volkswagenはファミリーを中心に全クラスターに展開をしています。そしてこの中ではvolkswagenはディーゼルにも力を入れています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/78202486-cf5d-823a-88de-87651869f096.png)

# 5. まとめ
このようにクラスタリングを行うことによって、201車種の個々のデータを見るだけではわからなかった、各社の戦略やマーケットの全体像が見えてきます。
ただし、このデータは市場のすべてのメーカーのすべての車種を網羅してはいませんので、あくまでもこのデータに限った分析例としてご理解いただければと思います。