2017年8月23日 星期三

[FWD] Data Science Tutorial


https://www.kaggle.com/helgejo/an-interactive-data-science-tutorial



關鍵就是第一步 Business understanding,這讓我想起《怎樣解題》這本書,所以請老婆幫忙買中譯本回來研究。事實上工作也常碰到類似情境,解決問題之前要先了解問題。


例子:https://www.kaggle.com/c/titanic

「目標」是預測怎樣的人可以存活下來,如果有看《鐵達尼號》這部電影,大概會有小孩和女人容易存活的印象,但電影有幾幕拍到年邁的老男人偷偷混到救生艇求生,以 machine learning 的術語就是 outlier,也就是說,leaderboard 上百分百正確預測率不見得是用 machine learning 方法做出來的。

以這份資料來說:https://en.wikipedia.org/wiki/Sinking_of_the_RMS_Titanic,我們知道二等艙的小孩存活率百分之百,這個根據是歷史資料不是亂編的,所以當 test data 滿足以上條件,大概可以說 survived = 1。

以上是歷史統計資料。


如果是歷史乘客資料呢?如果我們知道所有乘客姓名等資料,train/test data 中 Name field 看似沒什麼用途,其實這是最重要的 feature。(當然還有某些用途,例如透過 surname 確定某些家人,假設有爸爸、媽媽、小孩,小孩存活率比較高,而爸爸或媽媽存活率比較低,這就是父母親的愛)

只要把乘客姓名丟到 Google search,前幾名網頁點進去看一下,比對性別年齡等等資訊,幾乎可以確定生還或死亡。不過因為 Google search API 要錢,Bing search API 試用期間不用錢(但沒有 Google 準確),所以先用 Bing 查一遍,不確定的再手動查。以下是細節:

https://github.com/Meng-Gen/KaggleStudy/blob/master/c/titanic/study.ipynb


以上。

完全沒有用到任何 machine learning 的東西。因此 https://www.kaggle.com/c/digit-recognizer/leaderboard 完美預測的結果,或許也是某種 data leak age。


2017年8月15日 星期二

李崠山會師。


第五屆小腳ㄚ會師,也是我的第五屆。

大合照(from 張欽政)


我們彼此靠近,處於登山教育社團之中,我們的邊界彼此接觸、混合,每屆的結束意味著另一屆的開始。以此方式運動相通、影響。彼此登山的相似性決定了絕對領域(登山安全),而絕對領域反過來保證更多的相異性(修行、把妹、美食、看景、抒壓、等等)。


會師最基本的相異性就是路線,路線反應我們彼此不同。

在登山口貝怡幫我們照。


第一屆神代線跟教授、阿來、祺盛、思賢一起走,那個時候是修行。第二屆明棲松生活多了沿莉,遺憾是有隊員受傷,那是不認輸的氣魄。第三屆合歡山溯溪跟沿莉一起溯溪,過程發生很寶的事情沒帶頭燈,那是生活。第四屆加羅神社,沿莉好像腳不舒服的樣子沒有跟來,越來越多人不認識,那是尋幽。第五屆李崠山,沿莉懷孕跟年輕人走總台線,那是抓住青春的尾巴。


有沒有一種很老的感覺(討打)(from 張欽政)


我不斷發表旅遊札記與敘述。但我深信,大家從這些記錄了解的爬山,不過是我自己罷了。


簡單記錄一下。


星期六從龍山寺捷運站出發,順著導航走國道三號到關西,路上買東西碰到萩萍、龍頭、賓賓,接著走奇怪的馬美產業道路到登山口,弄完出發。我很緊張怕走不上去,還好之前有練習,在最熱的天氣從小油坑走到七星山主峰,熟悉熱天氣的感覺,結果沒有太多休息(三次的樣子)就走到李崠山,七星山的坡還比較陡些,看時間差不多正午十二點。

因為上面有禁止露營的紅色牌子,無法大方承認晚上就是在古戰場露營,只好騙陌生山友,我們在山上等人,並沒有要露營。建緯用無線電跟大家聯絡,我本來有帶結果電池膨脹壞掉,等於背了無用的東西上山。貝怡就弄酸酸甜甜的飲料給大家喝,經過介紹才知道貝怡、建緯跟沿莉都是小七,沿莉懷孕很辛苦沒有參加會師,又要求我在記錄給她戲份,那我只好編寫尷尬的橋段進來,總之就是快當爸爸了,緊張。發現很多朋友還沒進入愛情的墳墓,想想也很正常,來參加登山團體的高等類猴生物,或多或少都有硬骨的一面。

山上雖然有古堡大空間,但手機收訊不怎麼好,短短幾分鐘電量掉了10%,打了好多通好不容易聯絡到沿莉趕緊報平安,然後再把手機弄成飛航模式。三個人在山上發呆許久,話題漸漸圍繞在小腳ㄚ的兩三事,有時候假的消息也可以講得栩栩如生,彷彿真的發生。煮咖啡、煮、煮空虛的香菇湯,還好有沿莉三包調理包,不然吃東西配八卦還是稍嫌冷場。

晚上看星星、看流星、看整片白雲把整個星空包圍,吃果子繼續聊八卦。


睡眠品質很好,早起吃完又繼續睡等待大家會師,看到許多老人跟年輕人很開心,雖然重疊部份不多,但還是很有向心力。一個登山團體的本質是什麼?答案應該是爬山吧。

[PKGO] 雷達更新


很久沒寫網誌。


道館雷達:

一班雷達:

目前戰績:
  • Articuno: 4/9 (Caught/Seen)
  • Zapdos: 5/13 (Caught/Seen)
  • Moltres: 5/7 (Caught/Seen)
  • Lugia: 2/4 (Caught/Seen)

2017年5月23日 星期二

《蝦蟆的油》黑澤明尋找黑澤明


(P114)

「全班一起看著我。」

「我滿臉發紅,一時無法動彈。」

「以前的老師,很多都是具有自由精神、個性豐富的人物。」

「比較起來,現在的老師,普通上班族太多。部隊,是官僚式人物太多。」



(P228)

「沒有人比當權豢養的小官僚更可怕。」

「就拿納粹當例證,希特勒當然是狂人,但看看希姆萊、艾希曼即知,愈到組織下層,天才性的狂人愈是輩出。至於集中營的所長和守衛,更是超乎想像的獸人。」



別論:「五年前,當我從中國的飛機下來,離開杜勒斯機場的航站樓時,正準備戴上我準備的五個口罩中的一個,我呼吸到了第一口美國的空氣,立即放下了口罩。這空氣是如此清甜新鮮,有種奇妙的奢侈感,我感到很吃驚。我在中國長大,在我的家鄉,每次出門我都會戴上口罩,否則有可能會生病。但是,在機場外呼吸的那一刻,我感到很自由。」

反應是「自賤者必被人賤。」「一個連自己國家都不愛的人,又怎麼會愛別人?」。

黑澤明說的似乎有些真實,我在 Sunnyvale 發現當地空氣真的很奢侈,藍天烈日也很奢侈,更不用說奢侈的薪資水平及不斷浪費的石油與食物。每個人可以愛自己的國家,但真的不要懷疑,美國就是那麼棒(除了監獄有點過分、除了種族問題有點嚴重、除了食物不夠美味、除了工作壓力大、除了對某些國家不甚友善、除了點點點)。

2017年5月6日 星期六

[word2vec] Fitting Probability Models


Reference Book: Simon J. D. Prince, Computer Vision: Models, Learning, and Inference

Question: How to fit probability models to data {x_i}?

Answer: Learn about the parameters θ of the model.

Methods:
  • maximum likelihood
  • maximum a posteriori
  • Bayesian approach


Maximum likelihood (ML)
  • Likelihood function: 
    • Pr(x_i | θ) at single data point x_i
    • Pr(x_{1...I} | θ) for a set of points 
      • Assume that drawn independently from the distribution
      • Pr(x_{1...I} | θ) = \prod_{i from 1 to I} Pr(x_i | θ)
  • Estimate of the parameter
    • θ^{\hat} = argmax_θ [ Pr(x_{1...I} | θ) ]
  • Example #1: The skip-gram model
    • Reference: https://arxiv.org/pdf/1402.3722v1.pdf
    • Given a corpus of words w and their contexts c 
    • Consider the conditional probabilities Pr(c|w)
    • Goal: Set the parameters θ of Pr(c|w;θ) so as to maximize the corpus probability: 
      • argmax_θ \prod_{w in Text} [ \prod_{c in C(w)} Pr(c|w;θ) ]
      • argmax_θ \prod_{(w, c) in D} Pr(c|w;θ)
    • Model in Pr(c|w;θ):
      • e^{v_c \dot v_w} / \sum_{c' in C} e^{v_c' \dot v_w}
        • v_c, v_w: vector representation for c and w
        • C: all available contexts
    • Estimate: Take log
      • argmax_θ \sum_{(w, c) in D} log Pr(c|w;θ)
      • argmax_θ \sum_{(w, c) in D} (v_c \dot v_w - log(...) )
      • Very expensive to compute due to log(...)
      • Solutions:
        • Hierarchical softmax
        • Negative sampling
    • Negative sampling:
      • Pr( D=1 | w,c;θ ) = σ(v_c \dot v_w), σ: sigmoid
      • Estimate: argmax_θ \sum_{(w, c) in D} log σ(v_c \dot v_w)
      • D': all incorrect random (w, c) pairs
      • Estimate: 
        • argmax_θ \sum_{(w, c) in D} log Pr( D=1 | w,c;θ ) + \sum_{(w, c) in D'} log Pr( D=0 | w,c;θ )
        • argmax_θ \sum_{(w, c) in D} log σ(v_c \dot v_w) + \sum_{(w, c) in D'} log σ(-v_c \dot v_w)
      • Random sampling:
  • Example #2: Bernoulli trial

2017年4月30日 星期日

[tensorflow] Hello World

Environment: MacOS X

Installing with Anaconda: https://www.tensorflow.org/install/install_mac#installing_with_anaconda
  • Install Anaconda
  • Create a conda environment named tensorflow
    • conda create -n tensorflow 
      • To activate this environment, use: source activate tensorflow
      • To deactivate this environment, use: source deactivate tensorflow
  • Install TensorFlow inside your conda environment
  • Install jupyter inside your conda environment
    • pip install jupyter
    • jupyter notebook

Run Deep MNIST: https://www.tensorflow.org/get_started/mnist/pros

Reference:

2017年4月15日 星期六

[FWD] UCL Course on RL


http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html

(Video Lecture 1: https://www.youtube.com/watch?v=2pWv7GOvuf0)

Textbooks: