はじめに
来年度研究室に入ってくる機械学習未学習の学生に向けて,まとめないとなぁと思ったので,さっそく行動してみました
Python・機械学習したことないよって人向けにどう勉強していくのかをまとめました.
この記事は以下の人におすすめです.
- 機械学習どうやって勉強すればいいの?
- Pythonの実行環境わからない
- 触りだけでいいから機械学習してみたい!
目次
1. Pythonの環境構築をする
2. Pythonの基本的な書き方について学ぶ
3. 機械学習の基礎を学ぶ
4. Kaggeleで実際にモデルを書いてみよう!
1.Pythonの環境構築
まずはPythonを動作させる環境をつくりましょう.
環境構築に必要なものは以下の2つです.
- Anaconda
- VSCode
先人たちが記事をたくさん上げてくれているので,それを見てインストールしてください.
Anaconda・VSCode インストール方法
因みにですが,環境構築しなくてもGoogleColabolatoryというGoogle Drive上で気軽にPythonが動かせるものもあります.ですがGPUの使用制限がありますし,自分の環境で動かすわけではないので,守秘義務があるようなデータを使う際は使わない方がいいです.
簡単なモデルなら全然動くので,めんどくさい人は使ってみてください.これからがっつり機械学習するよって人はちゃんとAnacondaをインストールしてくださいね.
Google Colab 使い方
2.Pythonの基本文法
まずはPythonについてお勉強をしましょう.
Pythonの書き方は知ってるって人は飛ばしてください.(DeepわからないのにPythonわかる人がどれくらいいるのかはわからないけど…)
探せば山のように出てきますが,本当に簡単なものだけだと自分は練習問題55本ノックをやりました.
後は,Numpy100本ノック・Pandas100本ノック等たくさんノックをしてくれます.
どこかの監督と違ってちゃんとしたノックなので,自分に必要なものをこなしておきましょう.
(え明日試合?)
後は競技プログラミング等にトライするのも良いと思います.AOJやAtcoderですね.
Atcoderは緑ランクくらいになると就活でも好印象だと聞いたことがありますよ👂
3.機械学習の基礎
次にDeepLeaningの基礎知識を学びましょう.
概念的な部分は,Qiitaの別記事でまとめてあります.
コードについては調べればたくさん出てくると思います.
Pythonには機械学習用の様々なライブラリが用意されています.大体は,PytorchかTensorflowのどちらかを使います.Chainerで書いてるコードもたまにありますが,あれはオススメしません…(メジャーアップデートが終了したとも聞きました👂)
私はPytorch派閥なので,ここではPytorchについてお話します.最近の論文に付属しているコードもPytorchの方が多い気がします.これも先人の記事を拝借しましょう.Pytorch超入門
私のQiitaにもPytorchで様々なタイプのDeepを書いたコードを載せています.参考程度に確認するのはいいかもしれません.
因みにですが,DeepLearning (深層学習)は機械学習に内包されています.AI ⊃ 機械学習 ⊃ 深層学習 のイメージです.
4.実際にモデルを書こう!
では実際にモデルを書いてみましょう.
こういう時には大体MNISTが使われますが,あれはデータ前処理なしでそのまま入れればそこそこいい結果がでます.研究等では,元のデータそのままでは上手くいかないことが多いと思います.そのため,データ解析→データ前処理→モデルへ導入 という流れが必要です.
それを学ぶためにKaggeleのチュートリアル的なコンペであるTitanic - Machine Learning from Disasterをやってみましょう.
このコンペはタイタニック号の乗客に関するデータを用いて,事故で生存したか否かを予測するタスクです.データには欠損値が多かったり,予測に必要のない特徴量があったりと,良い精度を出すにはデータの解析と前処理が必要です.このデータ解析・前処理は非常に良い勉強になると思います.また,Kaggeleでは他の人が公開しているコードを見ることもできます.上級者のコードをみて勉強するのも◎です.
精度80%程度で上位2%くらいには入るので(チュートリアル的なコンペなので,みんなガチじゃないだけかもだけど),それくらいを目指してコードを書いてみましょう.
Kaggeleには,画像処理タスクなどもありますので,様々なモデルを学ぶことができます.どんなタスクに対してもモデルを考えられるようになればカンペキですね👍
さいごに
はじめてQiitaを書きました!
今後もNNについて学んだことをまとめがてら共有する記事を書いていく予定です