大數據文摘作品,轉載具體要求見文末
作者| Aileen 翻譯|任傑 校對|霍靜
◆ ◆ ◆
導讀
初為人父人母,最大的體會必須是:缺覺!餵奶換尿布,孩子一夜醒來好幾次,沒把小寶寶哄睡,卻把自己哄睡了,那時候你的內心一定是崩潰的。
國外一個缺覺的父親實在受夠了他的雙胞胎寶寶,聯合他的妻子,統計了兩個娃的睡眠及餵養時間數據等,用機器學習分析預測,總結並掌握兩個孩子的作息規律,科學的育兒方法讓他們伺候好孩子的同時,又將孩子對自己的睡眠影響降到最低,真是太機智了。技術咖拯救睡眠啊!
接下來就讓我們看看這對夫妻是如何收集數據、並利用機器學習分析數據的,或許年輕的我們可以學一手。
這樣看來機器學習和數據決策其實並沒有那麼高高在上,可能也可以幫我們解決一些生活中的有趣問題。
◆ ◆ ◆
前言
一個月前,我試著用A / B測試我們那對雙胞胎,看看怎樣不同的「治療」或輸入參數會造成較久的睡眠,當然這由我們自己來完成。我發現睡眠模式相當不穩定,並沒有找到促進睡眠相關的東西。隨著時間的推移,他們更大程度上傾向於自然醒。然而,現在他們已經四個月大了,他們已經開始普遍但是很少討論的睡眠顛倒(Sleep Regression)。我又一次發現自己渴望獲得更多的睡眠。我先前投的文章中確實有一個評論說,「無論多麼渴望睡更多,我都會努力去找,我能找到對於睡眠有用的東西嗎」?嘿嘿,我找到了。從此,我轉而關注另一項計算機科技:機器學習。
機器學習是一個計算機科學的領域,提供 「教」計算機或程序的方式,而不需要給他們一些分散的指令集。在正常編程中,我會讓計算機按順序執行一列命令,按邏輯基於輸入的方法來做決策,不過這些程序永遠都不會離開已定義好的軌跡。儘管這聽起來比它實際上運行的方式更像終結者(Terminator),但是機器學習可以接受人拿給的用於「學習」的數據,以此作為預測的基礎。雖然這在整個科技行業變得越來越流行,而AI主要被用於瀏覽購買行為和推薦,也許最有趣的是,分類和識別照片和畫作,這大多是谷歌在做。我沒有找到什麼例子用於做家長帶小孩。
多虧我的妻子是會計背景,還有我們的A型人格,我們詳細記錄了兩個男孩的進食和睡眠行為。還記得這個表格嗎?
◆ ◆ ◆
「大數據」,毫不誇張的講
使用這些數據,我開始尋找輸入參數的最優組合,在這個例子中,我關注食物總消耗、最後餵食時間和最後餵量,來決定什麼情況會導致男孩的最久時間睡眠。最重要的是我可以讓計算機做艱苦的工作。另外,我們這組模式有兩倍的數據,因為很明顯我們有兩個男孩。
有幾個可用的巨大機器學習庫,他們跨程式語言。雖然我主要使用Java和Javascript工作,我選擇了Python庫sklearn,因為我熟悉Python以及這個靈活的腳本語言可以說是近乎完美的應用。有許多對這個庫和文檔極好的教程。
如果感興趣,你可以在github上找到我的代碼。
把我們從電子表格收集的數據導出來,我提取了過去一個月的數據點。因為嬰兒正經歷快速的成長發育變化,我覺得一個月的數據乘以2個嬰兒,是一種對近因效應較好的平衡,而且數據足夠用於做預測了。
◆ ◆ ◆
放在一起進行編碼
我也得到了一些有趣的統計值,包括:平均每天我們餵食兩男孩(各)27.5盎司,通常讓他們在睡覺在7:25睡覺,睡前餵他們5.22盎司,它們平均睡9個小時。結果發現男孩75%的情況睡超過10小時。不賴的發現。但我知道我們還有一些工作可以改進。
總餵食
最後餵食時間
最後餵食量
睡眠時間(小時)
次數
62
62
62
62
均值
27.491935
7.455645
5.225806
9.084677
標準差
2.001008
0.331181
0.857357
1.726092
最小值
24.000000
6.750000
2.000000
3.500000
25%
26.000000
7.250000
5.000000
8.000000
50%
27.000000
7.375000
5.000000
9.000000
75%
29.000000
7.687500
6.000000
10.187500
最大值
32.000000
8.500000
7.000000
13.500000
採用這些數據,我能夠畫出對於睡眠時間的每個參數。
你可以看出數據間已經沒有很強的相關性,至少多數不存在線性關係。最具線性特徵的關係,還有很多離群點的,要屬總進食量和睡眠小時之間的關係了。奇怪的是嬰兒吃得多反而睡得少了。
有許多不同類型的機器學習算法。這些主要分為線性和非線性兩種類型。我用了六種使用相當廣泛的算法運行這組數據,看看每個能到的準確程度。以下是結果。
Logistic Regression: 0.303333 (0.211056)
Linear Discriminant Analysis: 0.376667 (0.157797)
K Neighbors Classifier: 0.286667 (0.073333)
Decision Tree Classifier: 0.356667 (0.196667)
GaussianNB: 0.183333 (0.076376)
Support Vector Machine: 0.410000 (0.200028)
註:每種算法的準確程度,括號中的為標準差,或者採用一個形象的圖表
在這裡你可以看到,支持向量機算法在這些數據上完成的明顯最好,雖然變化範圍較寬,均值並不比其他的算法強很多。這些方法用於預測甚至沒有一個超過50%的(均值)。這完全是由於數據的偽隨機性質。即使有這樣的結果,我決定繼續嘗試,希望能深入有更多新奇的發現。
採用支持向量機,我用輸入的數據訓練算法。用了這個,當我們哄孩子們上床,基於一天的食物量,以及睡前前最後一餐的量,我現在就可以預測出他們能睡多久。例如,給他們28盎司,哄他們7點上床,最後一餐餵6盎司,將造成一個比較差的8小時的睡眠。
◆ ◆ ◆
結論
用目前訓練出的算法,某種程度上,我可以預測將會得到多久的睡眠。更重要的是,我可以從箱型圖(Box Plot)中,6種流行的算法性能趨線,看出他們的表現。並且試著優化,明白怎樣類型的行為可以造成更久的睡眠。一種反常規的現象是,早些躺下,吃更少的食物,實際上一整天的睡眠時間卻增加了。這可能是由於很多因素導致的,但我的理論是,吃得少那補充的就少,胃收縮的也就減少,因此睡眠也就更安穩。有多少次你是狼吞虎咽,然後奇怪的是在半夜餓醒了?
很不幸,正如用A/B測試一樣,沒有一種個體輸入對睡眠似乎是直接的。我想如果真的有人已經發現了,能掙數百萬。綜上所述,機器學習可以找到變量之間一些像這些的趨勢和關聯,從而得到比A/B測驗或者「試誤法」(trial and error)更好、更準確的結果,仍然結果還差得很遠呢。從這組數據集,最多可以得到41%的預測準確率。這意味著結果往往是錯誤的。由於頻繁的發育變化,還有男孩之間的差異,很難在他們之間應用數據。再次申明,樣本量大一點是有幫助的,但我們不打算很快要三胞胎。
儘管如此,這些結果總比沒有好,幫助論證了機器學習和數據科學領域的許諾。比起依據直覺,我更喜歡靠數據來決策,和這些證實我猜測的數據,只會讓我對我們的育兒方法感覺更好。
原文連結:https://medium.com/dad-on-the-run/hacking-my-infant-twins-sleep-with-machine-learning-and-data-science-6c1e38a71677
如需轉載,請在開篇顯著位置註明作者和出處(轉自:大數據文摘|bigdatadigest),並在文章結尾放置大數據文摘醒目二維碼。無原創標識文章請按照轉載要求編輯,可直接轉載,轉載後請將轉載連結發送給我們;有原創標識文章,請發送【文章名稱-待授權公眾號名稱及ID】給我們申請白名單授權。未經許可的轉載以及改編者,我們將依法追究其法律責任。聯繫郵箱:zz@bigdatadigest.cn。◆ ◆ ◆
志願者介紹大數據文摘後臺回復「志願者」,了解如何加入我們
◆ ◆ ◆往期精彩文章推薦,點擊圖片可閱讀
首次!海豚間像人類一樣的交談被水下麥克風記錄