医療職からデータサイエンティストへスマートフォン用の表示で見る医療職からデータサイエンティストへ統計学、機械学習に関する記事をまとめています。R前回は機械学習において最も基本的なアルゴリズムである最急降下法を使って、重回帰モデルを作成しました。www.medi-08-data-06.work今回は、最急降下法とロジスティック回帰モデルを使って機械学習の醍醐味である分類問題を扱っていきたいを思います。コードを書いてありますので、参考にしてみてください。損失関数を最小にする値を微分によって少しずづ求めていくアルゴリズムでした。重回帰モデルでは、以下の損失関数を最小にしましたね。今回のロジスティック回帰では、予測したいアウトカム(y)は二値、つまり0or1となります。アウトカムが二値なので、上記のような損失関数は使えません。そこで、ロジスティック回帰では二項分布の対数尤度を最大化するようにパラメーターを求めていきます。www.medi-08-data-06.work式で表すと、となります。関数hは、シグモイド関数(ロジスティック関数)つまり、クラスが1となる確率が帰ってきます。対数尤度の最大化なので、マイナスをつけると最小化におきかわるので、これをコスト関数と定義します。このコスト関数をそれぞれのパラメーターで偏微分すると、で偏微分で偏微分となります。偏微分の導出はこちらがわかりやすいです。技術評論社あとはこれをベクトルに書き直し、最急降下法の式に入れてとして、パラメーターを求めていきます。これは前回もやりましたね。家賃が連続量であるため、家賃の中央値より高いか低いかの二値に変換して、どちらのクラスに分類されるかを予測してみます。予測に使う変数は前回同様、部屋の広さと低所得者の割合です。Xとyを定義してグラフにしてみましょう。0,boston.target)))#可視化plt.scatter(data.RM[y==1],data.LSTAT[y==1],color="r")plt.scatter(data.RM[y==0],data.LSTAT[y==0],color="b")plt.xlabel("Room")plt.ylabel("LSTAT")plt.show()どうやら部屋の広さが大きくなるほど、低所得者の割合が小さくなるほどクラス1に分類される物件が多そうですね。これをロジスティック回帰モデルでクラス分類してみます。シグモイド関数と、コストの格納・パラメーター更新を行う関数を定義しておきます。[cost,theta]前回とほとんど同じですが、ロジスティック回帰モデルの式に合わせてコスト関数とパラメーター変換の式を変えてあります。grad_descでは、更新されたパラメーターのベクトルが返ることに注意しましょう。これで準備が整いました。実際にパラメーターをもとめてみます。-0.36485182]#コストの可視化plt.plot(cost)plt.xlabel("Cost")plt.ylabel("Iteration")plt.show()イテレーションが増えるほどコストが減っているようなので、うまくいっているようです。試しにsklearnを使ってロジスティック回帰を行った結果と比較してみましょう。]]若干違いますが、大体あっているようです。大きく異なっているようだと最急降下法がうまく収束していない可能性があります。ここからいよいよクラス分類をしていきます。先ほど求めたパラメーターとシグモイド関数を使って、クラスが1となる確率が0.5を超えた場合にクラス1と予測をします。0.83約84%の正解率みたいですね!ただし、今回はトレーニングデータのみの正解率で、新たなデータに対するモデル性能評価はしていないことに注意しましょう。ついでに先ほどのグラフに決定境界を書いてみます。決定境界の書き方はこちらを参考にしました。x2_mesh.max())plt.scatter(data.RM[y==1],data.LSTAT[y==1],color="r")plt.scatter(data.RM[y==0],data.LSTAT[y==0],color="b")plt.xlabel("Room")plt.ylabel("LSTAT")plt.show()うまく分類できているようです!ちなみに、ロジスティック回帰モデルは見ての通り線形にしか分離ができません。まとめロジスティック回帰モデル単体で使う機会は少ないですが、ニューラルネットなどのモデルを作る際の基礎的な部分が共通しています。応用的な機械学習モデルを作る際には、是非ともマスターしておきたいところです。※本記事は筆者が個人的に学んだことをまとめた記事なります。所属する組織の意見・見解とは無関係です。数学の記法や詳細な理論、用語等で誤りがあった際はご指摘頂けると幸いです。参考pythonで機械学習を始めるにはまずはこの書籍から始めるのが良いかもしれません。多くの機械学習モデルを網羅していて、これ一冊をマスターするだけでも、最低限実務で使えるレベルまでになるかと思います。11:51初歩からの機械学習:ロジスティック回帰~PythonとRでスクラッチから~Tweet関連記事2020-01-08時系列予測パッケージ{prophet}を使って、ブログアクセス数を予測する。はてなブログPro大学院で疫学統計を学んでいます。データサイエンティストを目指して、初心者目線から統計学、機械学習など学んだことをまとめていきます。パッケージ{prophet}を使って、ブログアクセス数を予測する。medi_data0826スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。