2019年9月24日 星期二

Tips of Web Scraping

Tips of Web Scraping

Python Automatic configuration script PAC:
CSV read/write:
"Selenium 是為瀏覽器自動化(Browser Automation)需求所設計的一套工具集合,讓程式可以直接驅動瀏覽器進行各種網站操作。" ...
Python + Selenium:
  1. install python
  2. install Selenium $pip install selenium
  • for Windows
  • for Linux (or Linux under chromeos):
    • get the appropirate version of chrome driver
    • copy or "chromedriver" (ex, the unzip file of "chromedriver_linux64.zip") to 'usr/local/bin'https://sites.google.com/a/chromium.org/chromedriver/getting-started/chromeos
    • "All ChromeOS test images shall have Chrome Driver binary installed in /usr/local/chromedriver/."* sudo mv chromedriver /usr/local/bin
    • Now, you would need to run something like
      sudo chmod a+x chromedriver to mark it executable.
  1. install BeautifulSoup $pip install beautifulsoup

2019年9月19日 星期四

Tips for Python Environment

python help / version (from command line)

> python -h     # List the available parameters 
> python -V 	# show version`

To get a list of locally installed Python modules
>>> help('modules')
or from command line (if you have pip installed):
> pip list or
> python -c help('modules')

How to install a package?
conda example:
> conda install -c cogsci pygame

to install a conda or pip package if it is locally available:
> conda install <package-file-name>.tar.bz2
or
> pip install <package-file-name>.whl

to install a package if the package source code is at the local:
> python setup.py install

conda build

ref:
http://yenlung-blog.logdown.com/posts/257347-anaconda-in-the-virtual-environment-and-package-management

conda version:
> conda -V

update conda itself:
> conda update conda

整個更新Anaconda
> conda update anaconda

Written with StackEdit.

2019年9月15日 星期日

Rock Breaks Scissors


前言 機器真的能預測人類選擇嗎?

01 如何識破「看似隨機」的選擇?
──我們自認亂挑的數字,竟然也有某種規則
  • 群眾心電感應:聽眾真的會「通靈」嗎?
  • 看似「隨機」的選擇,反而越是好猜?
    • 如果是要選擇硬幣的正面或反面,幾乎有4/5的人會先選擇正面。
  • 隨機實驗:我們自認亂挑的數字,竟然也有某種規則
  • 「隨機」從面前五個整齊排列的物品中選擇一個時,多數人會避免選擇位於兩端的物品。
02 如何在猜拳遊戲中看透對手的下一步?
──如果只有一次機會,出布真的最容易贏

03 如何看透選擇題答案的玄機?
──「以上皆___」會是你的好朋友
  • 是非題考試的正確答案中,「是」的比例比較高。
  • 在有四個選項的選擇題,第二個選項 (B) 為正解的機率最高。
  • 「以上皆是」、「以上皆非」的正確率高得不成比例。
  • 這一題的正確答案選項比較不可能和上一題(or下一題)的正確案選項相同。
04 如何看透樂透彩選號的奧祕?
──不受歡迎的選擇最受歡迎

05 如何在網球比賽中智取對手?
──看手錶,竟能讓你的球路迷惑對手

06 如何在棒球與橄欖球賽中看透對手動向?
──球路機率的神預測,讓你一年多得15分

07 如何在足球比賽罰球時以智取勝?
──留意寵物尾巴見到主人的右偏傾向
  • 友善的狗會把頭偏到右邊。人類在和別人擁抱時,頭會偏向右側,而且進入一間不熟悉的房間時,通常會先看向右邊。
08 如何看透牌局對手的葫蘆裡賣什麼藥?
──就算一手爛牌,也能靠虛張聲勢逆轉

09 如何防止密碼被猜中?
──失控的安全感:越修飾越危險的密碼策略
  • random.org
  • 隨機符號密碼、縮寫代碼、幫助記憶的順口溜
10 如何看透網路評價的玄機?
──漂亮的高分,可能來自「剛好想到」的數字
  • 當提問者刻意提到某個選項,或者用任何方法引導實驗對象注意某個選項,反而可能導致實驗對象打消選擇那個選項的念頭。
  • 「0至9之間最先想到的數字」,「7]是最受歡迎的選擇,最不受歡迎的答案是「0]。整體而言,實驗對象偏好奇數,較不偏好偶數;另外,也偏好不選擇位於指定數字區間的兩個極端位置的數字,而且偏好選擇提問者未以任何方式來引起他們注意的數字。
11 如何識破造假的數字?
──班佛定律讓挪用公款或逃漏稅通通曝光

12 如何看出遭到竄改的數字?
──讓選舉做票、浮報帳目無所遁形的位數分析

13 如何辨識龐氏騙局?
──捏造數字者,容易無意識地重複捏造相同數字

14 如何確認手感是否存在?
──用上一球的成果,預測NBA球員的下一球

  • 心理學家檢驗了黑白交替出現的機率分別為40%、50%、60%、70%、80%和90%的不同序列。其中,交替率約為70%或80%的序列最容易讓人感覺是隨機序列。
  • 堅信熱手感存在的想法似乎和更著名的「賭徒謬誤」(gambler's fallacy) 理論彼此衝突。
  • 大數法則
  • Tversky和Kanehman所謂的小數法則是一種心理學法則。它主張我們不講理地期待小樣本也能呈現和大樣本一樣的根本機率
  • 代表性捷思法 (representativeness heuristic): 一般人傾向於相信「有限的經驗足以代表大局」。
  • GBGBBG vs. BGBBBB 家庭數?
  • 只要賭熱手感不存在,通常就能打敗市場


15 如何預測籃球賽的勝負?
──下好離手前,留意經常遭到低估的運氣成分

16 如何在運動賽事中聰明下注?
──懂得慎選賭注,讓你從劣勢球隊身上獲利

17 如何預見誰是奧斯卡得主?
──不懂電影,也能「算」出誰奪走小金人

18 如何對大數據進行「反預測」?
──別讓瀏覽器與來電顯示出賣了你

19 如何預測何時買最划算?
──從去年價格趨勢決定何時入手

20 如何抓住買房的好時機?
──先搞懂房價的基準價值,看清能夠承受的損失

21 如何知道未來即將發生什麼事?
──熟練的預測專家,是巧妙運用記憶的專家

22 如何摸清股票市場的走勢?
──只要有夠多買家看好,市場就會真的走揚

結語 掌握隨機性,就是掌握自己的命運

全書註釋

參考書目

2019年9月13日 星期五

醉漢走路 / Dunkards Walk


序 你的直覺正確嗎?

第一章 命運就是機會

「機遇」的祕密角色……屢遭退稿的小說,是真的沒人要看嗎?打破紀錄的全壘打王,有多少是出於運氣?
  • 獎賞有效,懲罰無用? (p14 / Daniel Kahneman)
    • regression toward the mean
  • 暢銷書是命! 
    • “不管在哪個領域,成功人士都是同一類的人—永不放棄的人”
  • 電影票房好壞也是命
  • 全壘打王秘辛 (p26) — “常態馬里斯”
    • 想像有一枚銅板,平均每擲14.7次才出現一次正面,而不是平均擲兩次出現一次。每當馬里斯踏上打擊區,我們就擲一次銅板,出現一次正面,就當作是擊出一支全壘打。... 運用隨機數學,能以數學方程式及電腦來做分析... 「常態馬里斯」締造紀錄的機會並不是微不足道,大約每32個球季會有一次打平或超越貝比‧魯斯的紀錄。
  • 意外,總在意料之中
    • 針對棒球及其他運動比賽所做的仔細分析發現,類似的擲銅板模型模擬,十分吻合球員與球隊的實際表現,包括連贏或連輸的情形。
    • 即使沒有超乎尋常的原因,也會有超乎尋常的表現。

第二章 表象不是真相

連專家都會犯的機率邏輯錯誤……為什麼添加在情境上的細節愈多,會讓我們誤認為它愈可能發生?
  • 機率的第一法則:兩個事件同時發生的機率,絕不會大於個別事件發生的機率。(p34)
  • 若添加的細節使情境越顯真實,我們就認為越可能發生… orz
  • 六個字母的英文單字當中,是第五個字母為『n』的比較多,還是以『ing』結尾的比較多?可獲得性偏誤 (availability bias): 在重建過去時,我們毫無理由的,將生動的是誤當成特別重要的記憶,因此回想時最容易記得。(p40)
  • 「說得好聽的故事,往往比不盡合意的解釋更不可信。」
  • 機率的第二法則:如果事件A與事件B為獨立事件,A、B事件同時發生的機率,等於個別事件發生機率的乘積。(p47)
  • 機率的第三法則:如果某一事件有幾種全然不同的可能結果:A、B、C等,那麼結果A或結果B發生的機率,等於結果A的機率加上結果B的機率;所有可能的結果(A、B、C等事件)發生的機率相加漏得到的總和為 1 (= 100%) (p49)

第三章 機會成就命運

什麼是「樣本空間法則」?……從黑死病時期的一名義大利賭徒,談到美國熱門電視節目「來做個交易吧」
  • Gerolamo Cardano: A Book on Games of Chance
  • 要換,還是不換?—蒙提霍爾問題
  • 樣本空間(sample space): 所有可能發生的結果 (p66)
    • 連續擲兩枚銅板: (正,正)、(正,反)、(反,正)、(反,反)

第四章 追蹤成功之路

事件會發生幾種結果,要怎麼認定?作出此認定的重要性在哪裡?……何謂「數學期望值」?
  • 某一事件發生的機會,視它出現方式的數目而定。
    • 擲三個骰子,擲出10 的方式有27種,擲出9的方式有25種,因此擲出點數總和為10的可能性,是擲出9點的27/25倍,也就是1.08倍。
  • 生日問題:一群人當中必須有多少人,才會有超過一半的機會,其中有兩個人的生日在同一天? (23人)
  • 樂透謎團:在 6/49 的樂透中,也就是由1到49選取六個數目的樂透玩法,在3016次的開獎中,都不重複的機率有多大?
    Let

  • 七戰四勝的賽制,勇士隊取得2勝0敗的領先優勢。考慮每場比賽每隊贏球的機會都相等,洋基隊翻盤的機會有多大?
    • 如果洋基贏了五場中的四場或五場,他們就可以拿到世界大賽冠軍,這有五種可能: BYYYY、YBYYY、YYBYY、YYYBY、YYYYB;還有YYYYY
    • 洋基奪冠機會是 6/32,約19%,而勇士奪冠的機會則有26/32,約81%。
  • 估算棒球大賽勝率:
    假設每場比賽兩隊中強隊的勝率為55%,則七戰四勝的世界大戰中,弱隊奪冠的機會?
    Let ,則強隊奪冠的機率:

    if , then
  • Pascal 三角形
  • 期望報酬:每一個可能結果的發生機率乘以報酬,再把這些乘積全部加起來。

第五章 「小數法則」大陷阱

我們觀察到的少量結果,能反映真實的情況嗎?……淺談「芝諾悖論」、「極限」以及輪盤賭桌上的贏錢方法
  • 用「班佛定律」(Benford’s Law) 檢驗財務詐欺:在一堆數據中,九個數字出現在第一位數的頻率並不一樣。(p106)
  • 黃金定理、白努利定理、大數法則、弱大數法則(p120)
    • 統計學家證明,只需要抽樣370人,就能得到據統計顯著性的結果,誤差在+/-5%,也就是20次中不超過1次錯誤。如果抽樣人數達1000人,那麼就有90%的機會達到誤差在2%。
  • 「賭徒謬誤」(gambler’s fallacy):好事連連,並不會帶來厄運;壞事不斷,也不代表好運就要來了。

第六章 正確解讀「陽性反應」

如何根據過去經驗或新資訊,來調整你的期望?……醫學篩檢、辛普森案以及「檢察官謬誤」中的條件機率誤解
  • 「假如有陰謀,所以才會發生這些事件」的機率 「假如發生了這許多事,因此有某種大陰謀」的機率
  • 一個擁有兩個小孩的家庭,兩個小孩都是女兒的機會有多大?
    ⇒ 樣本空間:(兒子,兒子)、(兒子,女兒)、(女兒,兒子)、(女兒,女兒)⇒ 1/4
  • 條件機率: 一個擁有兩個小孩的家庭,假如其中一個是女兒,那麼兩個小孩都是女兒的機率有多大?
    樣本空間:(兒子,女兒)、(女兒,兒子)、(女兒,女兒) ⇒ 1/3
  • 一個擁有兩個小孩的家庭,假如其中一個女兒,名叫Florida,那麼兩個都是女兒的機率有多大?
    ⇒ (兒子,女兒-F)、(女兒-F,兒子)、(女兒-NF,女兒-F)、(女兒-F,女兒-NF)⇒ 1/2
  • 假想找來7500萬有兩個小孩的家庭,小孩當中至少有一個是女兒。這當中差不多2500萬個家庭有兩個女兒,5000萬加童有一個女兒(其中2500萬個家庭的女兒是姐姐,2500萬個家庭的女兒是妹妹)。現在開始修剪: 只把那些有個女兒取名Florida的家庭留下來。由於名叫Florida的機率是百萬分之一,5000萬個有一個女兒的家庭只留下50個,而2500萬個有兩個女兒的家庭也會有50個留下,其中25個家庭是因為姐姐叫這著名字,另外25個家庭是因為妹妹就這個名字。
  • 貝氏方法的關鍵之處在於:運用新的資訊去修正樣本空間,機率也就隨之改變。
  • 醫師常犯的錯誤推論
  • 已知7%乳房X光攝影為陽性的婦女,並未得到乳癌。又,乳癌的實際罹患率是0.8%左右,而假陰性的發生率大約是10%。請估計乳房X光攝影為陽性的婦女,確實患有乳癌的機率是多少?
  • => 假設有10000人接受乳房X光攝影,於是有80人(10000 x 0.8%)是乳癌患者。這80人之中有8人是假陰性 (檢查沒反應),只有72人是真陽性。剩下的9920人非乳癌患者,其中7%,即694.4人X光攝影顯示為陽性 (假陽性),因此10000人之中,X光攝影呈現陽性者共有776.4人,真正的乳癌患這只有72人,占72/776.4=0.092,約為9%。
  • 光是知道假陽性的比率,並不足以決定某個檢驗是否有用--你還需要知道假陽性比率與疾病實際盛行狀況的對照。如果疾病十分罕見,那麼即使假陽性比率很低,檢驗呈陽性病不代表你一定染上這個病。如果疾病極為普遍,檢驗呈陽性所代表的意義就大多了。

第七章 誤差是常態

量測的意義何在?哪些量測沒有實質的意義?……「鐘形曲線」與葡萄酒評鑑、民意調查、學業成績、行星位置
  • 樣本標準差描繪數據聚集在離平均數多遠之處,更實際點說,就是描繪數據不確定的程度。
  • 以常態分布曲線,標準差是曲線達到尖峰高度差不多60%的位置時,曲線寬度的一半。
  • 如果你的觀測數據呈現常態分布,表示差不多有68%(接近三分之二)落在平均數的 1個標準差以內,大約95%在 2個標準差以內,而有99.7%在 3個標準差之內。
  • 當民調專家告訴媒體,誤差範圍為+/-5%,這表示如果他們不斷重做民調,20次當中有19次(95%)的結果會在真正答案的5%之內。 ⇒ 這也代表20次當中有 1次,民調的結果會差之千里。
  • 基本法則是,如果樣本數只有100,那麼不管抽樣的目的何在,產生的誤差範圍都會太大;另一方面,樣本數若是1000,造成的誤差範圍通常約為 3%,大多數時候是可以接受的。
  • 中央極限定理

第八章 混沌中的秩序

多大的群體,會讓隨機而無秩序的狀態,顯現出秩序和規律的模式?……為什麼兩億個汽車駕駛人會在無形之中形成共同的習性?
  • 社會上發生的事情,尤其在財經範疇,不一定遵循常態分佈。(Ex,20%的電影賺進了80%的收入)
  • 讓人面對困境還能夠堅持下去的意志,是和才華至少一樣重要的成功因素。(p196) - 「十年法則」
  • 機運的作用,在某種程度上也能控制,那就是要藉由不停的嘗試,才能提高成功的機率。
  • 高騰:「向平均數遞迴」,「相關係數」
  • 卡方檢定」(chi-square test):例如,檢驗三種麥片盒子,哪一種較受消費者青睞。運用卡方檢定,能夠決定,勝出的盒子得到較多的選票,是因為消費者的偏愛,還是只是由於機率。
  • 「布朗運動」、「隨機漫步」:布朗在顯微鏡下注意到,花粉中的微粒似乎在水中不停的運動。
  • 從原子的圖像來看,水分子的基本運動是雜亂無章的;它們先是向這邊飛過,然後往那邊飛躍,皆沿著直線移動,直到碰上其他分子而偏離。這種形式的路徑 ( 在不同的點,運動方向會隨機改變 ),有時稱為「醉漢走路」or 「隨機漫步」。如果懸浮在流體中的粒子,如原子理論預測的那樣,不斷的、隨機的受到流體分子的撞擊,我們會期待它們隨著撞擊往這兒移,往那兒動。但是這麼想像布朗運動有兩個問題:首先,分子太輕了,無法移動懸浮的粒子;其次,分子撞擊的頻率遠大於觀察到的移動。
  • 愛因斯坦天才之處,就在於認知到這兩個問題其實彼此抵銷了:雖然撞擊發生頻率極高,但是分子重量太輕,因此那些經常發生的個別撞擊,不會產生肉眼可見的效應。只有在很偶然的情況下,偶爾在某個方向上有排山倒海的大量撞擊,才會造成可察覺的擾動。

第九章 模式的錯覺,錯覺的模式

為什麼我們經常上當,被偶然事件呈現出的規律給騙了?……連著出現一百萬個0,或是華爾街股神的成功,有沒有可能只是隨機發生的?
  • table moving
  • 顯著性檢定(significance test) / R. A. Fisher
  • 有時候事件的模式看起來像是有一定的原因,但其實卻只是機遇的結果。
  • 人的天性就是找尋模式,並且在找到之後賦予意義。Kahneman與Tversky分析過我們在評估數據模式,以及面臨不確定的狀況下做判斷時,所用的許多捷徑。他們稱呼這些捷徑為「捷思法」(heuristics)
  • 一個過程是「隨機的」,與那個過程「的結果看起來是隨機的」:如果研究中需要用到隨機亂數,結果產生了連續五個0,然後十個、二十個、一千個...
  • 「熱手現象謬誤」(hot-hand fallacy)
  • 連續擊敗美股大盤的真相:在一大群人當中如果沒有一個人有連串的成功或失敗,那才奇怪呢。_
  • 德國V2火箭轟擊倫敦分布圖 / 癌症患這聚落
  • 人活著,就是為了掌控:如果事件是隨機的,我們就無法控制,如果控制得了,就不是隨機的。因此,我們對於控制感的需求,與認知隨機的能力之間,存在著基本的衝突,這個衝突就是令我們誤解隨機性的一個主要原因。
  • 假如我告訴你,我訂了一個規則,可造出三個數字組成的數列,而2、4、6正好滿足我的規則。你猜得到我的規則嗎?
  • 當我們陷入錯覺,或有了新的想法,我們不會想辦法證明我們的想法錯了,反而是想方設法的證明自己是對的。心理學家稱這個為「確認偏誤」(confirmation bias),它也是阻礙我們對隨機性產生誤解的主因。
  • 如果我們信任某個政治人物,當她做出好成績時,我們歸功於她,當她出錯了,我們責怪環境或反對黨。總之,都是在強化我們最初的想法。
  • 我們應該學習花更多的時間,搜尋那些證明自己錯了的證據,而不只是花同樣的時間,找理由擲持自己是對的。

第十章 醉漢走路

為什麼機遇法則比因果律更基本?……透過「常態意外理論」解讀布魯斯威利、比爾蓋茲的成功之路
  • 「決定論」vs 「蝴蝶效應」
  • 為什麼事件發生後,我們總覺得好像應當能夠事先預料?
  • 事前與事後在本質上的這種不對稱,解釋了為什麼在日常生活中,過去發生的事即使我們未能預料到,但似乎總是很明顯。
  • 基金難買,早知道
橫軸是基金經理人1991-1995年表現的相對排名。回顧過去的時候,我們很容易畫出這種漂亮的圖示,給出簡潔的解釋,但這種邏輯圖像只是事後諸葛的幻覺,與預測事件的未來幾乎毫不相干。

過去的秩序在未來瓦解了,新的圖形就像一堆雜訊。
  • 別太過相信那些所謂的政治權威、財經專家、商業顧問,所做出的過度精確的預測。
  • 後見之明不能預測未來
  • 有時候,事情就是必然會出錯--「常態意外理論」( normal accident theory ),它也可以反過來解釋,為什麼有時候事情必然就會成功,如果不斷嘗試,最終成功的機會還是很大。
  • 成功之路,滿佈意外 -- 流行音樂市場 / Bruce Willis
  • 有錢人可能只是運氣好 -- Bill Gates / Donald Trump
  • 人不可貌相
  • 價值判斷往往來自「期望」
  • 不以成敗論英雄
  • 想成功,就要不斷嘗試

Binary Data, String, and Integer Conversions in Python

In Python 3, struct  will interpret bytes as packed binary data: This module performs conversions between Python values and C structs rep...