
數(shù)據(jù)科學家教你用數(shù)據(jù)模型來戀愛
男生和女生分別是來自不同星球的科學事實已經(jīng)眾所周知的了.男生們總是認為,女生們都是迷一樣的生物,他們的情感狀態(tài)浮動似乎是以秒單位在變化的,難以理解,更勿論預測了! 而女生們覺得男生都是沒有感覺動物,完全不能理解什么叫感受-盡管已經(jīng)告訴他們N次了!這種男女之間的根本差別,導致了他們之間的感情關系是受一種超級無敵復雜的系統(tǒng)所支配的.
不過,我們可以用一個叫隱式馬爾可夫(Hidden Markov Model)的數(shù)學模型來分析這個系統(tǒng).
決定性系統(tǒng)
首先我們來看看一種最簡單的預測系統(tǒng) - 決定性系統(tǒng).
在這個系統(tǒng)中,如果我們知道我們目前所在的狀態(tài),那么我們也就能夠毫無疑問地預測出下一個狀態(tài)是什么. 比如一年四季的輪替就是一個決定性系統(tǒng):每個季節(jié)的交替是完全可以預測的,如果現(xiàn)在是春天,那么下一個季節(jié)就一定會是夏天,冬天的前一個狀態(tài)就一定是秋天等等.另外值得一提的是,冬天過后,下一個季節(jié)就又會回到春天,以此循環(huán)...
另外一個常見的決定系統(tǒng),就是交通燈的輪換: 紅燈過后就應該是綠燈. 綠燈過后就應該是黃燈,然后又回到紅燈.
這種系統(tǒng)非常常見,人的一生大致也能看作是這種系統(tǒng). 有嬰兒,少年,成年,老年,然后死亡等幾種狀態(tài). 不過不同的是,人的一生又不是完全遵循這種狀態(tài)輪換的, 每個人都有那么丁點的可能性會跳過其中一個或者多個狀態(tài),直接到達死亡的狀態(tài)...(更勿論Benjamin Buttons的情況了,呵呵).
講到這里,聰明的男生或許已經(jīng)能想到,我們的世界里最為精妙,最雷人的非決定性系統(tǒng)就是 --你女朋友的情感狀態(tài)!
對于大部分男生來說,精確地預測女朋友的下一種的情感狀態(tài)基本上屬于扯淡.
一個mm現(xiàn)在可能心情很好,可是下一秒?yún)s進入抓狂;她或許某個時刻處于悲傷,下個時刻卻變得異常興奮.在每個女生的情感狀態(tài)里面,都有一種基于概率卻又難以預測的本質,這種無序的本質直接導致無數(shù)男生直接蹲地畫圈圈......
盡管看上去女生的情感狀態(tài)似乎毫無預測性可言,經(jīng)過一段長時間的觀察,卻能發(fā)現(xiàn)這種現(xiàn)象是有規(guī)律的! 于是小明,作為一名計算機科學家, 決定要系統(tǒng)地去分析他女朋友的情感不確定性, 挖掘出里面的規(guī)律!
于是乎,小明仔細地記錄了半年來他女朋友小麗每天的喜怒哀樂變化狀態(tài), 并作了一張圖表(Table1)來表示小麗的歷史情感變化.
小明想知道, 有了這些數(shù)據(jù),他能否從中得出知道, 如果小麗某天的情感狀態(tài)是高興, 那么第二天她更多的是保持好心情呢,還是更多地變得悲傷了.如此等等...
數(shù)據(jù)勝于雄辯, 小明從這半年的數(shù)據(jù)里面發(fā)現(xiàn),當小麗高興的時候,3/4的情況下第二天她仍然保持著好心情,只有1/4的情況小麗第二天心情會改變,比如變得氣憤,悲傷等等(小明真TM走運!).小明繼續(xù)分析其他各種情感狀態(tài)變化情況,比如從高興到悲傷, 悲傷到氣憤, 高興到氣憤等所有的可能組合.很快小明就得到所有的組合變化數(shù)據(jù),從中得知對于任意小麗的某天情感狀態(tài)下,下一個最有可能的情感狀態(tài).
為了便于教學,我們假設小明只關心小麗的四種感情狀態(tài):高興 悲傷 氣憤還有憂慮
Table 1: 小麗的情緒狀態(tài)變化表
在這個表格中, 每個數(shù)字代表了小麗情緒從某列轉變到某行的概率. 比方說, 如果小麗某天的情緒是高興,那么她將有0.1的概率下一天她會變得 悲傷 或者是 氣憤, 有0.05的可能性轉變?yōu)?憂慮. 每一行代表了從某種情緒轉變到各種情緒的概率,因此每行的概率之和為 1.
同理,每一列代表了由各種情緒轉變?yōu)樵摿兴淼那榫w的概率,因此每列的概率總和也應該為1.
我們可以畫一個狀態(tài)圖(圖1)來表示表格1, 每個圓圈代表著一種心情狀態(tài), 每兩種心情變化由一個有向弧,從當前的心情狀態(tài)指向下一個心情狀態(tài)表示,每個弧上均帶有一個狀態(tài)轉換的概率.
Figure 1: 小麗的情緒狀態(tài)變化圖
有了這個圖表,小明就可以非常直觀地看得到小麗最有可能的下個心情會是如何. 她會很有可能變得悲傷嗎?(準備好鮮花巧克力),還是更有可能是氣憤?(趕緊閃開!) 每天小明只需要看看哪個弧指向的心情概率最大就可以了.
這個過程,同學們,就是有名的"馬爾可夫過程" (Markov process)
不過需要注意的是, 馬爾可夫過程有一些假設的前提. 在我們的例子里面, 預測下一天小麗的心情, 我們只依賴當天小麗的心情,而沒有去考慮更先前她的心情. 很明顯這種假設下的模型是遠不夠精確的. 很多時候,隨著日子一天一天的過去,女生一般會變得越來越體諒.經(jīng)常女生生氣了幾天后,氣就會慢慢消了. 比方說如果小麗已經(jīng)生氣了3天了,那么她第二天變得高興起來的可能性,在多數(shù)情況下,要比她只生氣了一天而第二天變得高興的可能性要高. 馬爾可夫過程并沒有考慮這個, 用行話講, 就是馬爾可夫模型忽略遠距離歷史效應 ( long range dependency).
我很佩服各位能堅持讀到這里, 不過,還沒完呢, 我仍然沒有說,隱式馬爾可夫模型 (Hidden Markov Model)是什么呢! 諸位如果已經(jīng)有點頭昏腦漲,請就此打住,以免大腦過熱死機!
隱式馬爾可夫模型 - Hidden Markov Model, or HMM for short.
有些時候,我們無法直接觀測一個事物的狀態(tài). 比方說, 有些女生是很能隱瞞自己的情感而不流露出來的! 他們可能天天面帶微笑但不代表他們就天天高興 因此我們必須要有竅門, 去依賴某些我們能夠直接觀察到的東西.
話說回來我們的主人公小明, 自從被小麗發(fā)現(xiàn)他這種近乎變態(tài)的科學分析行為后,變得非常善于隱藏自己的心情,導致某天小明錯誤估計了小麗的心情!在誤以為那天小麗會心情好的情況下,小明告訴小麗自己不小心摔壞了她心愛的iPod...,小明沒想到其實那天小麗正因為前一天錯過了商場名牌打折扣的活動而異常氣憤... 一場血雨腥風過后,兩個人最終分手了.
不過很快小明憑著自身的英俊高大瀟灑,很快又交上了另外一個女朋友 - 小玲. 鑒于小明意識到,女生表面的情感流露非常不可靠, 小明決定要另尋他徑, 繼續(xù)預測女朋友的心情! (作為一個數(shù)據(jù)科學家,小明的確有著不怕碰壁的精神!)
小明每個月都幫小玲付信用卡的費用(真不明白,有這樣的男朋友,小玲有什么理由不高興啊!), 因此小明每天都可以通過Online banking知道小玲每天都買了什么東西. 小明突然靈機一動: "沒準我能通過觀測她的購物規(guī)律,推導預測出小玲的心情!".聽起來有點匪夷所思,不過這個過程,的的確確是可以使用叫作隱式馬爾可夫的數(shù)學模型來表示并分析的.
由于我們需要預測的變量 - 心情狀態(tài) 是無法直接觀測的,是隱藏 (Hidden)起來的.因此這種模型才叫隱式馬爾可夫模型.
在一次和小玲的好朋友們一起吃飯的時候, 小明得知了以下重要的信息:"小玲高興的時候經(jīng)常去買一大堆新衣服", "那天小玲一個人去超市買了一堆吃的,一定是有什么心事了(憂慮)", "你千萬不要惹小玲生氣阿,不然她會刷爆你的信用卡的!", "小玲好幾次傷心難過的時候,一整天都宅在家里看雜志.". 知道了這些信息,小明擴展了他原先一直采用的馬爾可夫模型, 為每種隱藏的狀態(tài)(心情)賦予了新的可觀測狀態(tài)(Observables),這些可觀測狀態(tài)為:
1.\t大部分(>50%)花費是Fashion商場(O1)
2.\t大部分(>50%)花費在超市(O2)
3.\tOh my God! 一天刷了5000元以上!!! (O3)
4.\tOh yeah! 這一天她都沒花錢(O4)
為圖簡便,我們假設小玲和小明的ex小麗,有著同樣的實際心情轉換概率(圖1).
小明通過歸類統(tǒng)計小玲過往的信用卡帳單(天啊,怎么這么多!),發(fā)現(xiàn)了如表2所示的每天心情與每天信用卡消費之間的關系:
Table 2: 小玲的每天情緒狀態(tài)與當天信用卡花費的關系概率表
我要加一句的是, 由于概率的歸一性(各種可能性之和為1), 我們?yōu)榱瞬唤档捅疚牡膴蕵犯阈π? 規(guī)定如果某天小玲大部分的花費是Fashion或者是在超市,那么她的花費不可能超過5000, 這樣我們才有各行的 O1+O2+O3+O4 =1.
也就是說,當小玲高興的時候, 小明發(fā)現(xiàn)80%的情況下那些天小玲基本都買性感小衣衣了(:Q), 也有那么10%的情況下大部分買吃的了, 令小明郁悶的是,居然小玲高興了,還有那么5%的情況,刷了他5000+ ;最后剩下5%的情況小玲可能因為太高興而顧不上消費了(小明暗笑:"對對,就是那次,她心情特好, we BEEP all day, it was the best we ever had!" )
自此, 小玲心情的隱式馬爾可夫模型就出來了(圖2).
Figure2: 小玲的隱式馬爾可夫模型
有了這個模型,我們就可以回答這個問題:
"如果我知道了小玲的信用卡花費規(guī)律,我能否找出她最有可能的心情變化序列是什么?"
具體一點吧, 某次小玲到外地出差了一個星期, 小明每天打電話給她問她今天開心嘛? 小玲都說 "開心"...但實際呢?
小明自言自語說, 哼你不告訴我, 我就只好算算了! 小明Login到了小玲信用卡網(wǎng)站,打開statement,統(tǒng)計了一下,發(fā)現(xiàn)小玲這一個星期的消費規(guī)律是:"O2 O1 O4 O2 O3 O1 O4" (對應著消費序列 穿的, 吃的, 沒刷, 吃的, 刷爆, 穿的, 沒刷 )
有了這個消費序列和圖2的模型, 有辦法找出小玲這7天最有可能的心情序列是什么嗎?
信不信由你, Viterbi search algorithm (維特比搜索算法)就是用來計算出HMM模型中給定觀測序列O(消費規(guī)律), 對應的最有可能的隱藏狀態(tài)序列(心情變化). 關于Viterbi的原理和實現(xiàn)已經(jīng)超出本文的講解范圍了,有興趣的同學可以去Wiki或者動手Google一下. 簡單來說Viterbi屬于動態(tài)規(guī)劃 (Dynamic programming) 算法的一種,用來比較高效地計算出一個轉移矩陣及其觀測矩陣(分別對應我們的Table1 和 Table2)制約下的最大可能的隱藏狀態(tài)轉移序列 -如果我們事先知道觀測序列的話.
根據(jù)以上的轉移矩陣(table 1})和觀測矩陣(table 2), 建立起HMM模型并采用Viterbi算法(HMM還需要添加一個狀態(tài)起始概率來表示每種狀態(tài)作為起始狀態(tài)的可能性,由于小明沒有辦法知>道這個數(shù)字,因此只能作最簡單的假設 - 假設他們都是均勻分布的(uniformly distributed),所以每種狀態(tài)的起始>概率均為1/4).
可以知道,對應以上觀察序列,小玲那七天最為可能的情緒序列為:
憂慮 悲傷 悲傷 憂慮 氣憤 高興 悲傷
概率為 p=1.4x10^-5
看來小玲這次出差壓力不小啊!
嗚呼! 至此整個Hidden Markov Model就介紹完了.
當然,中間仍然有很多細節(jié)我是直接忽略了. 而且在現(xiàn)實使用當中,HMM模型中的規(guī)模要大得多,無論是隱藏的狀態(tài)數(shù)目,還是可觀測的狀態(tài)數(shù)目,都超過千計. HMM 及其相關算法被大量廣泛使用在各行各業(yè).在計算機信息學中, 大量語音識別, 中文分詞,中文拼音漢字轉換系統(tǒng)采用的都是隱式馬爾可夫模型.
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
訓練與驗證損失驟升:機器學習訓練中的異常診斷與解決方案 在機器學習模型訓練過程中,“損失曲線” 是反映模型學習狀態(tài)的核心指 ...
2025-09-19解析 DataHub 與 Kafka:數(shù)據(jù)生態(tài)中兩類核心工具的差異與協(xié)同 在數(shù)字化轉型加速的今天,企業(yè)對數(shù)據(jù)的需求已從 “存儲” 轉向 “ ...
2025-09-19CDA 數(shù)據(jù)分析師:讓統(tǒng)計基本概念成為業(yè)務決策的底層邏輯 統(tǒng)計基本概念是商業(yè)數(shù)據(jù)分析的 “基礎語言”—— 從描述數(shù)據(jù)分布的 “均 ...
2025-09-19CDA 數(shù)據(jù)分析師:表結構數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結構數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-19SQL Server 中 CONVERT 函數(shù)的日期轉換:從基礎用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18DSGE 模型中的 Et:理性預期算子的內(nèi)涵、作用與應用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結構數(shù)據(jù)特征價值的專業(yè)核心 表結構數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結構化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應用 在數(shù)據(jù)分析與統(tǒng)計學領域,假設檢驗是驗證研究假設、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結構數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結構數(shù)據(jù)(以 “行 - 列” 存儲的結構化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結構數(shù)據(jù)價值的核心操盤手 表格結構數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務邏輯:從規(guī)則拆解到數(shù)據(jù)把關的實戰(zhàn)指南 在業(yè)務系統(tǒng)落地過程中,“業(yè)務邏輯” 是連接 “需求設計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11