2013年10月30日

Lagrange未定係数法

I'll write down the idea of "method of Lagrange multiplier" here for my note. For simplicity, the number of variables would be 3.

Supposedly, a function $\psi: \Omega \to \mathbb{R}$ differential for each variable, and satisfies a restriction $\psi(x,y,z)=0$.
If a function $f : \mathbb{R}^3 \to \mathbb{R}$ realizes extremal at $p=(x_0, y_0, z_0)\in \Omega \subseteq \mathbb{R}^3$, then the following equations would be true for some constant $\lambda\in\mathbb{R}$:

$\displaystyle \frac{\partial f}{\partial x}(p)-\lambda\frac{\partial \psi}{\partial x}(p) =\frac{\partial f}{\partial y}(p)-\lambda\frac{\partial \psi}{\partial y}(p)=\frac{\partial f}{\partial z}(p)-\lambda\frac{\partial \psi}{\partial z}(p)=0$

2013年10月27日

最尤法と対数尤度

世の中、webやblogが発達して、統計の勉強をしている中で疑問があったら、初歩的な部分だと大概どなたかが解説を書いていてくださって、とても助かっています!

ということで、ちょっと気になったけど、手持ちの本に書いていなかった点をメモとして残しておきます。

内容は、タイトルの通り「最尤法と対数尤度」です。
高校数学がわかれば充分な範囲です。

「最尤法」は、文字の通り「尤もらしい方法を採用しようぜ」というものです。
統計って、要は「いろんなデータ(sample)を取得して、全体としてどんな法則が隠れてるか探ってみよぉぜ」的なところが目標になっているとしましょう。
ここで、「法則」にあたるものは、母数(parameter)です。平均($\mu$), 分散($\sigma^2$)などを推定(estimate)するのがゴールです。

まぁ、平たく言えば「木を見て森を知ってしまうぞ!」的な冒険心溢れる行為ですね。

閑話休題。そのサンプルデータを$Y=\{ y_i\}$、知りたい母数を$\theta$、それぞれの確率関数を$p(y_i|\theta)$とします。このとき尤度関数(Likelihood function)は

$\displaystyle L(\theta)=\Pi_i p(y_i|\theta)$

で定義されます。何故掛け算で定義するかといえば、データが生じた事象が同時に成立する確率を考えたいからですね。両辺の対数$\log$をとると

$\displaystyle \log L(\theta)=\sum_{i} \log p(y_i|\theta)$

ですね。対数の底は自然対数$e$です。

実際のインプットは$Y=\{ y_i\}$というデータ、それに対して何かしらの基準で$\theta$を決定するわけです。その基準が「最尤」、尤もらしい、ということ。$L(\theta)$が極大になる点を探すことにたどり着きます。しかし、正規分布の場合、指数関数$e^{-x^2}$なんかが出てきているためそのままだと扱いづらいので、対数を取って見やすくした、、みたいなイメージでしょうか。

それで、実際に$L(\theta)$の振る舞いと、$\log L(\theta)$の振る舞いですが、「極大になるタイミングは一緒なのか?」という疑問が。

ここで、ちょっと複雑な形をしている$\log L(\theta)$についてですが、
$\displaystyle \frac{\partial}{\partial \theta}\log L(\theta) = \frac{\frac{\partial L(\theta)}{\partial\theta}}{L(\theta)}$
なので、分子に$L$の微分が出てきていますね。

ということで、掛け算の因子$p(y_i|\theta)$が全て$0$でなければ、$L(\theta)$と$\log L(\theta)$のそれぞれの微分が$0$になるタイミングは一致しますね♪

ちょっとしたtipsでした。

以上は、この本

 

の第11章の「推定」、下記の本の第2章「確率分布と統計モデルの最尤推定」に詳細な説明がありますが、上記の部分が明示的に書かれていませんでしたので。。
(数学科卒の本の読み方かも知れませんけども。。。)

Le vin d'Alsace

数年前、Alsaceに旅行で行った時に、とてもおいしいワインを試飲させてもらった時のお店のURLを見つけたのでメモ:


ここのワインを飲んで、Muscat(英語でいうマスカット)のワインが好きになりました♪

NLTKがインストールできんぞ。。

Pythonで自然言語処理のあたりを実機で試そうと思って、NLTK(=Natural Language Tool Kit)を自宅PCにインストールしようと思って、Pythonの環境でimportしたら軒並みエラーが出力されてまう、、(ToT)

この本のはじめの方にあるものなんですけどもね。




$ import nltk
$ nltk.download()
Segmentation fault 11

となって別Windowが立ち上がり、、
Process:         Python [3981]
Path:            /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Identifier:      Python
Version:         2.7.5 (2.7.5)
Code Type:       X86-64 (Native)
Parent Process:  bash [3727]
Responsible:     Terminal [2013]
User ID:         501

Date/Time:       2013-10-27 08:25:08.361 +0900
OS Version:      Mac OS X 10.9 (13A603)
Report Version:  11
(中略)
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000

のようなエラーがでてしまっておる。。 いろいろ検索してみるか。。

2013年10月22日

logistic curveを描いてみたり。

この本、、、



、、を読んでいて、logistig curveなるものが出てきた。いや、存在は知っていたんだが、ちょっとPythonで書けないもんか、、と思い、ちょこっとcodingしてみますた。

あ、単に、こういう式です:
$y=\frac{1}{1+\exp(-x)}$


コードはこんな感じ(このサイトを参考にしました):

#!/usr/bin/python

# Numpy is a library for handling arrays (like data points)
import numpy as np

# Pyplot is a module within the matplotlib library for plotting
import matplotlib.pyplot as plt

# Create an array of 100 linearly-spaced points from -10 to 10
x = np.linspace(-15,15,100)
y = 1/(1+np.exp(-x))

# Create the plot
plt.plot(x,y)
plt.title('logistic curve')

# Save the figure in a separate file
plt.savefig('logistic_function_plain.png')

# Draw the plot to the screen
plt.show()

2013年10月15日

2冊目突入-> 設計開始!

連休中から例の本



を読み進めていくうちに、何となくObjective-Cの雰囲気がぼやっと見えてきた、かつ、
それと作ってみたいアプリのアイデアを組み合わせてきたら、全体像が見えてきたので、
設計図(のラフ)を紙に書いてみました。

そうすると、意外に「あれが出来なきゃ、これが出来なきゃ」というのが具体的に見えてきて、アイデアを出していた時とは違った大変さが出てきているので、それはそれで困ったなー、的な感じですが、無理のない範囲でやっていこうと思います。

で、今日はTab Bar Controller(下記、twitterアプリでいうところの下部の赤枠の部分)


、、、にどーいうボタンをつけようかなー、なんて探していたら個人でもfreeで使っていいよー、ていう太っ腹な方がいらっしゃるんですね〜。

http://phpjavascriptroom.com/?t=mobile&p=iphoneandroidmockup#a_iphone_icon

HP作成している頃に、「無料素材集」なんていうのを掻き集めて、
無理やりhtmlをベタ書きしていた過去を懐かしく思い出しましたw

今夜は、学生の頃に初めて購入したCDの音源を聴きながら作業しておりますた:




いやー、なかなか古いっすなーw

2013年10月13日

1冊目読了。- iOS App development for Non-Programmers

先ほど、昨日購入した下記の本を読了しました。


本当に気が遠くなるほど丁寧な本でした。PCをいじったことがある人なら、ほぼ問題なく読み進められるんじゃないですかねー。
この本に関する限り、実機での検証は含まれていないので、Developer Programに参加していなくても読み進めることは可能です。

で、お試しのアプリを作っていく感じなんですが、Kindle内に動画リンクが貼ってあるので、解説を読んで???となっても動画で手順を追えば本の通りに作業が進められます。
その意味で、ドットインストールさんの動画にしっかりしたテキストがついたイメージでしょうか。


ちょっと休憩したら、次の本に立ち向かいますw

2013年10月12日

まずは基本から。。

午前中でひと通りドットインストールさんiPhoneアプリ開発の動画は全部視聴しますた。入門にはとてもいい内容ですね。
易しく感じるのは、編集が上手だからなんだろうなー。

次は、もうちょっと突っ込んで勉強したくなりますた。

使うOSはiOS7、かつKindleで手に入れたかったので、とりあえず入手したのは下記の本:

iOS App development for Non-Programmers

あ、その、プログラミングをしたことはありますが(大汗)、
Xcodeの使い方の細かいところとか参照するのにざっと読んだ方がいいかな、と思って。。


ざっと眺めた感じだと、やっぱり技術的な文脈の英語は他のものより取っ付き易いっぽい♪
一休みしてから上の本を読み始めてみよう。

ちょっと思いついた

、、、ので、いろいろ調べながらiPhoneアプリでも作ってみようかと思っています。

今、アイデアベースってだけなので、少しずつブレークダウンしたり、
Xcodeの使い方を覚えたり、、、というところから始めようかな、と思っております。

中身はショーもないものですが、ぱっとAppStoreを見る限りは似た感じのものが無いので、
もの好きな人に使ってもらえれば充分ですかねー。
(あまりに汎用的なものだと、個人で作るには無理があり過ぎるw)

実装レベルで言えば本当に初歩のところからなので、ドットインストールさんの動画
http://dotinstall.com/lessons/basic_iphoneapp
とか、こういう本(↓)を読むところからですかね。


幸い、友人の中に何人かiPhoneアプリをAppStoreに公開している人もいるので、
いろいろ話を聞いてみよう♪

2013年10月10日

Perl入学式

なるイベントに参加してみることにした。

なんて言うか、久々知り合いと会って話すのが目的だったりするのだが、たまにはこういうのに参加するのもいいかな、と思って。

イベントページはこちらから〜;http://www.zusaar.com/event/1079007

Perlは仕事でちょろっと使ったけど、こやつでWeb applicationなんざ作ったことないんだよなー。
文字列操作でずーっと前にちょこっと使ったくらいだったか。。。

とりあえず、前回分(環境構築&変数の考え方&条件分岐/繰り返し処理)までは、
ざっと眺めてみた。

まぁ、この辺りはプログラム言語の癖が微妙に出るところなので、
(考え方は似ていても)言語によって構文が若干違うから、前の日なんかに復習しておかないと危ない、、(大汗)

しかしまぁ、主催者の方はなんでまた無料でこんなことをやろうと思ったのか。。

Ref. http://perl-entrance.org

2013年10月7日

chais pas, ya pas

タイトルは、週末に習ったフラ語の略語です。(単刀直入)

何を意味するか、想像できますか?


、、、


答え:
chais pas
chais -> je saisの略。Je ne sais pas.がJe sais pas.とneが略され、さらにchais pas.となった感じです。
「知らねっす」といった感じでしょーか。(あまりformalではないようです)

ya pas
何やら"pas"が、否定のpasのような感じですが、il n'y a pas.がil y a pas.となり、音的にya pas.となったようです。

Ref. http://en.wiktionary.org/wiki/chais
http://french-spanish.com/article/noproblem.html