Coursera Machine Learning - Week3-1 Classification
CourseraのMachine Learningについてまとめています。 前回は、Week2 Linear Regressionについてまとめました。
今回は、Week3のまとめです。Week3では、Classification(分類)とRegularizationについて学びます。少し長くなりそうなので、2回に分けて記載します。
Logistic Regression
Classificationは、以下のような問題で利用します。
- Eメールのスパム判定
- オンライン取引が詐欺か否か
- 腫瘍が悪性か否か
具体的には、悪性腫瘍の予測では、下記のように、腫瘍のサイズによって悪性かどうかを判別します。(y=1だと悪性、0だと良性)
結果が0か1かなので、0.5をしきい値として、Hypothesisが0.5以上なら悪性、0.5未満なら良性と判断し、0~1の間の値を取るモデルを構築します。具体的には、Logistic Regressionでは、下記のモデルを用います。シグモイド関数ですね。
シグモイド関数gは、下記グラフのように、z=0で0.5をとります。今回は、hが0.5以上、つまり、θTxが 0以上の際に悪性と判断され、hが0.5未満、θTxが0未満の際に良性と判断されます。
また、パラメータθを求めるためのコストですが、Logistic Regressionでは、以下のように定義します。
緑色のグラフがy=1, Cost = - log(h) で、赤色のグラフが、y=0, Cost = - log(1-h)です。y=1の場合は、hが1となればコストが0となりますが、hが0に近くとコストが無限大に大きくなります。y=0の場合はその逆です。
各トレーニングデータのコストを計算し、平均を取ればLogistic regressionのコスト関数になります。
Logistic regressionのGradient Descentは、このコスト関数をθに関して微分すればよく、計算すると下記の数式になります。
Optimization algorithm
ここまで、Optimization algorithmとしてGradient Descentを用いてきましたが、Week3では、下記の他の手法もさらっと紹介されます。
- Conjugate gradient
- BFGS
- L-BFGS
これらのアルゴリズムの利点としては、Learning rateをマニュアルで設定する必要がない、Gradient Descentより高速な場合が多いといった点が挙げられ、欠点としては、Gradient Descentより複雑だとのことです。各手法の具体的な中身の紹介はありませんが、Octaveで用意されている関数を用いれば、これらのアルゴリズムも簡単に利用できるとのこと。
Multi-class classification
ここまで、Eメールがスパムか否か、腫瘍が悪性か良性かといった1か0の問題を扱ってきましたが、複数のクラスの場合の対応についても説明があります。複数のクラスの場合とは例えば、以下のような分類のケースです。
- Emailのフォルダ分け:仕事関連、友達関連、家族関連、趣味関連
- 医療診断:病気ではない、風邪、インフルエンザ
- 天気:晴れ、曇り、雨、雪
Multi-class classificationでも、やることはBinary classificationの場合と同じで、クラスごとに、そのクラスか否かのBinary classificationを行い、その結果をまとめるとMulti-class classifiationが行えるということのようです。
個人的な疑問ですが、クラスが分からないもの、つまり画像認識とかで今まで見たことがないものが出てきた場合は、どうするんでしょうね。知らないものであれば、Unknownとするのがいいように思えるのですが、このMulti-class classificationでは、一番近いと判断されるクラスに分類されるはずです。今度時間があるときに調べてみようと思います。
次回は、Week3の後半、Regularizationについてまとめます。
コース全体の目次とそのまとめ記事へのリンクは、下記の記事にまとめていますので、参照ください。
Coursera Machine Learningまとめ本記事を読んでいただきありがとうございます。
機械学習を実際に使うにあたり、Coursera MLと合わせておすすめしたい書籍を紹介します。
Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
scikit-learnを用いた機械学習を学ぶのに最適な本です。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
Deep Learningと言えばこれ。TensorFlowやPyTorch等のフレームワークを用いずに、基礎の理論からDeep Learningを実装します。Week4、Week5の記事を読んで、より深く理解したいと思った人におすすめです。
Kaggleで勝つデータ分析の技術
データ分析について学び始めた人におすすめです。