Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

データ全貌把握の方法170324

データ分析は実際にきちんとやろうとすると
意外と大変な手間がかかるものであるから、
それに必要な手順とツールを今後考察するための
メモとしての位置づけである。

  • Loggen Sie sich ein, um Kommentare anzuzeigen.

データ全貌把握の方法170324

  1. 1. 与えられたデータの 全貌を把握するには 2017-03-24 下野寿之 1 主に表形式のデータを扱う。 著者自身が今後分析業務の手間を把握するためのメモでもある。 下記のテーマは部分的に記載したが、さらに別文書でまとめたい。 - 列の性質の分析 - データを分析可能にするための正規化方法 - その過程でどんな中間分析データが作られるか
  2. 2. 1. 最初にすること 2
  3. 3. データを受け取ったタイミング: • データファイルの授受時の点検 : • バイトサイズ, ファイルのハッシュ値の記録 • 改行コード, 文字コードの把握 • 表形式であれば行数,列数の確認 • データの破損が無いか。 • 目的適合性、意味のある分析提案の実行可能性 : • 必要なデータが揃っているか • データを貰いすぎていないか • どれだけの価値を生み出せるか • クライアントが今までどういう分析を行ってきたか 3
  4. 4. 受け取ったデータの初期的整備 • ログデータ、マスターデータの整備 • 必要に応じて文字コードと改行コードの変換 • エクセル形式であれば、TSV形式に • ファイル終端が改行文字が無ければ追加 • 各列の性質を一覧にして、印刷 • ログデータとマスターデータは別ディレクトリに。 • 仕様書の文書 • 適切な保管 • 適宜理解 • (データ生成方法を最初に理解しようとしないこと。) 4
  5. 5. 2. 各テーブルの ”初期的分析” 5
  6. 6. 各テーブルの初期的分析 • 各列の性質の把握 • 列名が1行目にあるか • 異なる値の出現数/値の範囲/頻出値/その頻度 • 空欄,異常値の把握 • 各行の様子の把握 • 全行から一部の行を擬似無作為抽出をして閲覧 • 同一の行が発生していないか • 列間の関係の把握 • 引数列(インデックス列)は何であるか • 加工または結合すべき列は何であるか • 日付に対し、その日の関係や年月の分布を調べる • 異常の様子の把握 • 遭遇した異常のリストを作る • 異常のインパクトの大きさを見積もるようにする 発見した知見につい ては、適切にメモ取 りを行い、集積したメ モが後で容易に参照 できるように、適宜工 夫を加えること。 6
  7. 7. 各データの理解について • 情報源の把握 • ログとマスターなどは仕様書 • ログデータに対して、マスター。 • クライアントとのコミュニケーション • 使っているソフトウェア, 能力の把握をそれとなく出来る様に。 • データの理解 • 擬似無作為抽出する • 日付列をよく調べる(日付は大抵意味が最も明確) • 特に意味が分からない列について • 頻度表を作る/他の列と組みあわせてクロス表を作る 7
  8. 8. 異常の把握について • 重要な事項 : • 分析目的に影響のある異常の把握 • その発見に要する時間を減らすノウハウの確立 • 発見した異常のインパクトの大きさの見積もり • 件数が少なくても、軽微な異常とは限らないので、やや慎重を期すること。 • 多数の異常を全体的に把握できるようにすること • 異常発見の方法 : • 擬似無作為抽出/重み付き抽出をして閲覧する • 文字列長さが異常に長すぎたりしないか • ある時期だけデータが欠落していないか • その列の値が常識的な意味から乖離していないか • 異常の傾向の把握の方法 : • 異常値候補を含む塊をいくつか取り出して図示する • 異常値/例外値として注目した行のみを抽出して閲覧 • その異常値は、システム上の例外値では無いか検討 • 各値では無くて、何らかの集計をした値に異常が現れることもある 8
  9. 9. 異常のインパクトを推定せよ • まずは件数を調べる。 • 異常を適宜抽出して、傾向を検討すること。 • どういう(一般的な)条件が揃った時に、異常となるか。 • ある属性の値により、異常が集中発生していないか。 • その異常によるインパクトの大きさを推定せよ。 • 件数が少なくてもインパクトが大きい可能性がある。 • いろいろ考えられる最終分析に影響があるかどうか。 • 見つけた異常を除去したとしても、まだ異常が残っ ている可能性は要検討。 9
  10. 10. データの整合性の検証について • 全行を調べる必要性あり • ファイルが巨大な場合、時間がかかることがある。 • 列をばらばらにしたファイルを作ると便利。 • 日時データが日時形式を満たしていること。 • 整合性の崩れの例 : • マスターデータでログデータに整合しない。 • 文字列データがテーブル結合出来ない。余計な文字の 存在や略称、大文字小文字変換がある場合。 • 整合性がやや気になる例: • マスターにはあるがログに存在しないデータの扱い 10
  11. 11. 3. テーブルの “中間加工” 11
  12. 12. テーブルの1次中間加工 • 大きなデータであれば、日時などで行分割。 • さらに踏み込んだ分析を容易にするため: • 不要な列を減らす • 一定値 ; 他の列と同一の値 ; 他の列群の関数値 * • 形式を変える • 桁数を揃える; 日時を正規化する • 複数の列を結合する • 意味の分かりやすい列を新たに追加する(日付差など) • 削除して良いか分からない列群は、記号化して残す • ソートを行う * (→閲覧時に意味が明確化する) 12
  13. 13. 派生的なテーブル抽出 • 全件データの加工の流れとは別の流れもある。 • 擬似的な無作為抽出(ランダム抽出) • (どの単位でランダムにするかは、要考察) • 注目すべき特徴を持った行を抽出したもの • 最終的な分析の対象を絞った場合 ←別ページで解説 • 振り返りがしやすいように注意すること。 • どのように派生テーブルを作ったか • 知見メモが、どのような派生テーブルに由来するか • データの行数はかなり便利なヒントになる(!) • 派生的テーブルのみ、もう一段深いディレクトリを許可 するのが良さそう。 13
  14. 14. 最終的な分析の対象を絞る場合 • 別のディレクトリを作ることが望ましい。 • 分析対象を絞る段階はできるだけ1回とすること • 後で振り返るのが大変となるため 14
  15. 15. ファイル名などの工夫 • 英語のボキャブラリー ; scratch, study, hangar, .. • (プログラム名と出力ファイル名は似た様な連想で分 かるようにして結びつける。) • DBの列名に関して • 英語の予約語の問題を起こす場合はフランス語。 • 日本語漢字表記の異なる同音語をローマ字化する時は、中 国語の発音を用いる。 • 拡張子に関して • 多数のデータファイルが有る場合には、付けない • 頻度表は .freq を付加。 15
  16. 16. 4. 加工プロセス上の他の注意点 16
  17. 17. 知見とりまとめ文書の生成方策 1. 発見した知見は紙にメモ。 2. 後でその知見を容易に把握できるように、きちんと 文章化を試みることが望ましい。 3. メモはノートに記載。付箋ソフトを活用。 4. 重要事項のみ、自分宛にメール。 5. 多数の数値データはエクセルで整理。 6. 上記をさらにまとめてパワポで管理。 7. 将来の自分向けエグゼクティブレポートとなるパワ ポの別ディレクトリを作ることが望ましい。 17
  18. 18. 加工や分析に使うプログラムに ついて • 望ましいやり方: 1. できるだけ汎用的なツールを使う/作る方法 2. データファイルから加工手順が容易に判明する加工 • 上記が難しい場合: • 加工プログラムは入力データと同じディレクトリに配置 • プログラム名は出力ファイル名を連想させるような名前 • (出力ファイルとプログラムは近い日時のものとなるはず) • 手順の再現メモを完全にすることにこだわらない • コマンドヒストリに残す方法もあるが、追跡は大変。 • 計算機ユーザーを変えて操作することで、印を付けるやり方があるかも。 18

×