「初心者だけど機械学習を学びたい」「ゼロからAIを作れるようになりたい」という方向けに、最短で機械学習を習得する方法を書いてみました。

目次

やっぱり機械学習ツールはPythonとscikit-learn
機械学習の実装に必要な知識
機械学習のプログラミングは簡単
機械学習のおすすめ勉強法
 STEP1 機械学習の基礎知識
 STEP2 開発手法の知識
 STEP3 プログラミングの知識
 STEP4 機械学習アルゴリズムの知識

※忙しい方は、「STEP1 機械学習の基礎知識」からお読みください。

やっぱり機械学習ツールはPythonとscikit-learn

データサイエンス界のロイター通信的存在であるKDnuggetsから、今年最も利用されたデータサイエンスや機械学習ツールのランキングが発表されました。
top-analytics-data-science-machine-learning-software-2015-2017
元記事:New Leader, Trends, and Surprises in Analytics, Data Science, Machine Learning Software Poll

トップがpythonです。またAnaconda、Tensorflow、scikit-learnなどpython関連のライブラリもトップ10にランクインしています。また前年比から見た伸び率も非常に高いです。

Pythonは名実ともにAIのディファクトススタンダードになりました。我らがscikit-learnも9位と大健闘しています。Pythonとscikit-learnがあれば、機械学習は何とかなるのです。

機械学習の実装に必要な知識

大きく4つの知識が必要です。

①プログラミングの知識

Pythonのほかに、scikit-learn、pandas、numpyなどPython用ライブラリのAPIの理解。

参考記事:これだけは知っておけ!PythonでAI開発の基礎まとめ
参考記事:実務で使うとこだけ!python機械学習(AI)のデータ処理(pandas/scikit-learn)
参考記事:人工知能(AI)を自社に導入したい人はscikit-learnを利用しよう

②機械学習の基礎知識

機械学習の基礎全般。教師あり学習と教師無し学習、回帰と分類、学習と推論。
パターン認識とモデルという概念の理解。

参考記事:人工知能(AI)入門 ~機械学習でできることを解説~
参考記事:あなたは生き残れるか!人工知能(AI)の未来と必要とされる2つのスキル

③機械学習アルゴリズムの知識

ロジスティック回帰、決定木、ランダムフォレスト、SVMなどのアルゴリズム。またディープラーニングの知識。パラメータ学習における線形代数、最小二乗法における微分の知識。

参考記事:ゼロから作るディープラーニングはAIの歴史を変えた
参考記事:ランダムフォレストで特徴量の重要度を評価する

④開発手法の知識

機械学習の開発手法の知識。開発工程、データの前処理、特徴量の設計、モデル開発と評価。

参考記事:【書評】人工知能ビジネスの最大課題は特徴量設計
参考記事:交差検定(クロスバリデーション)など機械学習の評価方法まとめ


他にも、SQLやAWSなどインフラ回りの知識、自然言語処理や画像処理の知識もありますが、csvに収まる構造データを扱う場合はとりあえず不要です。ただ最低限必要な知識が4つもあるので、機械学習に挫折する人が多いんです。

機械学習のプログラミングは簡単

機械学習のプログラミング自体は、驚くほど簡単です。
例えばScikit-learnを使ってディープラーニングで実装したコードが以下の感じです。

#scikit-learnから必要な関数をインポート
import numpy as np
from sklearn.neural_networkimport MLPClassifier
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.metrics import confusion_matrix

#データの読み込み
data = np.loadtxt("neet.csv",delimiter=",", skiprows=1)

#特徴量データをXに、教師データをyに格納
X = data[:, 0:-1]
y = data[:, -1]

#学習データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

#ニューラルネットワークで学習と評価 
clf = MLPClassifier()
print cross_val_score(clf, X_train, y_train, cx=10)

#混合行列で評価
y_predict = clf.predirct(X_train)
print confusion_matrix(y_train, y_predict)

たった13行で実装が終わっています。ライブラリの読み込みを抜いたら8行です。必要な知識を効率的に学ぶことが出来れば、機械学習の習得はそこまで難しくありません。私自身も独学で少し学んだ結果、仕事で機械学習を開発する立場になりました。

機械学習のおすすめ勉強法

学ぶことが4つあるため、学習のステップは4つになります。

STEP1 機械学習の基礎知識

まずは機械学習の基礎をざっくり学ぶ。教師あり学習と教師無し学習、回帰と分類など、初心者向け解説サイトをいろいろネットサーフィンして機械学習のイメージを掴む。

GOAL:「要は機械学習ってパターンを抽出してるんだなー」「教師あり学習が基本で目的変数と説明変数があるんだなー」

STEP2 開発手法の知識

機械学習のモデルの作り方の基礎を学ぶ。データの前処理、特徴量の設計、モデル開発と評価という4工程があること、それぞれの工程で何をするかをざっくり学ぶ。機械学習の専門ブログか技術書を斜め読みして理解していく。

GOAL:「欠損値は平均値で補完しとけばいいかなー」「外れ値はグラフ作って見ればいいかなー」「モデルの評価は交差検定と混合行列だよなー」

STEP3 プログラミングの知識

Pythonの基礎文法と、scikit-learn、pandas、numpyなどPython用ライブラリのAPIの理解。プログラミングは慣れの部分が大きいので、paizaラーニングとかでひたすらプログラミングに触れる時間を作る。pythonがある程度理解出来たら、scikit-learnのコードを写経して理解していく。一番のおすすめはpython機械学習プログラミング。お金がなければ、ネットのコードを写経していく。

GOAL:「pandasのデータ処理便利だなー」「fit関数で学習させればいいんだよなー」「パラメータはグリッドサーチしとけばいいなー」

STEP4 機械学習アルゴリズムの知識

機械学習アルゴリズムは、まず決定木、ランダムフォレスト、SVMあたりを理解していく。決定木は直観的にわかるので最初に学びたい。SVMやロジスティック回帰も分類問題ではよく利用されるので理論的な部分含めて理解したい。

本丸のディープラーニングの知識は、ネットで分かりやすい解説がたくさんあるので、しっかり読み込んで理解したい。一番のおすすめは、ゼロから始めるディープラーニングの本。お金がなければ、ネットだけでもOK。理論を解説してくれている論文もネットに転がっているので、斜め読みすると理解が進む。

GOAL:「ディープラーニングって計算結果と答えの誤差関数を最小二乗法でぐるぐる回してるだけなんだなー」「SVMのCとγパラメータ増やすと過学習しやすいなー」「アルゴリズムは難しいけどscikit-learn使っとけばなんとかなるなー」



いかがでしょうか。機械学習を最短で学べる方法について書きました。
機械学習がこれからの未来を大きく変える技術ならば、機械学習の知識は、あなたの未来を強く明るく照らしてくれるはずです。