えんじにあのじゆうちょうスマートフォン用の表示で見るえんじにあのじゆうちょう勉強したことを中心にアウトプットしていきます。機械学習はじめに結局、使ってみたとしても、数式だけ読んだとしても、案外実際の動きを理解できないことは多いと思います。これから、色々な機械学習モデルの学習についてコードをイチから書きながら考えてみようと思います。(以前も少しやってますが、ちょっと細かめに書きます)まずは第1段として、線形回帰の中でも最もシンプルな単回帰を例にやってみます。ロジスティック回帰、決定木くらいまではとりあえずやってしまう予定です。実装ゴール最終的にはSimpleLinearRegressionクラスを実装します。できるだけ、scikit-learnなどのインタフェースに合わせたふうにします。解説はこれからなものもありますが、初期化ブロック内は以下のようにします。加え、学習率etaと最大の繰り返し回数を定義しています。以下のようになります。解説は必要ありませんね。誤差関数として二乗和誤差を定義していきます。して定義されますので、素直にそれを実装します。勾配降下法はモデルの予測値と真の値の誤差関数を設定し、その誤差を最小化することで最適なパラメータを求めようとする動きです。基本的に、誤差関数をパラメータについて微分して、そのパラメータが最小化する方向へパラメータを動かしていきます。上で記載したとおり、誤差関数には二乗和誤差が設定されます。現在のパラメータを元にモデルが出した予測値です。表現されますので、改めて代入してみると、のようになります。関する二次関数になっています。傾きがゼロとなる点が存在していて、そこが最小値です。それを求めるために偏微分します。おける傾きが算出できます。修正していけばいいのですが、一度にやると行ったり来たりしてしまい、中々収束しないという自体に陥ります。設定し、それを乗じた値でパラメータを更新します。0.01など小さい値になります。結果的に、コードは以下のようになります。len(x)呼び出し元ここは基本的に決めた回数分、学習をループするだけになります。X)全体それでは最後に全体をすべて通しで記載しておきます。self.b実際に予測してプロットしてみる今回は適当にirisのデータセットからそれらしく使えそうなところだけ抜き出して使います。color="blue")こんなデータです。実際に適用してみましょう。reg.predict(x_range))それらしい線を引くことができました!正解が気になる方は、scikit-learnなどのLinearRegressionを実行して確かめてみてもいいかもしれません。まとめ今回は単回帰を勾配降下法を用いて実現する方法について、Pythonコードを交えながら解説しました。非常に単純ですが、勾配降下法は他のモデルでもよく出てくるので、意味をしっかり理解しておくと良いように思いました。(1)認定はてなブログをはじめよう!marufeuillexさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。