Data Analysis - Chapter two

444 views

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
444
On SlideShare
0
From Embeds
0
Number of Embeds
98
Actions
Shares
0
Downloads
3
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 の部分は今回は省略した (統計学の授業で何度もやった内容なので、自分 で読んでください)

×