確率的勾配降下法を書こうと思い, 学習の参考となる実装を Webで探してみると Python実装が多く, 中でも NumPy, Matplotlibを使っている例が多かった。[1] せっかくなので Go (1.4.1)で書いてみようと思い Goで NumPyにあたる行列計算パッケージと Matplotlibにあたるプロット系のパッケージを探していたところ, gonum/matrix と gonum/plotが, 良さそうで触ってみた。 gonum/matrix gonum/matrix はGoの行列計算パッケージ。内部的には blas (Basic Linear Algebra Subprograms)を使っている。 numpy との対応関係を探すのに時間がかかってしまった。Dense, Matrix, Vectorあたりの型を覚えないと上手く使いこなせないかも。 行列積, 要素積, 内積
前に書いた【MSGD】Goで確率的勾配降下法を書いてみた【gonum/matrix】 の続きで goroutine で MSGD (Mini-batch Stochastic Gradient Descent)を並行処理化してみました。 参考にさせて頂いた書籍は, オンライン機械学習 (機械学習プロフェッショナルシリーズ)です。 確率的勾配降下法の並列化 前回は Minibatch に分割して Minibatch単位で パラメータを更新する MSGD を書いた。 確率的勾配降下法 (に限らずオンライン学習に関する最適化手法?) の並列化について, 大まかに下記の3つのアプローチがある。 Bulk Synchronous Parallel(BSP) : 各プロセスが1回同期するたびに全体を同期する Parallel SGD : 各プロセスで学習し, 最後に1度だけパラメータベクトルの平均を計
ちょっと前に話題になってたんですが、何でもCRANに確率的勾配降下法(Stochastic Gradient Descent)を実装した{sgd}というパッケージが公開されているそうで。JSS掲載予定のVignetteもあるみたいです。 CRAN - Package sgd Stochastic gradient decent methods for estimation with large data sets ということで、ミーハーかもですが試しにちょっと触ってみようかと思います。ちなみに今回検証に用いたマシンはWindows 7 (64bit)、8コア (3.60GHz)、メモリ32GBというスペックです。 確率的勾配降下法について 最近はMLPシリーズとか良いテキストが沢山出ているので、そちらでも読んでみて下さい*1。 オンライン機械学習 (機械学習プロフェッショナルシリーズ) 作
精度を問わず簡単に使える分類器が欲しかったので、Common Lispでナイーブベイズ分類器cl-naive-bayesを作りました。 github.com 使い方は簡単です。まずは学習。学習結果を保持するlearned-storeを用意した後は、learn-a-document関数にこのstore,ドキュメント = 単語のリスト*1,カテゴリ(スパムメール判定であれば「スパム」or「非スパム」)の3つを渡すだけです。 (defparameter *store* (nbayes:make-learned-store)) ; (カテゴリ 単語のリスト) (defparameter *documents* (list '("A" ("a1" "a2" "a3" "a4" "ab")) '("A" ("a3" "a4" "a5" "a6")) '("B" ("b1" "b2" "b3" "b4"
Gradient Boosting Decision Tree(GBDT)を勉強したので、その概要とRでのパッケージの簡単な使い方を乗っけておきます。 1. そもそもGBDTってなんだよっていう話。 単純に言えば、複数の決定木を作成して、集団で学習させる方法の事です。 1本決定木を作り、上手くモデルで説明が出来なかったobservationに対して重みを付け、重みのついた状態で次の木を作り、また重みを付けて・・・ というステップを指定した本数分だけ繰り返します。 誤差に対して学習しなおしてくれるので、決定木よりもっと良いモデルが出来上がります。 理論の詳細はこちらの本を参考にしていただければと。 英語版は著者サイトで無料公開されています。英語大丈夫な人はこちらを参照するとよいかと。 http://statweb.stanford.edu/~tibs/ElemStatLearn/ あとこのイ
統計学とか機械学習周りの本を読んでいると,何の説明もなくややこしい数学記号が出てきて,そういえばこれはなんだっただろう? と途方に暮れてしまうことが少なくないので,自分用にまとめなおしてみました,というのが今回のエントリ.あくまで自分用なので,全部の数学記号を扱ってるわけではありません*1. 代数学 記号 意味 用例 用例の意味 備考 総和 要するに足し算 総乗 要するにかけ算 クロネッカーのデルタ i=jなら1,それ以外なら0 要するにブーリアン条件 ナブラ *2 3次元ベクトルの微分 要するに各要素の微分 ラプラシアン 3次元ベクトルの2階微分 要するに各要素の2階微分 下限 のとき与式は0になる との違いは,は当該値を含む必要があるが,はないこと 上限 との違いは,は当該値を含む必要があるが,はないこと 関数値が最大となるような定義域の元の集合 を最大にするような がの下にくる場合も
Sections Sections Principal Component Analysis PCA and linear dimensionality reduction Nonlinear dimensionality reduction Kernel functions and the kernel trick Gaussian radial basis function (RBF) Kernel PCA Implementing the RBF kernel PCA step-by-step 1. Computation of the kernel (similarity) matrix. 2. Eigendecomposition of the kernel matrix. Examples of RBF Kernel PCA Half-moon shapes Linear PC
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く