【Rで機械学習】ニューラルネットワークを自作してみる。

やっぱりニューラルネットワークの基礎くらいはきちんとおさえておいた方が良いだろうなぁ、ということで、取り急ぎこちらの書籍を読んでみました。

ニューラルネットワーク自作入門

ニューラルネットワーク自作入門

基礎から丁寧に解説してくれている本です。前提となる知識はほぼ不要です。行列の積と微分がちょっぴり出てきますが、それも必要な解説はすべて含まれています。これを読めばニューラルネットワークの基礎の基礎はひとまずおさえられるはず、という作りになっています。
この本の良いところは、実際にPyhtonでニューラルネットワークを作ってみよう、というところで、中に実際のコードが記述されてあります。ニューラルネットワークの基礎はそれほど難しくありませんから、Pythonのコードも非常にシンプルです。Pythonの入り口に立つのにも良いのではないかと思います。

さて、じゃあ自分でもやってみよう、と思ったのですが、さすがにここでPythonのコードを丸パクリするのはどう考えてもまずいので、本書に記載されているPythonのコードをRに置き換えてみよう、ということをやってみました。

続きを読む

【書籍紹介】統計から機械学習への橋渡しのための5冊~線形モデルと線形代数~

統計の上級を目指すにせよ、機械学習に進むにせよ、線形モデルの考え方は必ず通らなければならない勘所と思っています。
統計の基礎では確率分布や検定の考え方に触れますが、あまり線形モデルの話は出てこないように感じるためです。機械学習の基礎にあたるパターン認識においては確率分布と線形モデルの考え方が非常に重要で、線形モデルの考え方をきちんと理解するためには行列の演算が必須になってきます。理系の方でしたら高校、大学の段階でしっかり線形代数を学ぶのでしょうが、文系で心理学等の統計を必要とする専門に進んだ場合、線形代数をほとんどやらずにきてしまうことが多いのではないでしょうか。
昨今、学習コストの低いPython等のプログラミング言語の登場で機械学習に容易に触れられる機会が増えてきました。これまで統計をやってこなかった方でも、コーディングそのものは容易です。一方で、その理論的背景を知らず、提供されているパッケージをただただ使う、という状況にも陥りやすいのではないかと考えています。自分自身の反省も込めて。
ということで、今回は確率分布や要約統計量、検定の考え方等の統計の基礎を学び、もっと高度な分析をやりたい、であったり機械学習に進みたい、と考えておられる方々向けに、こういう書籍を読んでみたらどうかな、というご提案です。

※個人的に「この順番で読み進めていくと良いかな」と思う順番に紹介しております。

続きを読む

【Rで自然言語処理】Rからjuman++を動かし形態素解析の結果を受け取る on Windows10

いまから半年くらい前ですか。juman++をインストールしようとしてどうしてもうまくいかなかったのでした。
wanko-sato.hatenablog.com
が、ここ最近ふと思いついてあれこれ試してみた結果・・・

ついにうまくいきました!!!

といっても、実際にやっていることはかなり面倒なことなんですが。。。
いやいや、最初の設定が面倒なだけで、設定が済んだらあとは大したことないですよ、うん。

というわけで、実際にどんなことをしているのか、と、そこに至る設定の方法を書いていきます。

続きを読む

【Rで自然言語処理】単語の出現パターンをクラスタリングする。

前回、前々回とトピックモデルに関する話題を扱いました。
wanko-sato.hatenablog.com
wanko-sato.hatenablog.com
トピックモデルは嫌いじゃない、むしろ好きなんですが、結果の解釈が面倒なのと、やっぱり確率分布を使うため、結果にどこかふわっとした感じが残るあたり、どうにもモヤってしまうのです。もちろん、そういうのを織り込み済みであることを分かってもらえれば良いのですが、LDAはどうにも説明がややこしいところがございまして、簡便な方法で、細かい説明をしなくてもすぐにわかってもらえる指標ってないのかなぁ、とあれこれ考えているところでございます。
その中でも、最近思いついた中で個人的にヒットしているのが「単語の出現パターン」でございまして。今日はそのお話をしようと思います。

続きを読む

【Rで自然言語処理】トピックモデルによる文書分類結果の妥当性を検証する。

前回、トピックモデルのLDAを用いて文書を分類し、その結果をjavascriptで可視化する、ということをやりました。
wanko-sato.hatenablog.com
ただ、その結果が本当に妥当なのか、正直自信がありませんでした。一応は3Dプロットで、検索ワードと文書分類がほどほどかみ合っていることは確認しましたが、あまりにざっくりしすぎてきちんとした検証を行っていませんでした。
というわけで、前回使ったデータと結果をもとに、得られた結果が実際のところどんなものなのか、じっくり見ていきたいと思います。

続きを読む

【Rで自然言語処理】トピックモデルの階層構造をどうにか可視化したい。

もう7月ですね。
統計検定、終わっちゃいましたね。
結果云々を一切書いてないってことはお察しということで。
※というか、6月末だと思い込んでいて、余裕ぶっこいていたら申し込みすらすっかり忘れていた、というオチです。

はい、というわけで、今回はトピックモデルのお話です。
ふと思ったらトピックモデルを本来の用途で使った記事を書いたことがなかったなぁ、と。
wanko-sato.hatenablog.com
こんなのは書いたけれども、扱ったのは数字の集合だったわけで、さすがにこれで「トピックモデルやりました」とは言いづらいかなぁ、と。

続きを読む

【Rで機械学習】LSTM-RNNの予測結果を考察する。

前回、sinカーブを学習データとしたLSTM-RNNによる学習と予測の実験を行いました。

wanko-sato.hatenablog.com

その結果、比較的良好な予測結果が得られたわけなんですが、果たして本当にそれだけで満足して良いのだろうか?とふと疑問に思いました。というのも、そもそもLSTM-RNNの予測は学習されたモデルから確率分布を用いてサンプリングしてくるものなので、どうしても確率的な振る舞いが混入してきます。その確率的な振る舞いがどのようなものであるのか、きちんと把握した上でないと、予測結果の良しあしは判断できないのではないか、と考えたのです。

続きを読む