【保存版】Pythonでデータサイエンスするための全体像と、必要な学習項目を初心者向けにまとめてみたよ!
こんにちは、DAI(@never_be_a_pm)です
このようなツイートをしたら、非常に反響があったので、noteにしてみます。
このnoteでは、データ分析をやってみたい人向けに、何を学んだらよいかまとめます。ちなみにこの記事では、「ディープラーニングで何かしたい!」みたいな人ではなく、「データをもとに有益なアウトプットを出せるようになりたい」という人向けの記事となっています。
追記) 反響があり、News Picksではテクノロジー一面に掲載されていました。
また、はてなブックマークでもホットエントリー入りして、5/5現在898ブックマークを突破しました。
データ分析の全体像
まず、データ分析を行う上での全体像から見ていきたいと思います。流れとしては大きく分けて、4つあります。
1. データ分析から何を検証したいか決める (調査のデザイン)
2. データ収集
3. データの整形
4. 分析を行う
各フェーズごとに行うことと、何が学ぶべきかまとめていきたいと思います。
1. データ分析から何を検証したいか決める (調査のデザイン)
データ分析の目的は、ビジネス上の判断で何かかしら意味のあるアウトプットを得ることにあります。例えば、僕のやっているツイッターの分析では、「フォロワーを増やす」ために、「その一番影響がある変数であるRTが多いツイートには、どのような特徴があるのか」という問いを立て、それを検証しました。
データ分析の結果、どんなツイートが特にRTされるかを分析し、その結果を施策に落とし込んだところ、フォロワー数が一日に60人増えました。
このように、何かしらの目的があって、そのための施策を取るためにデータ分析があるわけです。
Qiitaなどにある「ディープラーニングで~をやってみた」系の記事は、この「何を検証したいか」という視点がかなり抜けています。まず最初に「何を検証したいのか」、そして「それをやることにやってどのようなメリットがあるの」をしっかり定義したうえで、分析する必要があります。
2. データ収集
次に、仮説や、問いを検証するためのデータを集めてくる必要があります。これらのデータを取得するときに便利なのが、Pythonなどのプログラミング言語なわけですね。
Web上のデータを収集する方法として、知っておくべき必要があるのは、Web APIとスクレイピングの利用方法を学ぶことです。
Web APIとは、あるウェブサービスが情報を提供してくれている窓口だと思ってください。(正確に言うと通信の窓口になります)Web APIを利用したデータの取得方法は、Web上で我々が行っているHTTPの基礎を理解できていれば実現できます。
スクレイピングは、ネット上のWebサイトに自動でアクセスし、情報を取得する技術です。こちらはWeb上でHTMLからデータを取得することになります。また、ブラウザを自動で制御することになるので、JavaScriptの知識も必要になります。
データ分析というと、いつも手法に目を向けられてしまいますが、本当に価値のあるアウトプットを決めるのはあくまで「データ」です。料理で例えると、「データ」は食材、「分析」あくまでも調理方法です。美味しくない素材を使って、有名なシェフがおいしい料理を作れないように、素材である「データ」の収集にこそ、重要度が高いです。「データの質」 >>>超えられない壁>>> 「分析の難易度」だということを、頭の中に入れておいてください。
3. データの整形
Web APIや、スクレイピングからデータを取得した後に、実際に分析に使えるようにデータを下準備する必要があります。それがデータの整形です。
例えば、ツイッターのデータ分析で、自分のツイートの中で特にRTされたツイートを抽出した際に、自分が他人のRTしたツイートも含まれています。そすると、他人のツイートが入ってしまいますね。そこで、取得したデータの中で、不必要な部分、欠損していた部分を削除したり、場合によってはデータを置き換えてあげたりする必要があります。
料理で例えると、カレーを作ろうとするときに、買ってきたジャガイモをいきなりカレールーにぶちこんだりしないですよね。洗って泥を落としたり、いらない皮を切ったり、刻んだりしないといくら素材と調理方法がよくてもおいしいカレーはできません。分析に耐えうる「データ」にするためには、しっかりとデータを整形してあげる必要があります。
4. 分析を行う
ここまでやって、はじめて分析です。自分が立てた問いに対して、しっかりと答えが出る答えを分析によって導き出します。例を出していたツイートの分析だと、RT数といいね数が多いツイートを抽出して、かつRT率(=RT / いいね率)を算出、そのRT率の高いデータを定性的に見ました。その結果、お役立ち系のツイートや、議論が分かれる問題(ベンチャーVS大企業などのキャリア論)に断定的に主張するツイートが、RTされる可能性が高いことがわかりました。 (実際に05-04以前の過去のツイートと、05-04以後のツイートのRT数を見ると、圧倒的に向上していることがわかります)
データ分析の結果実行した施策をうった2018-05-04以後のツイートのRT数はのきなみ上がっています。
それ以前のツイートはこちらです。
くわしくは先ほど紹介した分析記事を読んでみてください。
データ分析をするために、何を学ぶべきか
さて、これらのデータ分析を行う上で、4つのフェーズがあることを学びました。これらのフェーズのうちで、学ぶべきことをまとめておきましたので、ぜひこの流れで勉強してみてください。
①何はともあれ、Pythonの基礎を学ぼう
②Pythonでデータの前処理方法を学ぼう
③PythonでWeb APIとスクレイピングを学ぼう
④Pythonでデータ分析の方法を学ぼう
①何はともあれ、Pythonの基礎を学ぼう
まずはPythonの基礎がわからないとできないので、Pythonを学びましょう。(ちなみにR・Juliaなどの統計向けプログラミング言語が多いですが、エラーが起こった時に問題解決できる日本語記事が少ないのでおすすめしません)
とりあえずProgateで以下の講座を完全コンプリートしておいてください。これはマジで必須です。まずプログラミングのコード自体の学習方法については以下5つのコース完了が必須です。
あとはPythonの環境構築もできるようにしておいてください。(これに関してはOSがMacかWindowsかによって変わるので、「Mac Python 環境構築」やら「Windows Python 環境構築」やらで調べてください。)参考程度に載せておきます。
②Pythonでデータの前処理方法を学ぼう
Pythonのプログラミングコードがある程度分かったら、さっそく応用に入っていきましょう。もし英語ができるのであれば、Udacityの「Intro to Data Analysis」が非常にお勧めです。このコースでは、動画と実際にコードを書きながら、タイタニックの生存者分析、地下鉄の混雑度の予測などをテーマにデータの前処理方法などを学べます。これは英語が読めればめっちゃくちゃ力になるコースなので超絶おすすめです!(しかも完全無料)
ただ、これから入ると難しいので、おすすめなのは基礎をAidemyでやるのがよいでしょう。Aidemyではデータの前処理で必要なPandas、Numpyといったモジュールの使用方法を、環境構築不要で学ぶことができます。データ分析をするなら確実に学んでおいてほしいコースをまとめておきます。全部をやるのは難しいですが、Udacityで詰まったらここのコースを参照しながらやってみるのがよいと思います。
ここまで理解できれば、すでに存在するデータに関しては前処理と分析を行うことができるようになると思います。
③PythonでWeb APIとスクレイピングを学ぼう
さて、待ちに待ったデータの取得です。面白いデータ分析の結果は、データの取得方法が一番影響します。Web APIの利用方法、スクレイピングの利用方法に関しては、以下の本が非常に良かったです。未経験者でも上の学習内容が理解できていれば、絶対に進められるはずです。
これを一周すればできるとは思いますが、じっさいにWeb上のデータを収集する場合はこれだけでは少し足りません。
僕自身がWeb APIやスクレイピングでデータを取得するチュートリアルを何冊か出しています。特に「スケベAI」の開発は、スクレイピングを利用して画像を収集し、顔認識のWeb APIを利用して画像学習させるAI プログラミングまでできるようになるチュートリアルなので、非常にモチベーション高くかつデータ収集の方法を学べると思います。
また、Web APIを利用したデータ取得に関しては、こちらのチュートリアルが非常に参考になるはずです。DMMのAPIを利用して、画像を収集できます。
④Pythonでデータ分析の方法を学ぼう
最後に分析ですが、こちらは正直さきほど紹介したUdemyの動画で十分かと思います。
Aidemyの以下のコースで、実際に取得したデータを可視化する方法を学んでみるのもよいと思います。
最後に
さて、どうだったでしょうか。
「おい、てめぇデータサイエンスいうなら機械学習やらせろ!」
「ニューラルネットワークキボンヌ」
という声がどこからか聞こえてきますね。安心してください。これらの基礎ができてこそ、価値のあるアウトプットがそれらの分析方法で出てくると思います。それからでも遅くはないのでしょうか?
どうしてもやりたいという場合は、Aidemyさんがそのようなコースを出しているので、ぜひやってみてください(繰り返しますがデータの質 >>>> 超えられない壁 >>>>> 分析の難易度かと思いますが)
ということでアディオス!こんな感じの情報を発信していくつもりなので、興味があったらツイッターもフォローしてね!