トップ «前の日(12-02) 最新 次の日(12-04)» 追記

日々の流転


2001-12-03

λ. 英検準1級合格

こないだ受けた2次試験受かってました。わーい。やったぁー!!

得点票
分野 得点 満点
ナレーション 11 15
Q&A 17 20
アティチュード 3 3
合計 31 38

合格点: 22点

λ. 正規表現

こないだの情報数学で少し話題になったけど、最短一致とか最長一致って不思議な発想だよね。これって誰が正規表現に導入したのだろう。これって普通の検索や置換には便利だけど、一致を全て欲しい場合とかには逆に不便じゃないのかな。

普通の正規表現ライブラリで、一致を全部欲しい場合ってどうすれば良いのだろう? 例えば、Rubyではこんな風に書けないものかな?

/(.+)d(\d)/.each_match('abcd1'){|item| p item.to_a}
# =>
#  ["abc", "1"]
#  ["bc", "1"]
#  ["c", "1"]

λ. エコノミクス NOW

最近の日経新聞の「経済教室」の記事はつまらないのが多いけど、伊東元重のこの連載だけは毎月楽しみにしているのだ。ちなみに毎月第一月曜日に掲載。今回はペイオフ解禁の話で、記事自体はとても面白い切口だったし正論なんだけど、今の日本に健全な金融機関なんてあるんですかね?


2002-12-03 May the lambda be with you... use the lambda, Alysia.

λ. w3m

ふと、

  • blockquoteとqのcite属性、del/ins等のdatetimeを情報パネルに表示
  • iframe/objectのtableへの変換

の機能が欲しくなってw3mのソースをいじってみたが思うように動かない。きっと、HTMLlineproc?()とHTMLtagproc1()の関係とかについて正しく理解できていないのだろう。こういうのをサクッとhack出来る人が羨ましい。

λ. webで話題のモノ - blogmap

面白いなぁ。自分でも作ってみたくなる。

λ. 読書

『Kanon 2』
Key[著], 森嶋プチ[イラスト]
Tags:

λ. 萩野服部研

久野君が萩野先生の砲火の前に撃沈...

λ. クロロホルムの使用法

というか、あなたホントに実行してないでしょうネ? 犯罪デスヨ。


2003-12-03

λ. 読書

『マリア様がみてる』
『マリア様がみてる—黄薔薇革命』
今野 緒雪 [著], ひびき 玲音 [イラスト]

「マリみて」は面白いなぁ。ゲラゲラゲラ。

Tags:

2004-12-03

λ. 探索的モデリング

BayoNet をインストールして遊ぶ。ユーザーインターフェースはあまり良くない気がするけど、いじってみると結構楽しい。SFC生なら BayoNet Version 3.0.8 利用申請 からダウンロードして遊ぶべし。

λ. 『YOUNG&FINE』, 山本 直樹

を読んだ。

YOUNG&FINE (アクションコミックス)(山本 直樹)

Tags:

λ. 不思議ちゃんの小気味よさ

Emily The Strange(Inc. Cosmic Debris Etc.) (『Emily: The Strange』の感想を IRCから転載)

Emily は独特の世界を持った奇抜でブラックな少女で、他人と馴れ合うことな く自分のスタイルを曲げない。本書を読めばわかるが the Strange と言われる だけのことはある。日頃妥協に妥協を重ね他人に馴れ合う日々を送っている自 分としては、彼女のそういったところには小気味よさを感じた。

それから、こんなポジティブなことをこの本から読み取るのは間違っている気 がしてならないのだが、Emily doesn't cheat... she plays by her own rules. という一文にはハッとさせられた。我々も既存のルールの中で努力す るばかりではなく、時にはルールを変えてしまうような変革を目指すことが必 要なのではないだろうか。

ただ、もし仮に彼女が身近に居たら困ってしまうだろうことも間違いない。 なにしろ、the Strange 、不思議ちゃんですからね。

ところで、本のデザインもとても素晴らしかった。白・黒・赤の三色を基本と して部分的にツヤ出し(?)を使っただけの非常にシンプルなデザインなのだけ ど、これらが非常に効果的に使われていて、独特の世界を構成している。この デザインだけでも本書を手に取る価値はあるだろう。

Quotation
Emily doesn't cheat...
...she plays by her own rules.
Excellent Translation
エミリーはズルをしない……
……自分のルールでやるだけだ
Explanation
彼女のルールでは、スペードのエース5枚のファイブカードもアリだし、それからお札の額を書き換えてしまうのもアリなのだ。
Tags:

2006-12-03

λ. 計画停電

計画停電のついでに研究室のサーバ環境を色々リプレース。今回は参加してみたかったけど、風邪でしんどかったので自宅に引きこもっていた。

Tags: tom

λ. GROW CUBE Ver 0.1k

EP1066のレスター(hishouさん)が紹介していたのでプレイしてみる。パーツの依存関係を見極めるのが肝だと思うのだけど、結構むずい。以下のスクリーンショットは、水→人→緑の元→チューブ→鉢→皿→火→骨→玉→バネの順番の場合。こっから先が分からん……

[GROW CUBE のスクリーンショット]

本日のツッコミ(全2件) [ツッコミを入れる]

ψ hato [これ面白いですよね。 私は後輩に教えてもらって、 やってみたらハマリすぎて夜が明けかけた事が……]

ψ さかい [これは確かにはまりますねぇ。 私も気分転換に始めたのに、気がついたらずいぶん時間が経ってしまっていて、危なかったです..]


2008-12-03

λ. 風邪ひいた

体調が悪いので泳ぎに行くのは諦める。 ……と思ったら、夜になって熱が上がってきた。 風邪ひいたっぽい。最近、疲れが溜まってたのかなぁ。 インフルエンザとかじゃないといいけど。

λ. 麻生太郎「ニコ割アンケートに答える」

観た。こういうのを観てると印象は良いのだけどねぇ……

Tags: 時事

2013-12-03

λ. 自動微分でロジスティック回帰

自動微分を使って線形回帰をしてみる」と「nonlinear-optimizationパッケージで遊ぶ」で線形回帰をして遊んでみたので、次は予定通り自動微分でロジスティック回帰を試してみることに。 例として何を使おうか悩んでいたのだけれど、たまたま ロジスティック回帰で分類を試す - Negative/Positive Thinking (2013-11-29) という記事を(@chezouさんのtweetで)見かけたので、これと同じデータで試してみることにした。

使用するデータ

というわけで、使用するデータはこれ。

コード

実装にはnonlinear-optimizationパッケージを、自動微分を行うadパッケージと組み合わせて便利に使うための、拙作のnonlinear-optimization-adパッケージを使用。

コスト関数としては Courseraの Machine Learning のコースで扱った形の、正則化なしのコスト関数と、L2正則化を行うコスト関数の場合の両方を試す。

import Control.Monad
import Data.Map (Map)
import qualified Data.Map as Map
import Data.Set (Set)
import qualified Data.Set as Set
import qualified Numeric.Optimization.Algorithms.HagerZhang05.AD as CG
import Text.Printf

main :: IO ()
main = do
  trainingData <- liftM parse $ readFile "a9a"
  testData     <- liftM parse $ readFile "a9a.t"

  let features :: Set String
      features = Set.unions [Map.keysSet fs | (_, fs) <- trainingData]

      cost, costReg :: RealFloat a => Map String a -> a
      cost theta    = sum [ if y then - log p else - log (1 - p)
                          | (y,x) <- trainingData, let p = h theta (fmap realToFrac x) ]
                      / fromIntegral (length trainingData)
      costReg theta = cost theta + (lambda / (2 * fromIntegral (length trainingData))) * sum [x**2 | (feat,x) <- Map.toList theta, feat/=""]

      params = CG.defaultParameters
               { CG.printFinal  = True
               , CG.printParams = True
               , CG.verbose     = CG.Verbose
               , CG.maxItersFac = 50 / fromIntegral (1 + Set.size features)
               }
      grad_tol = 0.00001
      theta0 = Map.fromAscList [(feat,0) | feat <- Set.toAscList (Set.insert "" features)]

  (theta1, _result1, _stat1) <- CG.optimize params grad_tol theta0 cost
  (theta2, _result2, _stat2) <- CG.optimize params grad_tol theta0 costReg

  forM_ [("without regularization", theta1), ("with regularization", theta2)] $ \(s, theta) -> do
    printf "[%s]\n" s
    forM_ [("training set", trainingData), ("test set", testData)] $ \(name, samples) -> do
      let correct  = filter (\(y,x) -> predict theta x == y) samples
          accuracy :: Double
          accuracy = fromIntegral (length correct) / fromIntegral (length samples)
      printf "  %s accuracy: %d/%d = %f %%\n" name (length correct) (length samples) (100*accuracy)

-- regularization parameter
lambda :: Num a => a
lambda = 1

-- hypothesis
h :: RealFloat a => Map String a -> (Map String a -> a)
h theta x = sigmoid $ sum [(theta Map.! feat) * val | (feat, val) <- ("", 1) : Map.toList x]

predict :: Map String Double -> (Map String Double -> Bool)
predict theta x = h theta x > 0.5

sigmoid :: RealFloat a => a -> a
sigmoid x = 1 / (1 + exp (-x))

parse :: String -> [(Bool, Map String Double)]
parse = map f . lines
  where
    f l = (readInt w > 0, Map.fromList [(name, read val) | s <- ws, let (name,_:val) = break (':'==) s])
      where
        (w:ws) = words l
        readInt :: String -> Int
        readInt ('+':s) = read s
        readInt s = read s

ちょっと試してみたところなかなか収束しなかったので、参照したブログと同じくイテレーション回数50回で打ち切ることに。これは、nonlinear-optimizationパッケージのoptimize関数は、イテレーション回数の指定がパラメータ数に対する倍率になっていて、ちょっと面倒だった。

結果

結果は以下のとおりで、参照したブログの数字ともほぼ一緒だし、まあこんなものだろう。

[without regularization]
  training set accuracy: 27644/32561 = 84.89911243512176 %
  test set accuracy: 13846/16281 = 85.04391622136232 %
[with regularization]
  training set accuracy: 27648/32561 = 84.91139707011456 %
  test set accuracy: 13850/16281 = 85.06848473680978 %