クラスター分析2 GMMモデル

前回の記事には クラスター分析 の手法について話しました。今回の記事は、KNNでは分離が上手くいかない時に使用するクラスタリング手法として混合ガウス モデル (GMM)を紹介します。ただし計算時間はそれなりにかかります。 GMMはGaussian mixture modelsの略称です。GMM は”ソフト クラスタリング” 方式と見なすことができます。ソフトクラスタリング方式では、1つの点に対して複数のクラスに所属する確率を出す事ができます。 sklearn.mixture のパッケージでGMM の学習を行う例を以下に示します。混合正規分布の密度を計算し,可視化するスクリプトを作成しています. GMM による分類結果は図中の等高線で表現されます。 これは学習された混合正規分布の高さになります。例えば実際のデータでは、顧客分布で初見さんがやや多く、常連さんの山があるような場合に相当します。当然初見さんが多く、常連さんの山があるという見方ができます。曲線の色はそれぞれの等高線ごとに分けています.以下では二つの分布になることがわかります。 Python Codeの説明 #ライブラリの読み込み import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import LogNorm from sklearn import mixture #ランダムサンプル、2つの要素を作成する n_samples = 300 np.random.seed(0) # 地形データを作成 (20, 20) shifted_gaussian = np.random.randn(n_samples, 2) + np.array([20, 20]) # Gaussianデータを作成する C = np.array([[0., …

クラスター分析2 GMMモデル Read More »

AIプロジェクトを成功に導く方法 ―失敗例から学ぶ―

AI(人工知能)ブームが巻き起こりあらゆる業種の企業がAIの活用を検討するようになっています。AIは、次世代のビジネスの成長エンジンとして注目を集めています。だがその裏には多くの失敗が隠れています。うまく導入できない事例にも遭遇することがあります。この記事はAI導入をしていくのにあたっての失敗の原因・AI実装を成功に導くステップを解説していきます。 AI導入に失敗する代表的な6つ理由 1) 科学的なプロジェクト 素晴らしい技術より、ビジネスへどう影響を及ぼすかが大切です。AIプロジェクトを始めるのにあたって会社のゴール、売り上げに影響があるかと考えられないといけません。データ分析から始めても、影響を評価する事を考える必要があります。 2)共有不足 プロジェクト始まる時、プロジェクトメンバー全体が具体的な目的・目標・役割分担が必要です。理想の結果はどのようなものかといったことを、事前にきちんと考えておく必要があります。分析プロジェクトは大きければ大きいほど、皆の目標が見失いがちになります。そのため各自の役割、可視化・データ加工・分析フェーズ・データベース・実装・運用 実はそれなり以上に役割があります。 3)プロジェクトのポートフォリオを作成する AIプログラムを開始する際の次のステップは、ニーズと能力を体系的に評価し、次にプロジェクトの優先順位付けされたポートフォリオを開発することです。 4)新人のデータサイエンティストだった 実際のところ、AIは何が得意で、何ができないことを理解することが必要です。AI経験がないチームメンバーはこの判断能力が足らないですので、一つのよくある失敗のパターンになります。極端な話、モデルの精度がよくてもモデルだけ納品されても上手くいかないケースは往々にしてあります。 5)複雑なプロジェクトから始めパイロットモデルを作る 最初のAIプロジェクトが失敗すると、次のプロジェクトの立案することが結構難しくなります。リスクを減らすために、最初のプロジェクトは短い時間、分りやすいコールのプロジェクトはお勧めです。例えば可視化フェーズから始めしっかりデータ分析の価値を説明していく事が必要です。小さくパイロットで始め、大きくしていくがおすすめです。 6)技術のスコープ AIプロジェクトに運用する前に、技術の強みと制限を理解することが必要です。ルールベースのロボットは、自分の仕事の仕方が理解やすいですが、学習も改善が難しいです。一方、ディープ・ラーニングは大量のラベル付きデータから学習するのには適していますが、モデルの作成方法を理解することはほとんど不可能です。最近ハーバードビジネスレビュー(HBR)から「AIがあなたの会社のために3つのできること」を解決するための最新の調査をまとめたものが出ており、ここに代表的なものを紹介します。 引用元:  Artificial Intelligence for the Real World  https://hbr.org/2018/01/artificial-intelligence-for-the-real-world HBRがAIのプロジェクトをやったことがある250人に対して調査をしました。3/4の人はAIが3年以内に大幅に変革すると考えています。しかし、多くの企業で152/250≒約60%のプロジェクトが、ほとんどのプロジェクトが成功する可能性が低いと考えられています。 この記事では、利用されているAIを目的毎に分類し、3種類に考えています。 3 種類のAI 重要なのは技術ベースではなくビジネス機能に関してAIの種類を分けて考えています。 AIはビジネスプロセスの自動化 (Process Automation) データ分析による洞察力の獲得 (Cognitive Insight) 顧客や従業員との関わり支援 (Cognitive Engagement) 調査の結果から、152件のAIプロジェクトの内訳 1)Process Automation(プロセス自動化) 最も割合が大きいプロジェクトは、ロボットプロセス自動化(RPA)技術を使用して、デジタルおよびタスク(通常はバックオフィスの管理および財務活動)の自動化でした。RPAは最も安価で簡単に実装でき、通常は迅速かつ高い投資利益率をもたらします。 ただ、RPAには、定型事務作業を自動化するものです。機械学習等で高度な知的処理を自動化するものはデータサイエンティストが必要です。 難しい作業の例:● メールとコールセンターシステムから記録システムにデータを転送する。● 紛失したクレジットカードやATMカードを置き換える、複数のシステムにアクセスしてレコードを更新し、顧客とのコミュニケーションを処理する● 自然言語処理を使用して、法的文書および契約文書を抽出する 2)Cognitive Insight(認知洞察) 調査の2番目のプロジェクト(37%)は、膨大な量のデータのパターンを検出し、その意味を解釈するアルゴリズムを使用しています。 例えばキャンペーン施策を考えていく際に、〇〇地方、男性、年齢は××の人は申込が多いというような知見を得る際に行います。これらの機械学習の利用は、次の目的に使用されています。● 特定の顧客が購入する可能性が高いものを予測する。● リアルタイムで信用詐欺を特定し、保険金詐欺を検出する。● 自動車やその他の製造された製品の安全性や品質の問題を特定するために保証データを分析する。● デジタル広告のパーソナライズされたターゲティングを自動化する。 3)Cognitive engagement(認知エンゲージメント) 最初のAIプロジェクトが失敗すると、次のプロジェクトの立案することが結構難しくなります。リスクを減らすために、最初のプロジェクトは短い時間、分りやすいコールのプロジェクトはお勧めです。例えば可視化フェーズから始めしっかりデータ分析の価値を説明していく事が必要です。小さくパイロットで始め、大きくしていくがおすすめです。 自然言語処理のチャットボット、インテリジェントエージェント、機械学習を使用して従業員や顧客を関与させるプロジェクトは全体の16%を占めています。下記のような目的に使用されています。 自然言語でのパスワード要求からテクニカルサポートへの問題まで幅広く拡大している問題に対処する24時間年中無休のカスタマーサービスを提供するインテリジェントエージェント。 IT、従業員給付、人事方針などのトピックに関する社員の質問に答えるための内部サイト。 小売業者のパーソナライズ、エンゲージメント、セールスを向上させる製品とサービスの推奨システム   …

AIプロジェクトを成功に導く方法 ―失敗例から学ぶ― Read More »

クラスター分析

クラスター分析とは データのグループ化を含む機械学習技術になる。クラスターとは「集団」「群れ」を意味する英語で、その名の通り、データ全体をいくつかの集団(グループ)に分類する分析手法である。分類にあたっては、サンプル同士がお互いに「似ているか」または「似ていないか」を基準に分ける事ができる。この類似度・非類似度をもとにしたグループ分けの考え方の違いによって、多数のバリエーションが存在する。以下はクラスター分析の代表的な手法の「階層的手法」と「非階層的手法」について説明する。クラスター分析は多様な産業に使われる手法で、例えば下記のような使い方がある。 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での簡単なプログラムでの実行と他の言語との比較である。