統計解析

時系列データとは?

時系列データとは、ある一時期の状態を表すような、時間的な変化を、連続的に観測して得られた値の系列のことです。例えば、毎日の売上データ、毎時間の気温、月ごとの来客数などです。時系列データの利用は、気候パターンの解析、交通状況の監視、人口統計学的傾向の調査データの事です。   一口に時間に関するデータといっても複数のタイプがあります。   ・点過程データ 間隔が一定ではないようなデータのタイプです。点過程データの目的は、事象が発生したという事を分析することです。地震・故障のタイミングや来客のデータに使われます。数量よりも発生するかどうかを分析のターゲットにしています。   ・時系列データ 時間的な変化を、連続的に得られたデータでそれぞれを直線で結んだものになります。通常時間のデータといえば、こちらを想定しています。   ・キューデータ 点過程データの一種になります。コールセンターの着信数・応答数、トランザクションログ、ATMの利用等の分析の時のデータタイプになります。   この中でも時系列データは「過去」と「現在」、そして「未来」があり、これらがつながっているデータであります。前の値によって、前の前の値が、現在の値に影響をしていることを「自己相関」と言います。データを時系列に並べることによって、過去の様子を分析することも可能ですし、これから先の事象について予測することが可能になります。しかし点過程データやキューデータでは過去に大きく依存しているかというとそうではありません。地震が起こるかどうかが前の起こったデータ見るのが難しいからです。また故障のタイミングも他の要因に起因している事も多く、要因から分析する事も多いからです。 では、時系列データを作成し簡単に分析してみます。   Python   import pandas as pd import numpy as np import matplotlib.pylab as plt   dateparse = lambda dates: pd.datetime.strptime(dates, ‘%Y-%m’) data = pd.read_csv(‘AirPassengers.csv’, parse_dates=[‘Month’], index_col=’Month’,date_parser=dateparse)     print (data.head()) plt.plot(data)                Month  …

時系列データとは? Read More »

【ROC曲線とAUC】機械学習の評価指標

機械学習のモデル作成後にテストデータを使って「本当に良いモデルなのか?」という評価を必ず行う必要があります。今回の記事は分類問題に対して評価指標のROC曲線とAUCについて説明します。他にも評価指標は色々とあるので、随時記事にしていく予定です。 AUCとは AUCとは、二値分類器の評価指標として Area Under the ROC Curve の略です。サンプルに対して 0から1の範囲でスコア(確率)を与える二値分類器 の精度を評価することを考えています。予測スコアでサンプルを(降順)ソートしたときに、真値のTrue となるサンプルが 真値のFalse となるサンプルより上位にきているか』ということを測っています。つまり、ラベル 1 のサンプルに正しく高スコアを与える予測器であるか を見ています。   縦軸がモデルの予測で、横軸が正解データになります。 各象限の説明を簡単にすると、   True Positive(TP): 正解データ正であるものを、正しく正と予測できた数 False Positive(FP):正解データ負であるものを、間違って正と予測した数 Flase Negative(FN):正解データ正であるものを、間違って負と予測した数 True Negative(TN):正解データ負であるものを、正しく負と予測できた数   ROC曲線をプロット 先程の偽陽性率と真陽性率の表をプロットすると以下のようなグラフが出来上がります。このように、閾値を変化させたときの偽陽性率と真陽性率による各点を結んだものがROC曲線です。     閾値を移動させながらPositive / Negativeを判別していくことを考えます。そうすると閾値が0のときは全てNegativeに判断するので偽陽性は0になります。ここから閾値を増加させていくと偽陽性と真陽性が増加していきます。そして閾値が1となったとき全てPositiveと判断するので偽陽性は1になります。モデルの識別能力が高ければ左上に凸のグラフになりますが、識別能力が低ければグラフは対角線上に近づきます。   Sklearnのpython     # ライブラリーのインポート import numpy as np import matplotlib.pyplot as plt from sklearn import svm, …

【ROC曲線とAUC】機械学習の評価指標 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 »