クラスター分析

クラスター分析とは データのグループ化を含む機械学習技術になる。クラスターとは「集団」「群れ」を意味する英語で、その名の通り、データ全体をいくつかの集団(グループ)に分類する分析手法である。分類にあたっては、サンプル同士がお互いに「似ているか」または「似ていないか」を基準に分ける事ができる。この類似度・非類似度をもとにしたグループ分けの考え方の違いによって、多数のバリエーションが存在する。以下はクラスター分析の代表的な手法の「階層的手法」と「非階層的手法」について説明する。クラスター分析は多様な産業に使われる手法で、例えば下記のような使い方がある。 One to Oneマーケティングクラスター毎に求められる情報やアクションを予測し、ポジショニング確認を目的としたブランドの分類や、クラスターに応じておすすめ情報や配信キャンペーンに変化を付けるなど、最適なアプローチ戦略に役立することに用いられる。 小売小売でも商圏分析・価格弾力性分析・顧客分析・売り上げ予測といった様々な分析方法がある。その中でも顧客分析で、顧客を分類する事によってキャンペーン施策に繋げて、売り上げ増加を行う分析方法のときにクラスター分析が活躍する。例えば顧客の来店分析を以下のようにする事でクラスター分析を用いる。以下のグラフは、ある店の会員カードの使用回数である。   来店キャンペーン等で、初回は割引クーポン配布しており、利用で増えるがその後中々利用してもらえないのがネックであった。平均利用回数は、約4.2回のため5回利用の壁を突破するために5回利用した人に何か更にクーポンを渡そうか考えた。しかしよく上のグラフを見て欲しい。初回のキャンペーンで作ってそのままの人が多く、またヘビーユーザー層もおり、微妙に中間で使う人達がいるといった状態になっている。こういった層を上手くクラスタリングしてくれるのがクラスター分析である。例えば以下になる。 このクラスター別に、最適な販促を行っていく事が売り上げに繋がった。平均回数は分かりやすいが、個別事情といったものまで分析に取り入れられないのでデータ分布を確認し、分析をする事で最適なキャンペーン施策を立案する事が可能になった。 2種類のクラスター分析 階層的手法全てのデータ間の類似度(または非類似度)を計算した後、ある基準で似たもの同士を併合していく方法です。デンドログラム型(図1)の出力になるのが特徴になります。デンドログラムの縦軸は距離となっており、グループが結合した距離のところで線分が結合するようになっています。 図1:デンドログラム型   非階層的手法全体をあらかじめ決めておいたクラスター数に分割していく方法です。サンプル数が大きいビッグデータを分析するときに適しています。ただし、あらかじめいくつのクラスターに分けるかは、分析者が決める必要があり、最適クラスター数を自動的には計算する方法は確立されていません。代表的な手法としてk平均法(K-Means法)/Two-step法があります。情報量を用いて、最適なクラスター数に調整する事もできます。 図2:クラスター分析(非階層的手法)   Pythonでクラスター分析は、以下のように行う。 <pre><code><? $str = <<<‘EOD’import pandas as pdfrom sklearn import datasetsfrom sklearn.cluster import KMeansfrom matplotlib import pyplot as pltiris = datasets.load_iris()df = pd.DataFrame(iris.data, columns=iris.feature_names)result = KMeans(n_clusters=3).fit_predict(df[[‘sepal length (cm)’,’sepal width (cm)’, ‘petal length (cm)’,’petal width (cm)’]])</code></pre>   また数理的に最適だと思われる最適な数は以下のようにElbow plotを用いる事ができる。 <pre><code>distorsions …

クラスター分析 Read More »

なぜpythonは急に人気になっているのか

  Python(パイソン)はデータ分析や機械学習の分野で広く使われている。機械学習や深層学習における応用が進み、AIの実用化が研究されるなかでさらに需要が高まると見られる。この記事はPython言語の特徴から人気の理由まで徹底解説する。 実際にPythonはどのくらい人気かあるか確認していく。 IEEE Spectrumのインタラクティブ記事から人気プログラミング言語のランキング(図1)から、 Pythonは一位であり、詳細でみると、PythonはWeb開発やEnterpriseの製品がメインである。 近年データ解析やAIの分野で広く使われていることから、今後も需要が大きくなると予想される。 図1Interactive: The Top Programming Languages https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2017 pythonとは Pythonは、1991年にオランダ人のグイド・ヴァン・ロッサム氏によって開発されたプログラミング言語である。古くからある言語であり、Javaよりも古い。汎用のプログラミング言語である、読みやすく、また書きやすく作業性とコードの信頼性を高めることを重視してデザインされた言語である。さまざまな開発ニーズを満たすために使用されているため、Pythonを1つの仕事で使い始めると、関係のない業界にあっても簡単に別の仕事に利用することができる。システム運用、Web開発、サーバー管理ツール、機械学習、人工知能(AI)、業務アプリケーションなどに広い分野で使われている。 Pythonの特徴としては以下のようなものが挙げられます。 シンプルな構文 Python の構文は、よく使われているプログラム言語の中では比較的シンプルである。誰が書いてもコードが同じようになる言語を意識して作られている。他人の書いたコードも比較的読みやすくなる。 インデントの利用 インデントとは、プログラムの作成における入れ子構造である。文章のような頭の位置を変化させることで意味的な固まりを示される。プログラムの制御の流れが視覚的に分かりやすい。 オブジェクト指向 Pythonはオブジェクト指向言語のため、継承、ポリモーフィズム、カプセル化を最大限に活用して、見通しが良く、保守性が高いプログラムを記述することができる。 素晴らしいライブラリ Pythonにはたくさんの標準または外部ライブラリがあります。ライブラリを利用すると、開発時間を節約し、最初の開発サイクルを短縮するのに役立ちます。 PythonにはNumPyやSciPyといった学術計算用のWebサイト開発用のDjangoまで、ライブラリの優れた選択肢がある。 活発で支持的なコミュニティ ドキュメンテーションと開発者のサポートが不足しているプログラミング言語はうまくいかない。 Pythonには多くのドキュメント、ガイド、チュートリアルなどがある。 さらに、開発者コミュニティは信じられないほど活発です。それは、誰かが助けやサポートを必要とするときはいつでも、タイムリーに解決できる。 大企業のスポンサー 最後に大事なことですが、これは、プログラミング言語に企業のスポンサーがいる大きな時間を助ける。 C#にはMicrosoft、JavaにはSun、PHPはFacebookで使用されています。 Googleは2006年にPythonを採用して以来、多くのプラットフォームやアプリケーションでこれを使用してきた。GoogleではPythonを扱うための膨大な数のガイドとチュートリアルを作成しました。 まとめ 本稿では、pythonの特徴、人気の理由ついて解説しました。pythonは汎用のプログラミング言語で、作業性と信頼性であり、需要が大きくなると予想されている。webアプリの開発はもちろん、最近では人工知能の開発で注目を集めている。また、コミュニティと大企業のスポンサーがあるので、タイムリーに問題が解決できるようです。AIの急速な成長、第4次産業革命を推進している時代にpythonは一つの力になるでしょう。 https://ja.wikipedia.org/wiki/Python https://www.kdnuggets.com/2017/07/6-reasons-python-suddenly-super-popular.html 実際に以下はPythonでの簡単なプログラムでの実行と他の言語との比較である。