Pythonと数学と音楽とetcの落書き帳

かなりテキトーに、断片的に離散的にプログラミングや、音楽やいろいろなことを書いていく。洋楽のレビューのついでにPythonその他のブログや本のノート、備忘録を書いていきます。

MLマラソンon Saturday!

おはようございます、
最近拙い内容を、素早く書くことを意識してたんですが、毎日はブログ書けなくて、Twitterに思考を吐いてしまっている。
なんかTwitterって、良くない気がする。なんかよくない。
フォロワー増やせばよいかな?
思いっきりポジションを取るのと、空気を読むことのバランスを全然掴んでない僕です。
 
 
 
さて作業音楽については、最近AvicciとThe chainsmorkersしか聞いていません。


Avicii - Levels


The Chainsmokers - All We Know (Audio) ft. Phoebe Ryan

作業BGMにノリノリ系はちょうど良いんですよね。

この前久々に歌を歌う機会があったんですが、まあまったく声がでなくなってて、歌えるような曲聴きながら歌おうかなと思いつつも、
最近はPythonのこと調べながら聞いてるので、歌うとそっちの質が落ちるのが嫌なので、
休憩時間と、北海道の雪が溶けてから、宇多田ヒカル、Adele、Bruno Marsあたりすらすら歌っていきたいですね。
 
 
 
 

 Introduction

 
さて!
今のバイト先の自然言語処理に加えて、なんと僕がAIプログラミングスクールのメンターもしてしまうTragedyがちょっと予測できているので、
せめてMachine learningのPythonパッケージは一通り扱えて、数学的、技術的議論は社会人レベルにできるレベルにしよう!
 
という目論見で、ML関係の教材、自然言語処理のWebsiteをPickして、この土日集中的にやっていこうと思います。
 
どうもダラダラしてしまっていたので、この土日に今からあげるものを全て読んで、コードを動かしていきます。
 
TwitterでフォローしてるPonanza(囲碁AI?)開発者の方がバグが1番学び大きいよね。とにかく実行!Run and Run!っていってたので、
バグに対してもゴチゴチぶつかって、原因解析等をしていきたいと思います。
 
どっかの人たちがMLのことをアドベントカレンダーでまとめてくれてます。
アドベントカレンダープログラマー文化の一つで、12月のクリスマスまでに技術ブログを毎日更新するイベントみたいなものらしいです。
僕の勉強の題材にぴったり!]
とりあえずk-meansのところまでつきすすんでみます。
 
 
 
自然言語処理について、いろいろコードを動かして公開してくれたり、解説してくれたりする、なんとも素晴らしい方にたまたまQiitaで出会いましたので、とりあえずこの人のブログをぼーんって全部読んでみます。
そんなに量なさそうだしね。
 

 

今日のメイン

MLアドベントカレンダー

線形回帰を実装してみよう | Developers.IO

線形回帰、つまり一次式で予測をするModelを作る。(よくわかってない。)
ボストンハウスプライスのデータを使って、(sci-kit learnのデータセット)Kerasなどのライブラリは使わず、Numpyを使って損失関数(は実施してないけど、それを微分した勾配)をしっかり実装、解説してくれていてとてもよかった
 
あと、Pandasがmatplotlibをちょっとwrapしてて、DFを簡単にグラフにプロットできるのを知ったのでよかった
 
あやめ(花)の品種分類。花弁の長さとか、なんやらいろんなのから、多値(品種)分類をする。
ロジスティック回帰って、回帰なん?分類なの?
よくわかんなくなってきたけど、分類に近い気がするよ
 
 

主成分分析を実装してみよう | Developers.IO

 なんかとりあえず多次元なものを低次元のものにする。

ボストンハウスプライスを、行列の固有値分解とか使って固有ベクトルに分解して次元落としてるけど、よくわかんないんだよね。

 

多次元だと、↓の参考記事の理論から、端に集まってしまうからよくないらしい。(厳密なことはようわからん)

参考

次元の呪い、あるいは「サクサクメロンパン問題」 - 蛍光ペンの交差点[別館]

 

 ・

tf-idfについてざっくりまとめ_理論編 | Developers.IO

tf-idfについて勉強したのでざっくりまとめ_pythonでやってみた | Developers.IO

 TF-IDF(Term Frequency- Inverse Document Frequency)とは文章中の単語のレア度、ユニークネスっていうか、

その単語がその文章のアイデンティティなのかそうでないのか測る手法なんですが、それ業務で今ぶちあたったんですよね。

TFは、ドキュメントにどのくらいの頻度で出るのか、

IDFは、どんだけその単語が、それにしか出ないのか、

どちらもレアかつ、選択ドキュメント群のアイデンティティとなるものであればあるほど大きくなるという仕組みです。

似たものでコサイン類似度もどこが絡むのかよくわからないけど使うらしい。

ベクトルのなす角 - Wikipedia

自然言語処理やるなら避けては通れない壁、BoW(Bags of Word)の意味もよくわかんないので、次はそっちも深掘りします。

Working With Text Data — scikit-learn 0.18.2 documentation

上記のtf-idfについての日本語の解説はこちらのものを動かして解説しているだけなので、こちらも読みました。

こっちのTutorialは、tf-idfは特徴量紹介で、ゴールは文章の分類です。

Bags of Wordわかんないね袋?単語の袋??

ちなみにこっちはsci-kitlearnのGrid searchも使っていました。(ハイパーパラメータのチューニングに使う)

 

ナイーブベイズについて勉強したのでざっくりまとめ — pythonでやってみた | Developers.IO

ナイーブベイズもどうやら自然言語処理に関連の大きいものらしい。

学習が高速、かつ実装が容易

このMLアドベントカレンダー自然言語処理よりでよい。

まあ基本は条件付き確率のベイズの定理使うぽいスネー。仮説をたてて問題を単純化するらしい。

TF-IDFと同じじゃないか?クラス(ドキュメント群)とか単語とか、よく見たらさっき貼ったsci-kit learnのチュートリアルで一続きに扱われているみたいですね..

言語モデルにおける未知語の扱いとスムージング | Developers.IO

形態素解析ではなく、N-gramを使って解析することの統計的な話(よくわからんかった)

マルコフ性というのは1つ前の状態のみが現在の状態に影響を与えると仮定したものになっています。
これ僕の専門のランダムウォークの本の微分方程式のところで出てきてました。
この話にもランダムウォーク出ていますね
Markov Chain Monte Carlo
これはalphaGOとかでも使うらしいすねー
Google Page Rankの理論らしい。
なんかこう、数学的に奥が深くなってきても現実とのつながりのあるサービスにしっかり理論の応用ができるGoogleすげえ。
 

k-meansを実装してみよう | Developers.IO

機械学習の分類でも回帰でもないクラスタリングに使われるk-means法の話。

人間がなんか指定するわけではなく、データ群を、機械学習によってふるいにかけて、なんらかの基準で分類する感じ。

セントロイド(初期クラスタの中心地?)を決めて、距離の近いものをあつめて、重心に近づけて、とかいろいろするらしい。幾何学出てきたわ

 

おわりに

12月10日まで進んだ。

エンジニアの12月ってこんなに密度高いんだねって感じです。。

最近自然言語処理さぼってて全然用語わかんねえなって感じです。

3月は別れの時期で、雪解けの時期で、わくわくもあり、捨てるものも有り、いろいろな気持ちなんですが、

とりあえず学校も始まるので、数学の授業に向けて、かつ、今バイトで使ってるところ、社会ではやってるものから数学のウォームアップもしていきます。

Webアプリ開発もしたいから本んも読むし、人も集めるし、

3月つっぱしるぜえええ

今日の午後は、ちょっとマクロに

The Art of Choosing,とMastering Bitcoin、はじめての数論やってこうと思います。

 

選択の科学 コロンビア大学ビジネススクール特別講義 (文春文庫)

選択の科学 コロンビア大学ビジネススクール特別講義 (文春文庫)

 

 

 

Mastering Bitcoin

Mastering Bitcoin

 

 

次に勉強読むものやること

MLアドベントカレンダーどうやらちょっと古いけど同じくなんかまとめてくれてるのあったからこっちも読もうと思う。なんかよくわからない言語使ってるので、理論とかの参考程度かな

ロジスティック回帰をしてみる #alteryx #11 | Alteryx Advent Calendar 2016 | Developers.IO

 

tf-idfがよくわかんなかったんだけど、それ以前にBoWがわかんなかった

【特別連載】 さぁ、自然言語処理を始めよう!(第1回: Fluentd による Tweet データ収集) | DATUM STUDIO株式会社

 

PythonでBag of WordsとSVMを使ったタイトルのカテゴリ分類 - stMind

ここいらが、僕にでもとっつきやすいのかもしれない

 あと↓の本でもうちょっとsci-kit learnの復習をするよ

Pythonによる機械学習入門

Pythonによる機械学習入門

 

自然言語処理の深遠

Hironsan - Qiita

参考