一位缺覺的父親記錄了他雙胞胎寶寶的睡眠數(shù)據(jù) 并交給機(jī)器學(xué)習(xí),結(jié)果……
作者| Aileen
翻譯|任杰
校對|霍靜
導(dǎo)讀
初為人父人母,***的體會必須是:缺覺!喂奶換尿布,孩子一夜醒來好幾次,沒把小寶寶哄睡,卻把自己哄睡了,那時候你的內(nèi)心一定是崩潰的。
國外一個缺覺的父親實在受夠了他的雙胞胎寶寶,聯(lián)合他的妻子,統(tǒng)計了兩個娃的睡眠及喂養(yǎng)時間數(shù)據(jù)等,用機(jī)器學(xué)習(xí)分析預(yù)測,總結(jié)并掌握兩個孩子的作息規(guī)律,科學(xué)的育兒方法讓他們伺候好孩子的同時,又將孩子對自己的睡眠影響降到***,真是太機(jī)智了。技術(shù)咖拯救睡眠啊!
接下來就讓我們看看這對夫妻是如何收集數(shù)據(jù)、并利用機(jī)器學(xué)習(xí)分析數(shù)據(jù)的,或許年輕的我們可以學(xué)一手。
這樣看來機(jī)器學(xué)習(xí)和數(shù)據(jù)決策其實并沒有那么高高在上,可能也可以幫我們解決一些生活中的有趣問題。
前言
一個月前,我試著用A / B測試我們那對雙胞胎,看看怎樣不同的“治療”或輸入?yún)?shù)會造成較久的睡眠,當(dāng)然這由我們自己來完成。我發(fā)現(xiàn)睡眠模式相當(dāng)不穩(wěn)定,并沒有找到促進(jìn)睡眠相關(guān)的東西。隨著時間的推移,他們更大程度上傾向于自然醒。然而,現(xiàn)在他們已經(jīng)四個月大了,他們已經(jīng)開始普遍但是很少討論的睡眠顛倒(Sleep Regression)。我又一次發(fā)現(xiàn)自己渴望獲得更多的睡眠。我先前投的文章中確實有一個評論說,“無論多么渴望睡更多,我都會努力去找,我能找到對于睡眠有用的東西嗎”?嘿嘿,我找到了。從此,我轉(zhuǎn)而關(guān)注另一項計算機(jī)科技:機(jī)器學(xué)習(xí)。
機(jī)器學(xué)習(xí)是一個計算機(jī)科學(xué)的領(lǐng)域,提供 “教”計算機(jī)或程序的方式,而不需要給他們一些分散的指令集。在正常編程中,我會讓計算機(jī)按順序執(zhí)行一列命令,按邏輯基于輸入的方法來做決策,不過這些程序永遠(yuǎn)都不會離開已定義好的軌跡。盡管這聽起來比它實際上運行的方式更像終結(jié)者(Terminator),但是機(jī)器學(xué)習(xí)可以接受人拿給的用于“學(xué)習(xí)”的數(shù)據(jù),以此作為預(yù)測的基礎(chǔ)。雖然這在整個科技行業(yè)變得越來越流行,而AI主要被用于瀏覽購買行為和推薦,也許最有趣的是,分類和識別照片和畫作,這大多是谷歌在做。我沒有找到什么例子用于做家長帶小孩。
多虧我的妻子是會計背景,還有我們的A型人格,我們詳細(xì)記錄了兩個男孩的進(jìn)食和睡眠行為。還記得這個表格嗎?
“大數(shù)據(jù)”,毫不夸張的講
使用這些數(shù)據(jù),我開始尋找輸入?yún)?shù)的***組合,在這個例子中,我關(guān)注食物總消耗、***喂食時間和***喂量,來決定什么情況會導(dǎo)致男孩的最久時間睡眠。最重要的是我可以讓計算機(jī)做艱苦的工作。另外,我們這組模式有兩倍的數(shù)據(jù),因為很明顯我們有兩個男孩。
有幾個可用的巨大機(jī)器學(xué)習(xí)庫,他們跨編程語言。雖然我主要使用Java和Javascript工作,我選擇了Python庫sklearn,因為我熟悉Python以及這個靈活的腳本語言可以說是近乎***的應(yīng)用。有許多對這個庫和文檔極好的教程。
如果感興趣,你可以在github上找到我的代碼。
把我們從電子表格收集的數(shù)據(jù)導(dǎo)出來,我提取了過去一個月的數(shù)據(jù)點。因為嬰兒正經(jīng)歷快速的成長發(fā)育變化,我覺得一個月的數(shù)據(jù)乘以2個嬰兒,是一種對近因效應(yīng)較好的平衡,而且數(shù)據(jù)足夠用于做預(yù)測了。
放在一起進(jìn)行編碼
我也得到了一些有趣的統(tǒng)計值,包括:平均每天我們喂食兩男孩(各)27.5盎司,通常讓他們在睡覺在7:25睡覺,睡前喂他們5.22盎司,它們平均睡9個小時。結(jié)果發(fā)現(xiàn)男孩75%的情況睡超過10小時。不賴的發(fā)現(xiàn)。但我知道我們還有一些工作可以改進(jìn)。
采用這些數(shù)據(jù),我能夠畫出對于睡眠時間的每個參數(shù)。
你可以看出數(shù)據(jù)間已經(jīng)沒有很強(qiáng)的相關(guān)性,至少多數(shù)不存在線性關(guān)系。***線性特征的關(guān)系,還有很多離群點的,要屬總進(jìn)食量和睡眠小時之間的關(guān)系了。奇怪的是嬰兒吃得多反而睡得少了。
有許多不同類型的機(jī)器學(xué)習(xí)算法。這些主要分為線性和非線性兩種類型。我用了六種使用相當(dāng)廣泛的算法運行這組數(shù)據(jù),看看每個能到的準(zhǔn)確程度。以下是結(jié)果。
注:每種算法的準(zhǔn)確程度,括號中的為標(biāo)準(zhǔn)差,或者采用一個形象的圖表
在這里你可以看到,支持向量機(jī)算法在這些數(shù)據(jù)上完成的明顯***,雖然變化范圍較寬,均值并不比其他的算法強(qiáng)很多。這些方法用于預(yù)測甚至沒有一個超過50%的(均值)。這完全是由于數(shù)據(jù)的偽隨機(jī)性質(zhì)。即使有這樣的結(jié)果,我決定繼續(xù)嘗試,希望能深入有更多新奇的發(fā)現(xiàn)。
采用支持向量機(jī),我用輸入的數(shù)據(jù)訓(xùn)練算法。用了這個,當(dāng)我們哄孩子們上床,基于一天的食物量,以及睡前前***一餐的量,我現(xiàn)在就可以預(yù)測出他們能睡多久。例如,給他們28盎司,哄他們7點上床,***一餐喂6盎司,將造成一個比較差的8小時的睡眠。
結(jié)論
用目前訓(xùn)練出的算法,某種程度上,我可以預(yù)測將會得到多久的睡眠。更重要的是,我可以從箱型圖(Box Plot)中,6種流行的算法性能趨線,看出他們的表現(xiàn)。并且試著優(yōu)化,明白怎樣類型的行為可以造成更久的睡眠。一種反常規(guī)的現(xiàn)象是,早些躺下,吃更少的食物,實際上一整天的睡眠時間卻增加了。這可能是由于很多因素導(dǎo)致的,但我的理論是,吃得少那補(bǔ)充的就少,胃收縮的也就減少,因此睡眠也就更安穩(wěn)。有多少次你是狼吞虎咽,然后奇怪的是在半夜餓醒了?
很不幸,正如用A/B測試一樣,沒有一種個體輸入對睡眠似乎是直接的。我想如果真的有人已經(jīng)發(fā)現(xiàn)了,能掙數(shù)百萬。綜上所述,機(jī)器學(xué)習(xí)可以找到變量之間一些像這些的趨勢和關(guān)聯(lián),從而得到比A/B測驗或者“試誤法”(trial and error)更好、更準(zhǔn)確的結(jié)果,仍然結(jié)果還差得很遠(yuǎn)呢。從這組數(shù)據(jù)集,最多可以得到41%的預(yù)測準(zhǔn)確率。這意味著結(jié)果往往是錯誤的。由于頻繁的發(fā)育變化,還有男孩之間的差異,很難在他們之間應(yīng)用數(shù)據(jù)。再次申明,樣本量大一點是有幫助的,但我們不打算很快要三胞胎。
盡管如此,這些結(jié)果總比沒有好,幫助論證了機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)領(lǐng)域的許諾。比起依據(jù)直覺,我更喜歡靠數(shù)據(jù)來決策,和這些證實我猜測的數(shù)據(jù),只會讓我對我們的育兒方法感覺更好。
原文鏈接:https://medium.com/dad-on-the-run/hacking-my-infant-twins-sleep-with-machine-learning-and-data-science-6c1e38a71677
【本文是51CTO專欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號“大數(shù)據(jù)文摘( id: BigDataDigest)”】