A Single Variable:
Shape and Distribution
CAPTURE TWO : Kousuke Takeuchi
Capter Two - Outline
Jitter Plot
Histogram and KDE (Kernel Density Estimates)
CDF (Cumulative Distribution Function)
Rank ...
Jitter Plot
Single Variable
単一変数のデータ分布を観察する際には、どのよ
うなことについて考えるだろうか?
早速2つの例をもとに考えてみよう!
Ex.1 大統領の任期
まずは大統領がホワイト
ハウスに出勤した期間の
データを視覚的に表現し
てみる
3列目のデータが、実際
に大統領が出勤した月数
のデータ
x軸上にデータ点をプロットしてみる
欠点:重複する点がすべて同じ点で表現されてし
まうため、クラスターとなっている部分が視覚的
に確認しづらい
Jitter Plot
Jitter Plot の作成の仕方:先ほど x 軸上にすべての
点をプロットしていたが、 Jitter Plot は少しずらし
てプロットする。(今回はランダムな距離で垂直
方向にずらしていく)
Jitter Plot の 3 つのポイン
ト
データの散布に影響を与えないように、垂直方向
にずらすときはランダムに行うようにする。
"jitter" する場合は必ずデータ点を水平線方向には
動かさないようにしよう
今回はデータ点に空洞の円を...
Histogram & KDE
Histogram
データを一定の範囲ごとに分けて「瓶詰め」にし
、「瓶」に入ったデータの総数から「瓶」の高さ
を決定してグラフに表記する
本の説明はわかりにくいので、とりあえず例を元
にヒストグラムを見てみる
Ex.2 サーバーのレスポンス時
間
サーバーがデータベースアクセスのリクエ
ストを受け取った後のレスポンス時間をロ
グファイルに書き込んだものをヒストグラ
ムに表示する。
このファイルに含まれるレスポンス時間の
データは膨大なもので、 1,0...
Histogram - Response
Time
「瓶」についての注意点
どのくらいの横幅にすればよいか、決定的な法則
はない
ただしガウス分布に関しては、 Scott’s rule を適応
するのがよい
w = 3.5 /σ n^(1/3)
( : Standard Deviation, n...
「瓶」ついてさらに ...
データを瓶に詰め込む際に、データの区切る範囲
に気をつけないといけない場合がある
特にデータの数や範囲が小さい場合に注意する
Histogram の 3 つのポイント
標準化されたヒストグラムでは、ある瓶が全体のうちどのくらいの割合を占
めているのかが視覚的にわかる (* 標準化 : ある瓶の総量を全瓶の総量で割
ってから Histogram を表記する )
瓶内の数...
KDE (Kernel Density
Estimates)
KDE で標準化 ( ? ) した後にヒストグラムを作成す
ることによって、データをより正確に観察できる
KDE 関数
KDE をデータ集合に合わせる
Gaussian Kernel を使用する際、データの幅や中央
値に合わせて Kernel 関数を変更しないといけない
KDE についての注意点
Box, Epanechnikov Kernel は、範囲外のデータを
引数にとると、すべて0の値をとってしまう
Gaussian Kernel は飛値を代入しても、必ず 0 以外
の数値をとる。 ( ほぼ 0 に近い...
Cumulative Distribution
Function - CDF
CDF: Cumulative
Distribution Function
cdf: 累積分布関数
ある x における cdf(x) は
、それまでのデータをす
べて加算したもの
先ほどのレスポンス時間を
CDF で表示してみる
CDF の 5 つのポイン
ト
CDF は必ず x に沿って広義単調増加する
CDF はヒストグラムや KDE ほど増減が激しくないが、表示
しているデータはすべて同じものである
ヒストグラムのように「データの瓶」が含まれていない、デ
ータの情...
3 つの分布図を比較する
Rank-Order Plots: ROP
&
Lift Charts: LC
Lift Charts: LC
Lift Charts: LC
Scenario - Mailing
List
会社でメーリングリストを用いてマーケティング
する際に、受信者の職業に合わせて文章を作成し
たい
全部で 16000 もの仕事が登録されているため、す
べての職業向けに文章を作成するのは困難
さて...
データを昇順に
ROP & LC (1)
ROP: Rank-Order Plots ⇒ 先ほど昇順にした表の
データをグラフにしたもの
LC: Lift Charts ⇒ 累積分布。今回は加算によって
累積計算を行ったので CDF と同じ
ROP & LC (2)
Workshop : Numpy
vec3 = np.linspace( 0, 4, 5 )
vec4 = np.zeros( 5 )
for i in range( 5 ):
vec4[i] = i
vec5 = np.loadtxt( "data" )
Numpy の基本 ...
v1 = vec1 + vec2
v2 = np.zeros( 5 )
( 同じ方法だが真似しない方がいい )
↓
for i in range( 5 ):
v2[i] = vec1[i] + vec2[i]
vec1 += vec2
vec1...
NumPy の特徴
“ Broadcasting” & ”ufunc”
“Broadcasting” & ”ufunc”
“BroadCasting”: より大きなデータ構造に
合わせて (Broad) 、 一方のデータ構造を変
更する (Ca...
Numpy を用いた KDE の計算プログ
ラム
from numpy import *
# z: position, w: bandwidth, xv: vector of points
def kde( z, w, xv ):
return...
Numpy の応用 - 行列
テキストのプログラムを参考に、 Numpy での行列
の扱い方を確認していく
最後に ...
今回のまとめ:単一変数のデータは、 Jitter Plot
と Histogram 、 CDF で表すことができる
Histogram を見やすくするために KDE 、 CDF を
見やすくするために ROP と LC の技術を...
Upcoming SlideShare
Loading in...5
×

Data Analysis - Chapter two

243

Published on

阪大情報科6セメのゼミナールBで作成した資料です。

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
243
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Data Analysis - Chapter two

  1. 1. A Single Variable: Shape and Distribution CAPTURE TWO : Kousuke Takeuchi
  2. 2. Capter Two - Outline Jitter Plot Histogram and KDE (Kernel Density Estimates) CDF (Cumulative Distribution Function) Rank Order Plots and Lift Charts Numpy - Vector & Tensor
  3. 3. Jitter Plot
  4. 4. Single Variable 単一変数のデータ分布を観察する際には、どのよ うなことについて考えるだろうか? 早速2つの例をもとに考えてみよう!
  5. 5. Ex.1 大統領の任期 まずは大統領がホワイト ハウスに出勤した期間の データを視覚的に表現し てみる 3列目のデータが、実際 に大統領が出勤した月数 のデータ
  6. 6. x軸上にデータ点をプロットしてみる 欠点:重複する点がすべて同じ点で表現されてし まうため、クラスターとなっている部分が視覚的 に確認しづらい
  7. 7. Jitter Plot Jitter Plot の作成の仕方:先ほど x 軸上にすべての 点をプロットしていたが、 Jitter Plot は少しずらし てプロットする。(今回はランダムな距離で垂直 方向にずらしていく)
  8. 8. Jitter Plot の 3 つのポイン ト データの散布に影響を与えないように、垂直方向 にずらすときはランダムに行うようにする。 "jitter" する場合は必ずデータ点を水平線方向には 動かさないようにしよう 今回はデータ点に空洞の円を採用した。どの点を 打つ場合でも円の半径は同じだ。これによって、 データ点が重なった場合でもある程度見えやすく なる。
  9. 9. Histogram & KDE
  10. 10. Histogram データを一定の範囲ごとに分けて「瓶詰め」にし 、「瓶」に入ったデータの総数から「瓶」の高さ を決定してグラフに表記する 本の説明はわかりにくいので、とりあえず例を元 にヒストグラムを見てみる
  11. 11. Ex.2 サーバーのレスポンス時 間 サーバーがデータベースアクセスのリクエ ストを受け取った後のレスポンス時間をロ グファイルに書き込んだものをヒストグラ ムに表示する。 このファイルに含まれるレスポンス時間の データは膨大なもので、 1,000 ものデータ が含まれている。
  12. 12. Histogram - Response Time
  13. 13. 「瓶」についての注意点 どのくらいの横幅にすればよいか、決定的な法則 はない ただしガウス分布に関しては、 Scott’s rule を適応 するのがよい w = 3.5 /σ n^(1/3) ( : Standard Deviation, n: Number of points)σ
  14. 14. 「瓶」ついてさらに ... データを瓶に詰め込む際に、データの区切る範囲 に気をつけないといけない場合がある 特にデータの数や範囲が小さい場合に注意する
  15. 15. Histogram の 3 つのポイント 標準化されたヒストグラムでは、ある瓶が全体のうちどのくらいの割合を占 めているのかが視覚的にわかる (* 標準化 : ある瓶の総量を全瓶の総量で割 ってから Histogram を表記する ) 瓶内の数値のクラスターレベルに応じて瓶の幅を変えて表記すると、より細 かなクラスターの情報を視覚的に見ることができる 一つのデータ集合を観察するのにはとてもよい。ただし、 2 つ以上のデータ 集合を観察する際には不向きである
  16. 16. KDE (Kernel Density Estimates) KDE で標準化 ( ? ) した後にヒストグラムを作成す ることによって、データをより正確に観察できる
  17. 17. KDE 関数
  18. 18. KDE をデータ集合に合わせる Gaussian Kernel を使用する際、データの幅や中央 値に合わせて Kernel 関数を変更しないといけない
  19. 19. KDE についての注意点 Box, Epanechnikov Kernel は、範囲外のデータを 引数にとると、すべて0の値をとってしまう Gaussian Kernel は飛値を代入しても、必ず 0 以外 の数値をとる。 ( ほぼ 0 に近い数値 )
  20. 20. Cumulative Distribution Function - CDF
  21. 21. CDF: Cumulative Distribution Function cdf: 累積分布関数 ある x における cdf(x) は 、それまでのデータをす べて加算したもの
  22. 22. 先ほどのレスポンス時間を CDF で表示してみる
  23. 23. CDF の 5 つのポイン ト CDF は必ず x に沿って広義単調増加する CDF はヒストグラムや KDE ほど増減が激しくないが、表示 しているデータはすべて同じものである ヒストグラムのように「データの瓶」が含まれていない、デ ータの情報が欠落している x が 0 または -∞ に限りなく近づくと、 CDF は 0 になる CDF はデータから一意に決まる
  24. 24. 3 つの分布図を比較する
  25. 25. Rank-Order Plots: ROP & Lift Charts: LC Lift Charts: LC Lift Charts: LC
  26. 26. Scenario - Mailing List 会社でメーリングリストを用いてマーケティング する際に、受信者の職業に合わせて文章を作成し たい 全部で 16000 もの仕事が登録されているため、す べての職業向けに文章を作成するのは困難 さて、どうやって解決する??
  27. 27. データを昇順に
  28. 28. ROP & LC (1) ROP: Rank-Order Plots ⇒ 先ほど昇順にした表の データをグラフにしたもの LC: Lift Charts ⇒ 累積分布。今回は加算によって 累積計算を行ったので CDF と同じ
  29. 29. ROP & LC (2)
  30. 30. Workshop : Numpy
  31. 31. vec3 = np.linspace( 0, 4, 5 ) vec4 = np.zeros( 5 ) for i in range( 5 ): vec4[i] = i vec5 = np.loadtxt( "data" ) Numpy の基本 (1) - ベクトルの作成
  32. 32. v1 = vec1 + vec2 v2 = np.zeros( 5 ) ( 同じ方法だが真似しない方がいい ) ↓ for i in range( 5 ): v2[i] = vec1[i] + vec2[i] vec1 += vec2 vec1 += vec2 vec1 += vec2 vec1 += vec2 vec1 += vec2 vec1 += vec2 vec1 += vec2 Numpy の基本 (2) - ベクトル演算 v3 = 2*vec3 v4 = vec4 + 3 v5 = np.sin(vec5) lst = v5.tolist()
  33. 33. NumPy の特徴 “ Broadcasting” & ”ufunc” “Broadcasting” & ”ufunc” “BroadCasting”: より大きなデータ構造に 合わせて (Broad) 、 一方のデータ構造を変 更する (Casting) “ufunc”: スカラー値は NumPy のオブジェ クトに変換される
  34. 34. Numpy を用いた KDE の計算プログ ラム from numpy import * # z: position, w: bandwidth, xv: vector of points def kde( z, w, xv ): return sum( exp(-0.5*((z-xv)/w)**2)/sqrt(2*pi*w**2) ) d = loadtxt( "presidents", usecols=(2,) ) w = 2.5 for x in linspace( min(d)-w, max(d)+w, 1000 ) print x, kde( x, w, d )
  35. 35. Numpy の応用 - 行列 テキストのプログラムを参考に、 Numpy での行列 の扱い方を確認していく
  36. 36. 最後に ... 今回のまとめ:単一変数のデータは、 Jitter Plot と Histogram 、 CDF で表すことができる Histogram を見やすくするために KDE 、 CDF を 見やすくするために ROP と LC の技術を用いた Option や Summary の部分は今回は省略した (統計学の授業で何度もやった内容なので、自分 で読んでください)
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×