仕事ではじめる機械学習はPythonの基礎を身につけた後、Kaggleの前に読みと良い
本格的に機械学習を基礎から学習しています。
ということでまず読んだのは以下の本。
改めて機械学習に関するアルゴズムには様々なものがあることを知りました。そしてデータの傾向を見ながら色々なアルゴズムを試すことが重要ということも。
読んでいて、Kaggle本で使われていた用語もチラホラ見かけ、Kaggle本を読む前に目を通しておくと良かったと思いました。
その一方、統計分析の知識、Pythonの知識があってこそ分かるパートも多かったので、これらの基礎は身につけた上で読んだ方がいいと思います。
以下は読書のメモです。
・分類
パーセプトロン:線形分離可能な問題のみ解ける
ロジスティック回帰:
SVM:非線形ななめらかな超平面を学習でき、カーネルというテクニックを使い
線形分離できるようにする
ニューラルネットワーク:パーセプトロンを多層にしたもの
k-NN:未知のデータを近くの既知のデータから探索するアルゴズム
決定木:線形分離は苦手、クラスごとのデータ数に偏りがあるデータは苦手
ランダムフォレスト:複数の木を並列で学習
GBDT:予測した値と実際のズレを目的変数として考慮
・回帰
線形回帰、多項式回帰
Lasso回帰、Ridge回帰、Elastic Net
回帰木
以下、教師なし
階層的クラスタリング
k-means
・次元削減
PCAが有名だが、最近はt-SNEも可視化ができて人気
・その他
推薦、異常検知、頻出パターンマイニング、強化学習
学習結果の分類の評価には正解率、適合率、再現率があり、適合率と再現率を組み合わせたものがF値。混合行列は、予想と結果をPositiveとNegativeでクロス集計したもの。混合行列をみながらどれくらいの性能があればよいか考える。
回帰の評価には、平均二乗誤差、決定係数がある。また機械学習にはABテストを使うのも良い。
システムに機械学習を入れる流れ
1 問題を定式化する
2 機械学習しないで良い方法を考える
3 システム設計・誤りをカバーする方法を考える
4 アルゴリズムを選定
5 特徴量、教師データとログを設定
6 前処理をする
7 学習・パラメータチューニング
8 システムに組み込む
またクラウドソーシングとして、amazon mechanical turkやyahooクラウドソーシング、crowdなどがあると知りました。一度受けてみようかな。