TableauとRでIRISデータをクラスタ分析

はじめに

今回は、いきなり中上級のレッスンです。このサイトではPython、を使って、「稼げる」データサイエンティストを育成することが目標です。いずれも安くて(Talbeau以外は無料)スグレモノのツールですが、まずはデータ解析の基本を抑えることが大切です。「統計」のカテゴリに基本的な記事を執筆しているのですが、ある生徒さんから「Rを使った事例も紹介してほしい!」という要望を受けたので、緊急投稿としてこのレッスンを執筆します。

Rについて

Rはフリーで入手可能な統計分析ソフトです。ソフトの入手、インストール方法は

 

統計分析フリーソフト「R」

 

を参考にしてください。このレッスンはすでに端末にRがインストールされていることを前提とします。

 

Rには教材としてirisの測定データが収納されています。Rコンソールから以下のコマンドを入力しましょう。Irisは花の「あやめ」のことです。

IRISのデータ

アイリスはこんな形の花です。3種類の花のデータを収納したライブラリが入手可能です。

 

https://rpubs.com/Indipapa/dendrogram02

 

 

150のデータセットが表示されました。Sepalはガク、Petalは花びらです。Speciesは樹別です。3種類のあやめのガクの長さ、幅、花びらの長さ花のデータです。

 

クラスタ分析を行う

 

これをクラスタ分析してみましょう。クラスタ分析とは、異なるものが混ざりあっている集団の中から互いに似たものを集めて集落(クラスター)を作り、対象を分類するという方法の総称です。

 

「対象」というのは人や製品や地域等を指し、アンケート結果の質問項目を分類する場合もあります。このクラスタ分析を用いると、標準化された手続に従って対象を分類することができます。マーケティングリサーチにおいてはキーワード分類、ブランドの分類や、消費者のセグメンテーションの分類に用いられます。

 

クラスタ分析には様々は方法がありますが、階層クラスタ分析と非階層クラスタ分析の二種類の方法があります。今回はこの2つのクラスタ分析を学びましょう。

 

階層クラスタ分析

 

データを分類するためにはデンドログラム(樹形図)を出力します。Rでやってみましょう!

 

1行目:5列目がirisの種別データなので、これ以外の列1、2、3、4のデータを取り出すします。

2行目:前の例と同じように、距離を求めます

3行目:距離からデンドログラムを作成します。

4行目:作図します、

5行目:3種類のアイリスがあるので、3つに分けます。

 

すると以下のようなデンドログラムが出力されます。

 

この時、各要素がどのグループに分類されているか出力することができます。

 

 

[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 3 2 3 2 3 2 3 3 3 3 2 3 2 3 3 2 3 2 3 2 2 2 2 2 2 2 3 3 3 3 2 3 2 2 2 3 3 3 2 3 3 3

[96] 3 3 2 3 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

 

非階層クラスタ分析

 

次に単回帰分析を用いた非階層クラスタ分析を行います。グループ化にはk-means法を採用してみます。これはクラスタの平均を用いて与えられたクラスタk個に分類する方法です。詳細は下記のリンクなどを参考にしてください。

 

k平均法

 

Rで実践してみましょう。

 

 

1行目:3つのグループに分けます

2行目:各々がどのぶグループに入るのかラベルを付けしてくれます。

 

[1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

[96] 1 1 1 1 1 3 1 3 3 3 3 1 3 3 3 3 3 3 1 1 3 3 3 3 1 3 1 3 1 3 3 1 1 3 3 3 3 3 1 3 3 3 3 1 3 3 3 1 3 3 3 1 3 3 1

 

 

プロットしてくれます。

 

分類の色分けですが、ここではRの初期値を使用しています。

グループ1:黒

グループ2:赤

グループ3:緑

 

Petal.Widthへの対角線の上と下は基本同じ図です。X軸とy軸が入れ替わっています。

 

ここからがこのレッスンの本番です。他の方のブログでは大概ここでおしまいですが、ここから疑問を持って突っ込んでいくのがデータサイエンティストです。

 

あやめのガクと長さが種別によってどういった相関関係があるのか?ということを調べるのが今回の分析の目標です。

 

今までは、4つの因子と3つのグループごとに散布図を作り、最小二乗法でR2乗値を求め、相関を調べるという木の遠くなる作業を行っていました。それを忍耐強くやるのが統計家でもあったのですが、、、、21世紀までデータ解析をやっていて素晴らしいツールに出会いました。Tableauです。上の作業を手計算でやっている頃は本当に数週間かかりました。けれどもTableauとRなら30分で終わってしまいます。ほんとに便利になりました。能書きはいいのでやりましょう。

 

Tableauで回帰分析

 

Rから入手したデータに、分類のデータを付け加えたものをCVS(あるいはエクセル)形式で保存します。

 

タブローを起動してcsvファイルを開けます。ファイル形式はCVSを選んでください。

ID,Sepal.width, Sepal.length, Petal.width, Petal.length,Species, dendlo, kmeansのデータが読み込まれました。Irisのシートをフィールドにドラッグしてください。

 

読み込まれた直後は、dendlo, kmeansはメジャーに分類されますが、こちらはディメンジョンに移してください。続いて、シート1をクリックします。列に、Sepal.width, Sepal.length, Petal.width, Petal.lengthをドラッグしてください。次に行にSepal.width, Sepal.length, Petal.width, Petal.lengthをドラッグします。すると以下のような散布図が表示されます。

ん?これは散布図ではないですね。どうしてでしょうか?あ、データが「合計」になっています。

「分析」―「メジャーの集計」のチェックを外してください。すると以下のように散布図が表示されます。これを種別に分けましょう。

ディメンジョンの「Species」をマークの色にドラッグします。すると種別ごとに自動に色分けされます。

 

次がタブローの便利な所。この散布図全部を分析します。ペインのアナリティクスの「傾向線」をグラフのところまで持ってきます。「傾向線の追加」の線形にドラッグします。

 

するとすべてのデータについて線形分析が実施されました。一瞬です。

 

それぞれの種別の因子ごとの相関係数を見てみましょう。図上いずれも正の相関が見て取れます。これを表にしてみました。

 

Sepal.length setosa        
  varsicolor        
  virgincia        
Sepal.width setosa 0.55      
  varsicolor 0.28      
  virgincia 0.21      
Petal.length setosa 0.07 0.03    
  varsicolor 0.57 0.31    
  virgincia 0.75 0.16    
Petal.width setosa 0.07 0.05 0.1  
  varsicolor 0.29 0.44 0.61  
  virgincia 0.08 0.29 0.1  
    Sepal.length Sepal.width Petal.length Petal.width

 

 

R2は1に近ければ相関性が強くなっていきます。この場合、ほとんどの組合わせはあまり相関が強くありません。一般的にR2が0.85以上で強い相関性があると言えます。ですので、VirginciaでSepal.lengthとPetal.widthの相関性がやや強いといえます。

 

次に階層クラスタ分析の結果を解析してみましょう。Tableauで散布図を作るところまでは同じです。次にディメンジョンの「dendlo」をドラッグしてマークの色にドラッグ。これでグループ毎に色分けされますが、最初のものと色を合わせたいので画面右側の「dendlo」をクリックして色を編集し、2を赤、3をオレンジに修正します。次にアナリティクスの傾向線を線形にドラッグアンドドロップ。これで出来上がり。

 

Sepal.length 1        
  2        
  3        
Sepal.width 1 0.55      
  2 0.14      
  3 0.2      
Petal.length 1 0.07 0.03    
  2 0.49 0.08    
  3 0.16 0.29    
Petal.width 1 0.07 0.05 11  
  2 0.08 0.14 0.45  
  3 0 0.15 0.47  
    Sepal.length Sepal.width Petal.length Petal.width

:

こちらでも全体的に正の相関が認められます。ですが全体的に弱い相関があるという結果になりました。

 

また、2つの図を比べてみるとクラスタが単独で存在している場合は、実際の花の品種とグループ分けはよくできていますが、複数のクラスタが混在しているところではグループ分けの状態が異なることがわかります。この部分は数式の定義によって変わってくるものと言えます。

 

最後に非階層クラスタ分析の結果を解析してみましょう。Tableauで散布図を作るところまでは同じです。次にディメンジョンの「kmeans」をドラッグしてマークの色にドラッグ。これでグループ毎に色分けされますが、最初のものと色を合わせたいので画面右側の「kmeans」をクリックして色を編集し、2を赤、3をオレンジに修正します。次にアナリティクスの傾向線を線形にドラッグアンドドロップ。これで出来上がり。

Sepal.length 1        
  2        
  3        
Sepal.width 1 0.55      
  2 21      
  3 0.03      
Petal.length 1 0.07 0.03    
  2 0.32 0.13    
  3 0.54 0.07    
Petal.width 1 0.08 0.05 0.03  
  2 0.06 0.1 0.64  
  3 0 0.18 0.1  
    Sepal.length Sepal.width Petal.length Petal.width

 

こちらでも全体的に正の相関が認められます。ですが全体的に弱い相関があるという結果になりました。

 

また、階層クラスタ分析と同じようにクラスタが単独で存在している場合は、実際の花の品種とグループ分けはよくできていますが、複数のクラスタが混在しているところではグループ分けの状態が異なることがわかります。Kmeans法はクラスタ数のとり方によっても結果が異なる事があるので、実際の分類と照合すると細かな部分までの再現性は難しいももの、実際のデータ解析の場では分類データが無いこともおおく、そういったケースでは階層化にしろ非階層化にしろ、クラスタ分析はかなり有用なツールであることがわかるかと思います。

 

補足として付け加えますが、非階層化クラスタ分析はTABLEAUのヴァージョン10以降では標準機能に織り込まれています。また、TableauとRは連携機能を有しているので、Tableau内でRを使った非階層化クラスタ分けも実現できます。

まとめ

長年解析をやっている人間にとっては、Tableau、Rは非常に有用なツールです。とても短い期間でデータサイエンティスト、データアーチストになることも夢ではありません。