0
身為AI時代的程序猿,我們天生就對數(shù)據(jù)集敏感。因此,當我們拿到一批真實數(shù)據(jù)時,激動之情肯定溢于言表!舉例來說,我們可能拿到了一組患者正確藥量的數(shù)據(jù)集,它長成這樣:
數(shù)據(jù)集的地址:http://bit.ly/quaesita_slkid
其中每個數(shù)據(jù)點包括兩個部分:輸入特征是某位患者當前的治療日(Treatment Day),而輸出結(jié)果是ta在60天療程內(nèi)應(yīng)該服用的藥物劑量,單位是毫克。身為AI工(cheng)作(xu)者(yuan)的我們,第一時間就會想到建立一個回歸模型,輔助醫(yī)生根據(jù)輸入的治療時長特征,給出所推薦的藥物劑量。So easy~
但是我們把模型的事兒先放一邊,當我們以人類的角度來利用數(shù)據(jù),假如有個病人正在處于第2個治療日,你會怎樣為他推薦用藥劑量呢?
聰明如你肯定一眼就知道,17毫克!你看數(shù)據(jù)集里都有完全相同的場景嘛~ 那如果是第4個治療日呢?41毫克沒毛病呀!
那現(xiàn)在問題來了,在這種場景下如果我們使用機器學(xué)習(xí)方法建立一個回歸模型,是不是更高大上、更有效呢?換句話說,當我們使用計算機學(xué)習(xí)這些數(shù)據(jù)模式的時候,會不會導(dǎo)致一些意想不到的問題呢?
答案是否定滴。我們可以用最簡單的“查表”模型嘛,給一個輸入,然后尋找它所對應(yīng)的取值就行了。python里建立一個dict就完事兒了。但是注意,我們只有60天的數(shù)據(jù),如果輸入的特征取值<=60,那沒問題,查表模型的輸出肯定完全正確。這不需要建立模型,也不需要什么高深的機器學(xué)習(xí)理論。
那在什么情況下我們需要使用機器學(xué)習(xí)呢?
當然是輸入訓(xùn)練集中沒有的數(shù)據(jù)啦!比如說突然來了一個正處于第61個治療日的患者,我們怎么辦?
這時候查表模型就蒙了,它沒見過輸入是61的情況啊,超綱了……那這種情況下我們應(yīng)該怎么做呢?抱怨運氣不好?胡亂回復(fù)一個數(shù)字?還是像郭德綱一樣扔鞋占卜?……唔……誒?!機器學(xué)習(xí)是不是能幫我們搞定這種情況?
沒錯兒!
但是話說回來,如果這個輸入和輸出之間壓根兒沒什么聯(lián)系的話,機器學(xué)習(xí)也愛莫能助。就好比面對一堆毫無邏輯的隨機數(shù)據(jù),算命先生也拿不準下一個要來的是啥……
1、我們必須找到隱藏的數(shù)據(jù)模式
但是,假如說(只是假如)數(shù)據(jù)具有固定的分布模式,而且我們還能夠找出這個模式來,那么我們就能利用這個模式來預(yù)測(或者說……猜)第61個治療日的患者的正確用藥量了。這種情況下,機器學(xué)習(xí)才能派上用場。
我們要學(xué)習(xí)和尋找的數(shù)據(jù)模式一定要對未來的數(shù)據(jù)具有泛化性才行。否則我們的模型就只對已經(jīng)存在的數(shù)據(jù)擁有良好的擬合能力,但是對于未知的數(shù)據(jù)呈現(xiàn)極大的誤差,那這個模型肯定不好用。
比如說上面的例子中,數(shù)據(jù)模式就可能分成兩種:前60天是一種模式,而從61天開始就變成另一種模式(比如從第61天開始所有的患者都死了或者都痊愈了,就不用服藥了)。那就算我們找最厲害的教授使用最頂級的機器學(xué)習(xí)模型和技巧,也只能讓它僅對前60的數(shù)據(jù)具有良好的預(yù)測性能,但是從61天開始,模型對已有模式學(xué)習(xí)得再好也無濟于事。
具體了解泛化的含義,可閱讀這篇文章:https://towardsdatascience.com/the-most-powerful-idea-in-data-science-78b9cd451e72
進一步接茬兒說哈。如果我們的數(shù)據(jù)沒辦法表現(xiàn)出未來要發(fā)生的事情,或者說未來的數(shù)據(jù)規(guī)則和現(xiàn)在完全不同了(也許因為一場瘟疫、地震、戰(zhàn)爭或者其他不可抗拒力),那我們已有的數(shù)據(jù)集質(zhì)量再高、數(shù)據(jù)模式學(xué)習(xí)得再好也沒用?;\統(tǒng)一點來講,如果我們研究的是這個宇宙中某個極不穩(wěn)定的某種數(shù)據(jù),那機器學(xué)習(xí)的遍歷性和平穩(wěn)性假設(shè)就無法滿足了。這種的場景下所訓(xùn)練出的機器學(xué)習(xí)模型會頻頻出錯,因為模型總是會覺得“外界數(shù)據(jù)的規(guī)則和模式穩(wěn)定不變”。
不了解遍歷性假設(shè)的同學(xué),可參考:https://en.wikipedia.org/wiki/Ergodicity
不了解平穩(wěn)性假設(shè)的同學(xué),可參考:https://bit.ly/stationaritya
這里說的不平穩(wěn)性不是指在局外人眼中的那種主觀的不平穩(wěn)現(xiàn)象,比如商品的均價隨著時間而逐漸增加,這是由于通貨膨脹的原因。像通脹這種平穩(wěn)的、可以學(xué)習(xí)的不穩(wěn)定性,是能夠通過時間序列分析技術(shù)來解決的。我們這里所說的不平穩(wěn)性是指由于各種變故或不可抗拒因素而導(dǎo)致的突發(fā)事件。
這種不平穩(wěn)性是一種粗暴的、毫無章法的現(xiàn)象。對于這種問題我們無可奈何,因為它的發(fā)生不以你的意志為轉(zhuǎn)移,它客觀而不羈地發(fā)生著、存在著,我們所處的次元規(guī)則系統(tǒng)完全不同。它就像個顯示屏壞了的定時炸彈,你根本不知道它什么時候改變自己的數(shù)據(jù)模式,也不知道它什么時候爆炸。
所以在這種情況下,我們可能費盡千辛萬苦學(xué)習(xí)到了已有的模式,但是一夜之間啥都變了,規(guī)則不是以前的規(guī)則了,你大爺也不是以前的大爺了……如此一來,模型的性能肯定會大打折扣(根本不能用了好不好)。
4、如果一切順利的話!
但是如果數(shù)據(jù)集中的樣本模式具有極好的泛化性,它又能穩(wěn)定的表達出未來將要發(fā)生的事情,那就太棒了!這時候就別猶豫了,盡情利用機器學(xué)習(xí)方法尋找已有數(shù)據(jù)中的樣本模式吧!然后一切水到渠成~別說第61天的劑量,就算是第661天的數(shù)據(jù)我們都能給你預(yù)測出來!
找到并且利用數(shù)據(jù)集中隱藏的樣本模式是機器學(xué)習(xí)的關(guān)鍵。
機器學(xué)習(xí)和人工智能技術(shù)不是用來重復(fù)已經(jīng)見過的例子。對于已有數(shù)據(jù)的重復(fù)就是查表而已,搜索一下數(shù)據(jù)庫就能解決,殺雞焉用宰牛刀?記住,機器學(xué)習(xí)是用來學(xué)習(xí)數(shù)據(jù)中隱藏的數(shù)據(jù)模式的。
重復(fù)已有的答案算什么本事?機器學(xué)習(xí)能對沒見過的新情況進行解決!
程序猿可能會問,事兒都讓你干了,那我的任務(wù)是啥?答案很簡單,就是構(gòu)建一個成功又通用的解決方案。你問我啥叫成功?
我曾寫了一整篇文章來討論這個問題:https://medium.com/hackernoon/the-decision-makers-guide-to-starting-ai-72ee0d7044df
模型說,這不是貓!
換句話說,如果我們的模型無法處理已有數(shù)據(jù)集中沒見過的新樣本,那它就很失敗了。新樣本再奇怪也是按照固定模式分布的,它不會打破數(shù)據(jù)的平穩(wěn)性假設(shè),它充其量會讓學(xué)到的模式有所偏移。
機器學(xué)習(xí)不是鸚鵡學(xué)舌,死記硬背已有數(shù)據(jù)集是沒用的。機器學(xué)習(xí)的魅力和強大之處在于,它能夠從已有數(shù)據(jù)中概括和抽象出數(shù)據(jù)背后的規(guī)則,從而普適地應(yīng)用于新的場景。
所以咱們啰嗦了這么半天,如果這時候你遇到了一個已有數(shù)據(jù)集中未曾出現(xiàn)的樣本(比如第61個治療日的樣本),你會怎么給出結(jié)果呢?
當然是先從已有數(shù)據(jù)集中總結(jié)樣本的模式,然后根據(jù)這個模式做出一個合理的預(yù)測了!
但是機器學(xué)習(xí)也是有自己的專屬職責的,你訓(xùn)練它干什么,它就能夠也只能夠做這個任務(wù)。就比如當我們使用了上千張動物照片訓(xùn)練了一個區(qū)分貓(就是根據(jù)輸入圖片判斷是不是喵星人)的分類器,那么當我們輸入一個新樣本的時候,它就能告訴我們圖片中是否包括貓咪。但是如果你想讓它告訴你這個輸入的圖片是不是畢加索的真跡的時候,少年你就想多了……
當我們說起機器學(xué)習(xí)的時候,你的朋友或者老師通常會故作高深地跟你說,它是一個事件標簽的標記者,或者是一種人類規(guī)則代碼的高級取代者。云里霧里……為了讓你更容易的理解機器學(xué)習(xí),我們換個角度對其進行介紹。
機器學(xué)習(xí)是一個全自動的決策器,它的功能包括對數(shù)據(jù)模式的學(xué)習(xí)(總結(jié)大師),以及應(yīng)用該模式對新數(shù)據(jù)進行判別和預(yù)測(執(zhí)行大師)。
當你不知道機器學(xué)習(xí)方法是否適用于你研究的問題時,可以仔細看看下面這三篇文章~
Is your ML/AI project a nonstarter? A 22-item reality check(list),http://bit.ly/quaesita_realitycheck
Advice for finding ML/AI use cases,http://bit.ly/quaesita_island
Getting started with ML/AI? Start here! http://bit.ly/quaesita_dmguide
3
所以兜了這么大的圈子之后,第61天到底應(yīng)該讓患者吃多少藥呀?其實在我上面給出的這個看似雜亂無章的例子中隱藏著一個十分穩(wěn)定的數(shù)據(jù)模式。你問我怎么知道的,當然了,這數(shù)據(jù)集是我編的我肯定知道哈哈哈。這個模式……嗯……就是我將腦袋里突然蹦出的那個最大的數(shù)+1……(作者可真欠揍)我之所以這么做,是因為我發(fā)現(xiàn)處理這些具有很強變數(shù)的數(shù)據(jù)是一種樂趣(更欠揍了!)。
雖然數(shù)據(jù)的模式很奇葩,但這也不失為一種數(shù)據(jù)產(chǎn)生的模式。對于那些喜歡挑戰(zhàn)的小盆友,你們不妨試試多用幾種機器學(xué)習(xí)算法來找出這套看似十分隨機的數(shù)據(jù)集中的模式,說不定你們就能研發(fā)出一套針對我的讀心術(shù)模型呢~來來來,留言區(qū)告訴我你們覺得第61天應(yīng)該用多少劑量呢?。ê闷诖?,因為我還沒有編出來呢)
我知道肯定有不少人會使用傳統(tǒng)的統(tǒng)計分析學(xué)方法來給出的答案,但是你開心就好~黑貓白貓,抓到老鼠的就是好貓~ 雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
想要了解統(tǒng)計分析方法和機器學(xué)習(xí)的區(qū)別請戳這里:http://bit.ly/quaesita_history2
via https://towardsdatascience.com/when-not-to-use-machine-learning-or-ai-8185650f6a29
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。