Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
109
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

初心者から data scientist・AI engineer になるための勉強法&おすすめサイト・本を一つの記事にまとめたかった

poisukeです。justInCaseという保険のスタートアップでデータサイエンス(画像認識)やAppの改修を行っています。

この記事はAI人材・データサイエンティスト・魔法使いになりたいけど、何したらいいかわからない人向けの記事になります。
自分も独学で苦労しかしてないので、自分と同じ思いを誰かがしてたら助力できればと思い書きました。
あと、情報が分散しているなと思っていたので、一つにまとめました。これを読んどけば、どうにかなるという記事を書きたかった。

はじめに

何はともあれ最初に、このブログを読むといいと思います。
参考記事:データ分析職に採用されるために必要な「実務経験」をいかにして積むべきか

記事を要約すると、
- データサイエンティストの応募案件は、実務経験3年以上と専門知識とプログラミング能力が必要
- 未経験者が実務経験を積むにはKaggleで上位入賞
- 海外では専門職スクールからデータサイエンティストになるが一般的

特筆すべきは、私達Beginnerのやるべきことについて、

CS系以外の専攻の就活生の人たちからデータ分析職に(新卒就活で)就きたいという相談を受けた場合は、実は「Kaggleなどのコンペで頑張って入賞して実績を作って下さい」とアドバイスするようにしています。

と書かれてます。まあ、Kaggleはいきなり解けないので基本からの勉強が必要です。

今回は、データサイエンス(AIエンジニア)になるための勉強法、ニアリーイコール、Kaggle上位を狙えるようになるための勉強手順・必要な知識を主観で語っていきます。

やり方は人それぞれでですが、初心者ながら独学でやっていく中で得た情報の中から、一つの学習の方法論を提示できればと、そういう記事です。

ちなみに学習を始める1年前の私のstatusを
- 地方の国立大学(イキリ経済学部)
- プログラミング未経験
- 数学への苦手意識 センター数学ⅡB 30点(100点中)
- 陰キャラ
- SNSでAI流行ってるな〜 やってみよう(にわか)
ご覧の通り低スペックです。名の通った大学・理系の皆さん・まっとうな社会人の方、自信もってください。

そもそもデータサイエンスとは

定義から確認しましょう。

図を拝借します、

01data_scientist.png
データサイエンティスト協会によると、データサイエンティストに求められるスキルセットは以下3つ
1. ビジネス力(business problem solving):課題背景を理解した上で、ビジネス課題を整理し、解決する力
2. データサイエンス力(data science):情報処理、人工知能、統計学などの情報科学系の知恵を理解し、使う力
3. データエンジニアリング力(data engineering):データサイエンスを意味のある形に使えるようにし、実装、運用できるようにする力
上記、3つの力が複合的に必要なのがデータサイエンスということです。

また、スキルセットは、

skillset-detail01.png
引用:R&D部部長が語る、ホットリンクにおける「データサイエンティスト定義と求められるスキル」の話

と言われ、要は基礎を満たしつつ、どの分野に特化するかによって職種が変わるみたいです。
ここで大切なのは、自分が最終的にどの分野で何がしたくてデータサイエンスを使うのかを明確にすることがまず最初にすることです。情熱を持てるものとデータサイエンスを照らし合わせて行きます。参考にはなりませんが、自分の例を紹介しておくと、パーソナル心理学と行動経済学とWebに溜まったBig dataをデータサイエンスで最適化して、感情や幸福度を分析したい思っています。

また、これらのスキルをハンターハンターの念能力に例えた記事があって面白いので時間あれば一読を。

20181009115705.png
引用:HUNTER×HUNTERの念能力6系統で喩えるデータ分析スキル
クラピカが一番好きなので、特質系=社会実装系DSになりたいものです。

まずは概要から AI・データサイエンスの概要を掴む

自分がやる分野が明確になったら、AIやデータサイエンスのサイトを見て概要を掴みましょう。
1_AylF0pVW5h3Cz8EHF0FJwQ.png
- 1.ゼロから始めるデータサイエンスをざっくりと

まずはなぜデータサイエンスなのか?概要をつかみましょう。AI現在できることやなぜデータサイエンスが注目されているのかがわかります。

1_sFryufkpYhDy2deQ33vneA.png

また、他の方のまとめもすごいです。
- 機械学習の情報を手法を中心にざっくり整理
- 機械学習を始めたくなる!機械学習アルゴリズム解説スライドまとめ
->機械学習のアルゴリズムの概要を図解している良記事

じゃあ何を勉強すればいいの?

概要はわかった。でも、当時はプログラムもできないし、統計も初学者で、機械学習も数学も知らない状態で。
なので、データサイエンスに必要な基本的スキルを調べてからステップを踏んでいこうと思い、
マイナーですが、大学4年間のデータサイエンスが10時間でざっと学べるの内容を元に具体化します。

大まかに必要な知識は、
1. 数学
2. プログラミング
3. 統計
4. 機械学習
5. (Deep learning)

image.png
*私の頭の中のイメージ 数学はMUSTで、その上に統計・機械学習が密接に関わっていて、プログラミングでは数学を生かして実装します。また、英語も数学と同様に共通言語と必要かと思います。(海外のエンジニアが言ってた)
厳密に言えば、それは違うよとつっこまれるかもですが、今回はわかりやすさのために簡略化

もっと具体的かつ簡略的にすると、
1. 数学
- 微分・行列・線形代数
- 最適化問題/数学的な思考力(が自分は必要だと思った)
2. プログラミング
- バイナリー,メモリやコンパイラなど どうしてプログラムが動いているのかCSの基礎
- Python/sh/MySQLなどのプログラミング言語の使い方とアルゴリズムや計算量などの基礎
- Webの仕組みの概要 HTTP/Rails/Django/Javascript
- DB(RDBMS/SQL)/クラウド
3. 統計
- ベイズ/多変量/確率/推定など
4. 機械学習
- 分類/予測/クラスタリング/異常検知などの各アルゴリズム
5. 深層学習
- NNの仕組みと各アルゴリズム

と必要な知識をざっくりと足りないものを明確にします。
詳しくは自分が大学4年間のデータサイエンスが10時間でざっと学べるをメモした記事を見てください

もっと詳しくはこちらの記事が網羅的でした。私はやってない分野があるので、プロの方にお願いします。
- (保存版:ど素人向け) 機械学習/データ分析 読むべき記事リスト by Team AI

おすすめの勉強のしかた

ここでやっと学習すべきことがわかったので、参考書や学習サイトを使って勉強していきます。
本来は、数学 -> (統計 or プログラム -> 機械学習) -> 深層学習 だと思いますが…
いきなりガチ勉強から入ると全体像が見えず、暗闇の中でもがき続けることになります(体験談)

工夫したのは、難しいことからやらないことです。
自分の場合、強烈に数学に苦手意識があるので、すぐに結果の見えるプログラミングをやりました。
本来は、数学からやるべきでしょうが、道が遠く感じで挫折するくらいであればと私は思います。

数学や統計の知識が必要になったら、その都度インプットするやり方が精神衛生上いいと思います。
では、順に勉強の仕方について紹介します。(あくまで自分のやり方です。できる人は飛ばしてもいいと思います)

1. programing(python)

体系的に学べるサイトで手を動かしながら学ぶ

最初の一冊 辞書代わりに

最初は、結果の見えやすいプログラミングをゲーム感覚で。文法を覚えたら次は、使えるパターンをふやしていきます。

練習問題・パターン学習

海外のサイトですが、ゲームっぽくて好きでした プログラムを組む練習をします。最初は全然できず、ほとんど写経でした。

なれてきたら競技プログラミングをやりましょう。ここで計算速度やスマートな書き方や書くスピードを鍛えます。CTOやスパープログラマーはみんな競技プログラミングが役に立ったという話を聞くので、プログラマに本当に大切な能力が身につくとのだと思います。
最初はこの記事がいいと思います。
参考記事:AtCoder に登録したら解くべき精選過去問 10 問 をPythonで解いてみた

プログラムおもしろくない… 何か目標がほしいという方は Ruby on Rails or Django

私はプログラム(理系全般)にも苦手意識があって本当に学習が続かなかったので、なにかを作ることを目標にしました。そこでスクールに通ったり、最近だとtechpitという流れに沿ってやれば誰でもサービスが作れるというものもあります。
遠回りにはなりますが、やっといて損はないです。むしろ、アプリの仕組みを知らないとできないこともあります。なぜなら、AIもデータサイエンスもアプリに溜まったデータをいじるもしくは、アプリ内の一部機能を実装することが多いのでむしろApp側・Web側を知っておかないとデータも扱えません。
自分がやったものをのせておきます。
- tech::camp
- techpit
- Django

2.ここらでやっと本題 Deep learningとMachine learning

やっとですね。最初は魚の本が良いです。
- ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

自分の場合、Pythonもろくにかけない状態でAIやるんや!って言ってて、大変遠回りしました。プログラムをマスターしてからAIをやったほうがいいです。
そのときの勉強の記事:文系プログラミング初心者がAIをやりたいと思ってやった誤差逆伝搬法のまとめと簡易的実験

機械学習はこの一冊をおすすめします。
- [第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)
他の本は難しいですが、この本は初心者に優しくてなんとか読むことができます。

3. オススメ "fast.ai" 無料の動画学習サイト

理論はわかった! あれ、でも実装できなくない?って私はなったので、そこで実装メインのサイトを探しているととてもいいものにめぐりあいました。しかも無料。ただ、英語。
グーグルの人が作ってくれたもので、懇切丁寧に教えてくれるし、詰まったら質問できるチャットがあり、Wikiがあり、生徒のまとめ記事があり、Pytorchだし、Jupyterやtmuxなどの便利ツール教えてくれるし、応用的な内容も扱っているし、いたれりつくせり。

どんな講義かを知りたいのであれば、Lesson1の記事を見てみて下さい。
記事:fast.ai Lesson1

また、Google Colabを使えばGPU代も無料で使えます。なんて良い世の中なんだ…
Google ColabでGUPを無料で使ってfast.aiの設定をする

ほかにも東大の松尾研が無料で出してたり

これもとてもわかりやすい。NumpyやPandasの使い方なんかも学習できる。無料で。私は概要しか見てないが、fastaiが難しく感じるなら断然こちらがおすすめ。日本語だし。基本から丁寧にやってくれるので。

MLだとCourseraが有名ですね。私も受けてCertificationもらいました。が、英語と謎の言語を使わないといけなかったので、Fastaiか松尾研のコースをここではおすすめします。数学に関してはCourseraが一番よかったけど。
参考記事機械学習をゼロから1ヵ月間勉強し続けた結果

あとは、チートシートもよく使います。たくさんライブラリあるのでなかなか覚えれない…
- データサイエンス・チートシート(Python)

最近のAI動向がくっそまとまってました。(英語)
自分はAIエンジニアにはなれないなと思った… 難しい&早すぎてついていけない…

Kaggleが分かる記事 

最初に、みなさんKaggleを勉強することを目的にしましょうと言ったので、ここで触れておきます。
- 0から始めるkaggle超初心者向け入門

こんなところでしょうか。データサイエンスについてだいぶ詳しくなったと思います。
最後は、集めてきた良い参考書を紹介して終わります。

みんながおすすめする参考書を必死でまとめました

最後にどんな本を読んだほうがいいのかいろんなサイトで調べてまとめました。
ご参考になれば。(時間かかった…)

長いので、最低限でも読んでおかないと面接の際に話にならない本が存在するらしく(ソース:Twitter)というのは冗談ですが、どのサイトで調べても同じくおすすめされている本を抜粋して紹介します。

読んだほうがいい本まとめ

image.png
通称、はじぱた。

image.png
通称、カステラ

image.png
魚本

image.png
青本

以下は、皆のおすすめ兼やることリストも兼ねております。パーソナル心理学系の院に行きたい系なのでDSとは離れます、後半はスキップしてください。 
*おすすめの本あれば、コメントにてご紹介ください!
自分が読んだものには✅
途中・部分で読んだ本は🔃
未読ですが皆がおすすめしているものを⬜
来年までに全部読む。宣言。

自分の現状・課題としては、
- 数学をたのしむ:線形とか行列に対しての根本理解/論文とか数式を読んでわかるように
- 実装力:プログラムが0から組める自信がほしい/サーバー・インフラとWebの知識をある程度知ること/複雑なプログラムを実装できる様になること/
- 統計学徒としての誇り:統計専攻と呼べるレベルの応用的な多変量解析/ただの数字を見たときの統計思考・慣れ/時系列・ベイズなど
- 前処理:データを扱うプログラムの実装速度UP/可視化の技法/SQLマスターしたい/大規模データに慣れたい
- 機械学習:/アンサンブルしたい/統計の知識を生かして、うまくデータサイエンスの真髄へ...
- 深層学習:最新においていかれない程度に。ハイパラのfittingを手探りじゃなく、理論から推測できるように。
- 趣味で心理:基本は心理学検定で補い、専門についてはあびるようにインプットする。
- 一応経済学部:せっかくやらされているので、卒論とかで行動経済のモデルが使えるようにしとこうかな/あと、信用経済はおもしろい/保険の中の数学もせっかくInsur-techの会社にいるからこの機に。

math

文系なのでゼロから線形をやったときに、わかりやすかった

例題とか解説は少ないけど、統計で必要なものだけ体系的に学べる

program

正直、難しいがPythonで使う知識が網羅的に書かれている 和訳がわかりにくい

タイトルに惹かれたが、分厚さとがっつりプログラミングの話で積読

たのしそう 競プロ

ハッカーからおすすめされたインフラ系一冊

Web系の基本がわかる本らしい エンジニアとまともに会話できるようになります笑

data

すばらしい 辞書代わりに

この本はバイブルですね。

analysis

和訳が難しいけど、網羅的で概要を知るにはいい本だった

解説記事:探索的データ解析

SQL

こんな工夫の仕方があるのか〜っていう印象 積読してる

statistics

教科書 最初は読みづらい

実は統計検定2級もってます。 難しい問題から数式をたてて、答えをだすので、かなり数学・思考の訓練になると思います。

むずかしいらしい。過去問全然とけなかった。来年は取ろう。

名作 統計の肝になる偏差・正規分布・母集団・推定がとてもわかり易い 最初に読むべき一冊

数式はあまり詳しくないが、概要の理解にはすごく良かった 
解説記事:多変量解析がわかったをまとめる

図解大好きなので あと中二病なので曼荼羅とか好き たまらなくて衝動買いした本 内容はガチ

良い入門書 超絶わかりやすい

誰もがおすすめする一冊 読まないと…とおもってはや半年… 積読

blog
- 統計学の教科書から起業マニュアルまで、すごい「無料」コンテンツ集めました
 気合と情熱あればネットで勉強できるよね 大学行きたくないよね

macine laerning

仕事のイメージがついくとてもおすすめの本

ちょっとむずかしい 積読してる

たくさん手法が載ってた 

おもしろそう

フェイスブックの友達推薦とかはネットワーク分析らしい できるようになればおもしろそう(できるとはいってない)

人間を数学であらわせそうな分野好物です(できるとはいってない)

deep learning

言わず無がな、最初に読むべき本 徹底的に解説されている

数式がわからんが写経してたらなんとなくわかるようになってくる

たくさんのってる ドキュメントがコード化されたイメージ

psychology

カラフルで読みやすい

来年受けます

よむ

よみたい

よまねば

よめ(命令形)

ブログ
- NNが心理学と生理学から離れていった瞬間:Back propagationに関するNature論文(1986)の意義を考える

finance

biz

メルカリの人がおすすめしてたので読んだ

みんなおすすめしてるからいい本なんだと思う

データ分析というよりは、グロースハックの本の記憶がある

みんなおすすめしてた

いいよみもの 危機感を覚えた

鈍器

多いな 図書館に買ってもらおう

最後に

結論としては、初心者の方はKaggleを目標に学習するといいと思います。

データサイエンスはアカデミックな分野でもあるので、初心者からすると難しくうつると思いますが、諦めずに広い心で学習を続けましょう。

自分も独学でデータサイエンスをやりつつ、就活とかするわけですが、

経済学部で計量経済学を学んでいて統計学や機械学習などの分野に詳しい学生さんが就活に臨んでも、データ分析が出来ると看做されずに選考から漏れてしまうというケースは少なくないようです
-引用:データ分析職に採用されるために必要な「実務経験」をいかにして積むべきか

まさにこの状況を経験しました。これは、私の勉強が足りない・自頭が悪い・インキャなどの要因は関係あるとしても、情報系学部でないだけで相手にされないことが往々にしてありました。
こんときは先が見えなさすぎて、ひたすら勉強が苦しくて、何回かTJOさんにaskfmで質問して何度か解決策を答えていただいて、精神的に救われました。この場でお礼を申し上げます。なんとかサバイブしてます。 いつもいいブログ記事をありがとうございます。

自分も何回も挫折してますが、なんとか生きています笑 諦めずに続けさえすれば、いつか努力は実を結ぶと自分を信じてやりきるしかないなと。
なんとか続けていれば、こんな僕でも拾ってくれる会社があって。それが、今回のAdvent Calendar のjustInCaseです。justInCaseはデータ分析のインターンを募集しているそうです。
私は大学に行きながら、九州のクソイナカからリモートワークで参加していますし、控えめに言ってもいい環境だと思います。

Wantedly:スタートアップ企業でアルゴリズム、データ分析等体験したい学生さん大募集!

諦めずに、気負わずに基本から一歩一歩進んでいきましょう。前に進んでさえいれば、いつかはたどり着くと思いますので。私もKaggleがんばります。来年こそは… やらねば… 

*若輩者のためご指摘・おすすめ本等、お待ちしております!
*個人DMからでもTwitter Flow me

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
109
Help us understand the problem. What are the problem?