はじめに
昨今、データ分析という言葉をよく耳にするようになりました。
データ分析とは一体どんなもので、機械学習とはどういう関係にあるのか。
データ分析のプラットフォームであるKaggleにも触れながら解説してみたいと思います。
データ分析とは
データ分析の目的
「データ分析の主目的は、より良い決定を下すこと」です。
※データサイエンティストの中でも注目度が高い書籍「スケーラブルデータサイエンス」より
つまり、データに基づいた決定
を下すためのあらゆる営みがデータ分析と言えるわけですが、これでは少し抽象的です。
そもそも、データに基づいた決定
にはどんなものがあるでしょうか。
具体例
ほんの一例ですが、
- 住宅ローンの審査
- 中古車の査定
- ネットニュースが本物かフェイクかの判定
- Q&Aの質問および回答が適切か
など、企業(時には個人)の多くの営みが、データに基づいた判断と言えるでしょう。
(逆に、大きな組織がデータに基づかない判断をしているとすれば、それはとてもリスクに思えます。)
決定を行うのは誰か
次に、データに基づいた決定
を誰が行うのかという視点があります。
- プログラム
- 人間
- ハイブリッド
似た意思決定を大量に行う必要がある場合は、プログラムでの決定が向いています。
例えば、
- 自動審査
- 株の自動取引
などがその例と言えるでしょう。
パターン化しにくいケースや大きな判断は、人間の決定が向いています。
例えば、
- 事業戦略の判断
などがあります。
難易度が高い、あるいはセンシティブなタスクはハイブリッドな決定が向いています。
- 採用活動の書類チェック
などがあります。
データ分析のプロセス
あまり一般的ではないかもしれませんが、私はデータ分析は以下の3つのプロセスに分解できると考えています。
- 探索的データ解析(EDA)
- 特徴量エンジニアリング
- モデリング
- 人間が決定では、
1
のプロセス - プログラムやハイブリッドな決定では、
1,2,3
全てのプロセス
が求められます。
順に見ていきましょう。
探索的データ分析(EDA)
探索的データ分析とは、データをインタラクティブに触りながら、統計量を確認したり可視化を行う工程です。
一体どんなデータなのか
を人の頭で理解できるようにするためのプロセスと言えるでしょう。
具体的な手法としては、
- 統計値(平均、分散)
- 外れ値
- 散布図
- ヒストグラム
などがあります。
特徴量エンジニアリング
プログラムにデータを処理させるための準備
のプロセスです。
具体的な手法としては、
- one-hot encoding
- TF-IDF
- 対数変換
- 主成分分析(PCA)
などがあります。
生のデータを与えるのではなく、より情報の密度が高いデータに変換してから与えることで、優れた判断ができることがあります。
特徴量エンジニアリングは人間の仕事です。
探索的データ分析で得た仮説を元に、プログラムがその仮説をうまく捉えられるように、このプロセスを行います。
やや余談ですが、近年流行している深層学習(Deep Learning)ではこの役割が小さくなったと言われています。
具体的には、画像処理が顕著です。
とはいえ、このプロセスはデータ分析において依然として重要です。
特徴量エンジニアリングを題材にした書籍もあるくらいです。
(ページ数は多くないので、サクッと読めます。)
モデリング
プログラムにどんなアルゴリズムで処理をさせるかを決める
プロセスです。
具体的には
- 線形回帰
- ロジスティック回帰
- ニューラルネットワーク
- CNN
- LSTM
- Transformeer
- 決定木
- LightGBM
- Random Forest
などがあります。
あるいは、これらを組み合わせることもあります。
(アンサンブル学習と言います。)
プロセスとしては、特徴量エンジニアリングと分けましたが、実際には両者の関係は密接で
モデルによって適切な特徴量が異なる場合もある
ということは覚えておいてください。
ここまでのまとめ
- データ分析の主目的は、より良い決定を下すこと
- データ分析の文脈では、決定を行うのは誰かという視点を意識する
- データ分析のプロセスは「EDA」「特徴量エンジニアリング」「モデリング」に分類される
データ分析と機械学習の関係とは
ここまでの話を理解できると、両者の関係をスムーズに説明できます。
データ分析のプロセス「3. モデリング」で用いるアルゴリズムが、基本的に機械学習
の技術です。
時には、ここで単純な統計量やルールベースに基づいたモデルを用いることもありますが、
現実のタスクは複雑で、ルールでの記述は困難です。そこで、データを集めてその問題をクリアするのが機械学習となるわけです。
機械学習自体の説明は、巷に溢れているかと思いますので他に譲ります。
特徴量エンジニアリング
は、その後のプログラムによる処理を前提としているので、特徴量エンジニアリング
を含めて機械学習の技術として取り扱うこともあります。
(そもそも昨今は、機械学習の定義自体が関連技術に向けて広がっているように思います。)
Kaggleとの関係とは
データ分析プラットフォームであるKaggleとここまでの話はどう結びつくでしょうか。
Kaggleのコンペティションでは基本的に、課題とデータ
が与えられ、より高精度な予測をすることが目的です。
その際に、予測結果(もしくはソースコード)が求められますので、
データ分析のプロセスで言うプログラムによる決定
となり、
- 探索的データ解析(EDA)
- 特徴量エンジニアリング
- モデリング
全てのスキルが求められます。
そのため、kaggle
はデータ分析のためのスキルを養う絶好の場と言えます。
以下は強豪Kagglerが執筆した書籍で、2020年2月現在のKaggleの決定版と言える書籍です。
ちなみに、2020年2月現在はまだ発売前ですが、下記の書籍も著者の顔ぶれを見ると素晴らしい書籍になっていると思います。
Kaggleで勝つデータ分析の技術
に比べると、初学者向けの書籍といえます。
オンライン学習サービスUdemyでもKaggleについて学ぶことができます。
【Kaggleで学ぼう】Python と Keras で学ぶディープラーニング開発入門
Kaggleでは得られないこと
Kaggleでは
- 探索的データ解析(EDA)
- 特徴量エンジニアリング
- モデリング
全てのスキルを養える一方で、課題とデータ
は与えられます。
実世界のデータサイエンスでは、課題を発見し、どのようなデータを集めれば良いか
というスキルも必要です。
その点だけは注意が必要ですが、1~3のスキルを養いプロセスを高速に回せる、あるいはイメージできるようにしておくことで、
効率よく、課題を発見し、どのようなデータを集めれば良いか
を判断できるようにもなるでしょう。
まとめ
データ分析とは何かについてまとめ
- 機械学習
- Kaggle
との関連性を整理しました。
良いデータ分析ライフを!
記事情報
- 投稿日:2020年2月27日
- 最終更新日:2020年3月26日