Pythonと機械学習

Pythonも機械学習も初心者ですが、頑張ってこのブログで勉強してこうと思います。

機械学習

RNN

目次 目次 はじめに RNNブロックの順伝播 RNNブロックの逆伝播 損失関数(2乗誤差) 特徴量データと目標値データの時間の個数が合わない場合 はじめに RNN(Recurrent Neural Network)は、時間に依存したデータのパターンを学習してくれるネットワークです。 今…

多層パーセプトロンの実装

目次 目次 はじめに 活性化関数の実装部 ソフトマックス関数の実装部 全結合の実装部 多層パーセプトロン実装部 学習実施 scikit-learnで実行した結果 Kerasで多層パーセプトロン 学習履歴の比較 はじめに 前回、前々回は多層パーセプトロン理論編でした。今…

行列演算と計算グラフ

目次 目次 はじめに 行列と行列の和 行列とベクトルの和 分岐 行列と行列の積 行列と行列のアダマール積 活性化関数 ソフトマックス関数 交差エントロピー 多層パーセプトロンの計算グラフ はじめに 多層パーセプトロンの実装を考える際に、テンソルの全ての…

多層パーセプトロン

目次 目次 はじめに 3層パーセプトロン 損失関数の重み勾配 バックプロパゲーション 行列表記 多層パーセプトロン 順伝播 全結合 活性化関数 損失関数(交差エントロピー) 逆伝播 誤差計算 バックプロパゲーション 損失関数の重み・閾値勾配 追記 はじめに 前…

多クラス分類ロジスティック回帰の実装

目次 目次 はじめに 活性化関数・損失関数の実装 ソフトマックス関数 交差エントロピー 交差エントロピーの重み勾配 多クラス分類ロジスティック回帰クラス 分類の実施 scikit-learnの多クラス分類結果 はじめに 前回、多クラス分類ロジスティック回帰の記事…

多クラス分類ロジスティック回帰

目次 目次 はじめに モデルの概要 One-hot表現 ソフトマックス関数 ソフトマックス関数の微分 交差エントロピー 交差エントロピーを重みで微分 行列による表記 特徴量行列 特徴量行列×重み行列+閾値 活性化関数(ソフトマックス関数)の出力 損失関数(交差エ…

k近傍法

目次 目次 はじめに k近傍法のアルゴリズム 距離指標 自作スクリプト スコア比較 決定領域 自作スクリプト版 scikit-learn版 はじめに 最初は機械学習に対し、何かよく分からないマシーンが人間の様に学習しているイメージを持っていましたが、最近は学習と…

ランダムフォレスト

目次 目次 はじめに ブートストラップサンプリング 特徴量の重要度 自作スクリプト スコアと特徴量の重要度比較 決定領域 自作スクリプト版 scikit-learn版 おわりに はじめに ランダムフォレストは複数の決定木学習による多数決で学習結果を決定するアルゴ…

決定木アルゴリズムを実装してみる

目次 目次 はじめに 再帰呼び出し 決定木のチャート図 決定木で使われる乱数 特徴量の重要度 自作スクリプト テスト結果のスコア比較 特徴量の重要度比較 決定領域比較 自作版の決定領域 scikit-learn版の決定領域 決定木チャート図比較 自作版のチャート図 …

決定木アルゴリズム

目次 目次 はじめに ジニ不純度 情報エントロピー 情報利得 具体例 不純度指標にジニ不純度を使った場合 不純度指標に情報エントロピーを使った場合 参考 はじめに 今まで何も考えずに決定木を使っていましたが、どういうアルゴリズムなのか調べてみることに…

サポートベクターマシンを実際に試してみる

2次計画法のスクリプトが出来たので、サポートベクターマシンに実装してみます。 サポートベクターマシンにおける最小化すべき目的関数は、 制約条件は、 になります。重みが設計変数になります。 これらを行列形式で表します。(トレーニングサンプル数は、…

2次計画法

ラグランジュ乗数の意味 サポートベクトルのマージンを最大化するために、ラグランジュの未定乗数法を等式制約から不等式制約がある場合に拡張する必要があります。 ラグランジュの未定乗数法を不等式制約がある場合に拡張した最適化アルゴリズムを2次計画法…

ラグランジュの未定乗数法

最適化問題 世の中には非常に多くの最適化問題が存在します。ある条件の下で、この値を最適化したい等、良く耳にすることが多いです。 燃費低減の為自動車のエンジン軽くしたい。でもあまり軽すぎると強度が心配。強度を保ちつつどこまで軽くできるか?等、…

サポートベクターマシン

名前だけ聞くとなんか凄そうなマシンに聞こえますね。 サポートベクターとはベクトルの事です。トレーニングサンプルを特徴量空間の位置ベクトルとしてみています。 決定境界に一番近いトレーニングサンプルの事をサポートベクトルといいます。サポートベク…

ロジスティック回帰を実際に試してみる

少し考えてみましたが、コスト関数である対数尤度は活性化関数の出力が教師データに近づくにつれ、0に漸近していくようです。 計算機上ではにするとが-∞に発散してしまうので値を求めることができないですが、解析解としては0に漸近します。 したがって、の…

ロジスティック回帰

ロジスティック回帰はADALINEに確率的な解釈を与えたアルゴリズムです。 活性化関数とコスト関数に対し、ロジスティック関数と尤度を用いています。ADALINEとの違いは、この活性化関数とコスト関数だけです。 ここでは、ロジスティック関数と尤度の概念を学…

確率的勾配降下法

ADALINEでは、全てのトレーニングサンプルからコスト関数の勾配を求め、コスト関数が小さくなる方向に向かって重みを更新していました。その為エポック毎に重みが更新されることになります。 これに対し、1トレーニングサンプル毎にコスト関数の勾配を求め、…

ADALINEを実際に試してみる

パーセプトロンの時と同様に、アヤメのデータを使ってADALINEの挙動を見てみましょう。 numpyの行列表記を使ってやれば、前回のパーセプトロンのコードを少しいじるだけでいけそうです。 以下のスクリプトは、学習率と最大エポック数を変化させて4通りの結果…

ADALINEのコスト関数を行列で表記

ADALINEのコスト関数、またその勾配は、行列で表してやると非常にすっきりと書くことができます。 numpyでは行列演算が可能なので、コーディングの際もそのまま行列として扱うことができて便利です。 numpy内で行列演算が最適化されている(はず)なので、for…

ADALINE

ADALINEはパーセプトロンの改良版です。 ここで覚えておきたいことはコスト関数という概念です。 パーセプトロンでは活性化関数としてヘビサイド関数という変な関数で出力を1か-1の2値に無理やりしていましたが、ADALINEでは適当な係数をかけることで連続値…

パーセプトロンを実際に試してみる

前回まででパーセプトロンが具体的にどんなものかわかりました。 更に理解を深める為には、やはり実際に自分で作ってみるのがいいと思います。 テキストにスクリプト例が載っていましたが、どうも分かりずらいので自分でわかりやすい様にコーディングしてみ…

パーセプトロン

10年くらい前にニューラルネットワークに興味を持ち、本を買って勉強したことがありましたが、非常に難しくて挫折した覚えがあります。 その本にもパーセプトロンが一番最初のニューラルネットワークモデルとして紹介されていました。 トレーニングサンプル…

Pythonと機械学習のお勉強

私は理論よりも実践を重視しようと考えてますが、やはり知識は必要です。 これまでBitcoin投資にscikit-learnを使う環境を作ってきました。しかし決定木アルゴリズムだけではどうもうまく行かなそうなのでもっと知識をつけようと思います。 Kindle版で通常よ…