探索的データ解析」より引用。探索的データ解析は、1960年ごろより有名な統計学者J.W.Tukeyによって提唱されたもので、データの解釈にあたっては「まずモデルありき」ではなく、モデルを仮定する前に現実的な立場で、データの示唆する情報を多面的に捉えるという、解析初期のフェーズを重視したアプローチです。それ以前は、あらかじめモデルを用意して、データをあてはめて確率計算を行っていました。現実には、複雑な現実のデータ構造の中から、最適なモデルをあらかじめ用意することは簡単なことではありません。そのため、データを見てからモデルを修正したり、選択する必要が発生します。数理統計学の理論的側面よりもむしろ、あくまでも応用面と結びついた、やさしく誰でも使えるような手法を重視しているために、ビジネスの現場での「データマイニング」などにも有効に活用できるアプローチといえるでしょう。事前に読んでおくと良い記事。テューキーの教え-データ分析する時に心に刻む10のことテューキーの教え:データ分析に必要なツール背景データセットの集計が間違っていたり、どういうデータでどういう意図で作ったかなどの説明もほとんどなくとりあえずデータを渡したりする分析依頼は数多くあります。このような案件はデータの検証や理解から進める必要があり、丁寧な統計モデリングや機械学習で効果を出すまでに時間がかかります。いった分析に対する無理解は担当者の退職に繋がるかもしれません。いった状況を避けるためには、ドキュメント整備やデータセットの状態をモニタリング、探索的データ解析の結果をまとめて共有するなど、情報や知見をチームや組織に貯めていくのが肝要になります。中でも探索的データ解析はデータを理解した仮説の立案と磨き上げができる重要なタスクです。基礎分析や可視化が多く誰にでもできる単純作業と見なされがちですが、データを正しく処理する知識とスキル、適した仮説を立てるセンスを要します(センスは対象となるデータとビジネスの理解によって、ある程度は補完できます)。システムにあったバグやユーザーの不適切な行動をデータから発見するケースもあり、ビジネスの現場で気づいていなかった有用な仮説が生まれるときもあります。いえ業務としては見つけるだけがゴールではなく、共通化・自動化できる部分はシステム化して負荷軽減を考える必要もあります。DataExplorerパッケージは「探索的データ解析」「特徴量エンジニアリング」「レポーティング」の各タスクを手軽にするパッケージで、中でも探索的データ解析を補助する可視化関連の関数群が多く定義されています。これらを用いるとデータセットの傾向を手早く把握できます。本記事ではDataExplorerパッケージの関数を実際に動かして挙動を確認しながら説明します。(GitHub)また、GitHubリポジトリにあるWikiにはDataExplorerパッケージを使用したブログや記事などがまとめられています。利用例が知りたい方はご参考ください。本記事ではDataExplorerパッケージの使い方を説明しますが、その際に必要となる定数や共通利用される関数定義をここでは行います。本筋とそれますが「ソース内で参照するパッケージの一覧」を取得する方法に関しても記載しています。return()}ソース内で使用しているパッケージ一覧Dockerfile作成やパッケージ開発はもちろん、ブログ記事でもRのソースコードファイル内で呼び出しているパッケージの一覧が欲しくなるときがあります。ここでは「ソース内で参照するパッケージの一覧表示」をattachmentパッケージを利用して取得しており、これによって上記のような「まとめて読み込む部分以外でパッケージを呼び出し、忘れた頃に実行したら必要パッケージが洩れていた」という事態がなくなります。"patchwork"また、R言語の実行環境を再現する方法には以下のようなDockerイメージ作成・パッケージ管理などもありますが、ある程度の慣れや知見が必要となりますのでattachmentパッケージのattachment::att_from_rmds()やattachment::att_from_rscripts()で使用しているパッケージの一覧を得るから始めるのも良いでしょう。個人的にはrenvパッケージの今後のご活躍を期待しております。(GitHub)関数一覧DataExplorerパッケージが提供している関数(別パッケージからのロードは除く)は次の通りです。各種可視化を行う関数群が「plot_*」の名称によって定義されています。character())一覧で確認したDataExplorerパッケージの関数群を以下のように分けて、本記事ではこの区分で説明します。データセットの構造を可視化plot_strデータセットの情報を可視化introduce/plot_introprofile_missing/plot_missingデータセット中にある変数の情報を可視化plot_barplot_scatterplot/plot_boxplot/plot_density/plot_histogramplot_correlation/plot_prcomp/plot_qq特徴量エンジニアリングdummify/group_categoryレポート生成configure_report/create_reportユーティリティ関数plotDataExplorersplit_columnsdrop_columns/update_columns/set_missing関数解説DataExplorerパッケージが提供している関数について、実際に動かして挙動を確認しながら前節の区分毎に説明します。エンジニアリング」、ならびに「ユーティリティ関数」の一部です。本記事で触れていない関数は「飛ばした関数」の項目にまとめておりますので、興味がある方は随時ご確認ください。データセットの構造を可視化Rオブジェクトのデータ構造を把握するための関数にutils::str()やtibble::glimpse()があります。これらは構造がわからない関数の戻り値やデータセットに適用して確認する際に用いますが、複雑さが増した結果には向きません。0x7fec3a3a0608>DataExplorer::plot_str()を用いるとnetworkD3パッケージを利用して、対象データセットの構造をネットワークグラフで可視化できます。これによって、リストの入れ子で構造が複雑になったデータセットの把握がしやすくなります。シンプルな構造でネットワークグラフによる可視化が手間になるときなどは、先ほどのutils::str()やtibble::glimpse()を利用するのがよいでしょう。40)データセットの情報を可視化データセットの可視化には様々な観点がありますが、この節で扱う関数は「データセット全体あるいは変数の決まった傾向の可視化」を対象にします(データセットを関数に渡して返ってくる結果を「探索」しない)。引数で渡した変数で集計した傾向を見るケースや、データの散らばりや分布、変数間の関係性などを可視化する関数は次節にて触れます。データセットの基本情報レコード・カラム数や離散・連続値のカラム数など、対象データセットの基本情報を算出する関数にDataExplorer::introduce()があり、DataExplorer::plot_intro()ではそれらの情報を可視化します。ドキュメントには明示されていませんが、入力はデータフレームでなければならず、カラム中にはリストを含んでいてはいけません。"plot_intro"))データセットの欠損状況DataExplorer::introduce()やDataExplorer::plot_intro()ではデータセット(対象はカラム中にリストを含まないデータフレーム)全体の欠損値数を計算・可視化できますが、どのカラムにどの程度欠損を含むかわかりません。データセット中のカラム毎の欠損状況を個別に算出する関数にDataExplorer::profile_missing()があり、DataExplorer::plot_missing()ではそれらを可視化します。これらの関数はカラム中にリストを含まないデータフレームにも対応しています。統計モデリングや予測モデル構築などを始めるにあたって、変数の分布や関係性などを可視化してデータの理解を深めてから行います。DataExplorerパッケージはggplot2パッケージをラップする形で基本的な可視化用関数を提供しています。指定カラムに応じて可視化」されます。説明だけでは理解しづらいですので、関数毎にデータを可視化して挙動を確認します。plot_barDataExplorer::plot_bar()は離散変数カラム別・離散変数値毎に集計した結果を棒グラフで可視化します。変数の傾向をざっと掴むという観点では前節の関数群に該当しそうですが、with引数によって対象を探索的に見られるという点でこちらで説明しています。DataExplorer::plot_histogram()がDataExplorerパッケージでは提供されています。データセットをそれぞれの関数に適用すると、次のような可視化結果が得られます。)DataExplorer::plot_density()とDataExplorer::plot_histogram()は連続値を持つカラムのみを対象に、よしなに可視化してくれます。このときDataExplorer::split_columns()が関数内部で呼ばれており、この関数は入力したデータセットを離散変数カラムのデータフレームと連続変数カラムのデータフレームに分けてくれます。c("split_columns"))DataExplorer::plot_boxplot()も連続値を持つカラムが可視化対象ですが、DataExplorer::plot_scatterplot()は両方ともが対象です。両関数ともにby引数でy軸に設定するカラム名を1種類まで指定できますが、DataExplorer::plot_boxplot()は連続変数のカラム名を指定すると数値区間を同分割(5分割)して離散化します。2の可視化結果を再度表示print(manufacturer_scatterplot$page_2)plot_correlation/prcomp/qqDataExplorerパッケージでは、上記の他に「変数間の相関係数をヒートマップの形で可視化」するDataExplorer::plot_correlation()や「主成分分析による結果を主成分毎に可視化(指定した寄与率の累積まで)」するDataExplorer::plot_prcomp()に「連続変数毎のQ-Qプロット」を出すDataExplorer::plot_qq()も定義されています。)特徴量エンジニアリングDataExplorerパッケージには可視化だけでなく特徴量エンジニアリングに役立てられる関数も定義されていますので、簡単に紹介しておきます。DataExplorer::dummify()はダミー変数作成の関数です。recipes/caret/mlr/dummyなどのパッケージでも行えますが、与えるデータ形式と使い方に応じて選ぶと良いと思います。DataExplorer::group_category()は離散変数中にある、低頻度要素をひとつにまとめる関数です。値が低い順から指定した閾値までの要素が集約されます。本記事で割愛した関数には以下があります。DataExplorer::create_report()は、config引数またはDataExplorer::configure_report()で設定した内容に従って、本記事で解説したDataExplorerパッケージで定義されている関数群を用いた可視化をまとめたHTMLファイルを生成します。ここでは詳しく解説していませんが、DataExplorerパッケージの価値はこの関数にあると言っても過言ではありません。DataExplorer::plotDataExplorer()はDataExplorerパッケージの各種可視化関数内で呼び出されるggplot2パッケージのラッパー関数になります。DataExplorer::set_missing()はtidyr::replace_na()の機能におおよそ相当する関数です。DataExplorerパッケージの作者はdata.tableパッケージを好んで使っているようで、dplyr/tidyrは出てきません。DataExplorerまとめDataExplorerパッケージについて、実際に動作を確認しながら機能を解説しました。データセットを様々な観点で可視化して探索的データ解析の効率を上げるだけでなく、例えば日次更新テーブルを日別で可視化して状態をざっと把握するなどの基盤運用にも利用できそうですね。このようなデータセットの統計情報を算出・可視化するパッケージには、他にも以下のようなものがあります。Framesskimr/summarytoolsパッケージにはありますが、base::summary()で得られるデータセットの統計情報を算出する関数はDataExplorerパッケージには今のところなく、これらのパッケージ群との機能比較や組み合わせた使い方も興味深いところです。ちなみにPythonではpandas-profilingで似たことが実現できるそうです。【Pythonメモ】pandas-profilingが探索的データ解析にめちゃめちゃ便利だった件DataExplorerパッケージはデータセットの可視化を手軽にして、データ理解にかける時間を抑えて探索的データ解析を手助けしてくれますが、もっと手軽に探索的データ解析をするアプローチもあります。やりたいこととスキルセットに応じてこれらを合わせて使うのも良いでしょう。【統計学】Q-Qプロットの仕組みをアニメーションで理解する。Summit」で触れられていたという話を読んで私は知りましたが(Web上にはっきりとした資料は見つけられませんでした)、データ分析は次の4ステップからなるそうです。Analytics」で画像検索すると矢印が右上に向かった図が出てきますし、NECの特集コンテンツのページには別開催時の講演解説があります。他にも以下のようなページは数多く見つかります。upLoginユーザーは見つかりませんでした。