“ 艦長還是還是那個艦長嗎?”
01—尾艙壓力閥脫落
穿過引力沼澤之後,大家稍微平復了一下情緒,開始籌劃下一步的路線。
議事廳裡議論紛紛,各抒已見,誰都沒有聽見,就在議事廳的側壁上傳來了嘶嘶聲,就像老舊機械硬盤故障時傳來的嘶嘶聲。只有向來不愛發言的naco躲避著人羣,走到議事廳一角的椅子旁坐了下來。他剛坐下就注意到了這奇怪的嘶嘶聲,左瞧右瞧,最後指著連接尾艙的管道對大家喊:艦船好像有故障,大家過來看一下!
議事廳從嘈雜中漸漸靜下來,紛紛警覺地跑向naco所在的位置查看情況。
工程師逐步排查,發現是艦體躲避天體碎片攻擊的時候,尾艙被一個當時未能成功躲避的天體碎片劃出了一個口子。因爲艦船三級保護機制的存在,艦船沒有報警,但是現在這個傷口已經導致艙壓減小到了安全閾值以下,二級保護機制即將失效,尾艙的30個懸空壓力閥(懸空壓力閥控制著整個艙體內部的壓力,如果懸空壓力閥失效,短時間內艙體內部氣體泄露導致壓力會驟減,最嚴重後果是艙體內逐漸失去適合K星人生存的壓力環境)全部因爲壓力失衡原因脫落,要解決這個問題需要:
(1)修復傷口,停止艙壓繼續減小
(2)艙內充壓,使尾艙壓力恢復到源水平
(3)恢復30個懸空壓力閥各自的位置
做到前兩點不難,但是第(3)步… …,倘若這30個懸空壓力閥的大小或者形狀不一樣或者標記著各自的位置,那這個問題也就解決了。難就難在,30個壓力閥的模樣一模一樣,形狀大小體積重量密度顏色全都一樣,只有一個地方不一樣。
顯示所有大圖
從開普勒452b出發前壓力總工曾跟艦長說過,尾艙的壓力閥與艙內其他部位的壓力閥是“親戚”,但是他們都有自己的“身份”,每個壓力閥都是“分裂型人格”。
尾艙壓力閥的失效導致了艦船部分系統的間歇性宕機,而艦長的暗語系統恰好就在其列,這就意味著失去了壓力閥的“身份”,無法恢復原位… …
現在需要靠大家的智慧來破解這玄機了!
艦長說在暗語系統宕機之前他曾經破解過一部分:意思是所謂的身份,指的是每個壓力閥都有一個ID,這個ID是由“多重人格”組成的,但是“多重人格”是什麼還沒有來得及破譯,說到這,艦長愧疚地嘆了口氣。
BIT拿起掉落艙底的一個壓力閥仔細端詳,但是似乎也沒有看出什麼門道,便將這顆壓力閥放到了面前的桌子,而從naco的位置看這顆壓力閥,正好是被尾艙的紅外光源透過的視角,naco鬼頭鬼腦地走到這顆壓力閥前面,盯著壓力閥看了半天,再一次吸引了大家的注意力:大家過來看,壓力閥上有數字!
艦長及BIT等走到naco的身後觀察這顆壓力閥,看到了上面清晰的一串數字:
23 15 07 91 22 17 54... ...89
是的,每個壓力閥透過紅外光源的照射都有這麼一串數字!
BIT恍然大悟,艦長所說的“多重人格”指的是多個不同的特徵,就像一個蘋果的顏色、打小、形狀等;每個壓力閥的身份就是不同特徵的值的集合;尾艙壓力閥與其他部位的壓力閥是“親戚”指的是他們在同一個特徵空間,在概率上是獨立同分布的(也就是處在艦船不同位置不同區域的壓力閥都有對應的位置類別,比如上、下、左、右,中等)!
如此一來,雖然尾艙的30個壓力閥的位置不清楚,但艦船其他位置的壓力閥所在的位置我們清楚(相當於有了一批監督數據),既然每個壓力閥都有一串數字作爲“身份”,那麼我們就可以通過已知位置的這些壓力閥的位置分佈(在這部分數據上訓練監督模型),找到尾艙這30個壓力閥位置應該在何處(通過訓練之後的模型進行預測)。
BIT向艦長申請調到了所有壓力閥的位置分佈圖和“身份”信息——每個壓力閥攜帶的一串數字;分析道:既然是“分裂型人格”,那麼佔主導的人格就會主導這個壓力閥的大致方位;佔次要位置的“人格”在能夠進一步明確這個壓力閥更具體的位置;如此,通過找到哪一列數字(也就是哪一個特徵或者哪一個“人格”)佔主要,哪一列數字次之... ...給這些數字的重要性排好序,然後按照這些數字的順序依次去鎖定壓力閥的更具體的位置,直到確定出來的最後的位置就是真實位置,那麼我們就找到了合理的順序去根據這些數字確定壓力閥的位置;對於尾艙的30個壓力閥,我們都可以找到確定的位置,整個過程就像根據西瓜的衆多特徵找出哪個是好瓜:
那麼如何知道哪些數字更重要,哪些數字作用更小呢?
試!
大家笑了...
BIT進一步說,關鍵就是怎麼試,每次嘗試得知道好壞。BIT解釋道:就像我們的宇宙,混沌一片,混亂無序是常態,想把身邊的物體變得井然有序,變得整潔就需要我們做一些努力,哪怕這些努力是輕輕的挪動一下椅子,掃掉地面的灰塵。
星牛說:我覺得我已經繞進去了,暈,怎麼扯遠了呢?
BIT哈哈一笑,就是說到:刻畫宇宙的混亂程度,我們可以用熵這個指標。熵越大越混亂,熵越小越有序;那麼爲了刻畫我們每次選擇哪個數字作爲當前最重要的特徵去判斷壓力閥的具體位置的時候,我們就需要刻畫每次選擇之後的信息的混亂程度變化多少,同樣的道理,我們就可以用“信息熵”這個概念:
-plogp,log是對數函數,p就是概率,也就是可能性大小。
說人話就是,我們想要挑選這樣的特徵:在選用這個特徵去判斷每個壓力閥所屬的【上下左右中】具體位置類別之前,各類別比較混亂,就是啥位置的都有;在選用某個特徵(也就是特徵對應的數字)去判斷位置之後,屬於位置上面的都劃到一塊,位置下面的都劃到一塊,這樣比之前有序了一點,起碼上面的和下面的不會摻和在一塊,那信息熵就減小了一些;我們需要看看選哪個特徵能夠讓這個變化最大,也就是選哪個數字能夠讓這些壓力閥的位置更有區分性。這個區分性的程度就通過信息熵的差,也就是信息增益來刻畫:
假如除了尾艙之外的所有位置一共有D個壓力閥,他們在艦船不同的位置都是按照上下左右中這樣的位置來擺放的,而且上下左右中位置的壓力閥個數分別是a,b,c,d,e,那麼這時的混亂程度——信息熵就可以表示爲:
(-a/D)log(a/D) + (-b/D)log(b/D) +(-c/D)log(c/D)+(-d/D)log(d/D) +(-e/D)log(e/D) = A
每一類的熵加在一起,就是現在所有這些壓力閥的混亂程度;每一類的佔比,就是-plogp公式裡面的p,比如a/D這個比例就是a這一類的概率,以此類推... ...
然後呢?比如我們按照第一個數字分,分完之後D個壓力閥劃分成了3坨,每一坨里面有的位置分對了,有的分錯了,也就是說每一坨里面還是回有一定的混亂程度,但是已經沒有像原來那麼混亂了,比方說第一坨,裡面20個壓力閥,有15個都是“上”這個位置的,其他5個分錯了;其他的坨也一樣;假設這3坨的信息熵也就是混亂程度分別是aa,bb,cc;三坨的壓力閥的數量分別是n1,n2,n3;那麼按照第一個數字分完之後的總體混亂程度(信息熵)就是:
n1/D * aa + n2/D * bb + n3/D * cc = B,
那麼劃分之後更有序了,信息熵應該小,所以B < A, 用A-B得到的差就是信息增益;
然後再去試試用第二個數字走一遍;
用第三個數字走一遍;
... ...
發現第三個數字的時候,能夠讓劃分之後的壓力閥更有序,也就是區分的更好,大概可以把上下左右中分個差不離... ...
然後星牛搶過話茬:然後接著分,再看一遍其他數字,看看哪個適合用來進一步確定那些分的不對的壓力閥的位置... ...直到最後所有的壓力閥位置都分對了,那麼說明我們找到了利用這些數字判斷壓力閥位置的順序;也就是我們知道,先看哪個數字,再看哪個數字,,,,最後看哪個數字能夠把位置判斷的最正確。
“哈哈哈”,BIT拍了一下星牛的肩膀:“學得很快嘛!”
就這樣,通過BIT的方法,找到了尾艙30個壓力閥所處的方位,艦體成功修復!
衆人目瞪口呆:BIT怎麼一下子有這麼強的分析與抽象能力了!
只是一旁的naco忽然想起來一件事:幾天前,在大家統一休息時,naco失眠出來艦長曾獨自一人進入了按規定本需安全小組全體成員在場才能進入的安全會議室並待了很長時間… ...
02—掉書袋
шшш●тt kǎn●C〇
【1】 上述情節是對決策樹分類算法的一個通俗演義。
【2】 決策樹就像一堆if-else集合,不斷地進行選擇從而走向不同的分支,最終走到葉子結點(也就是最終的位置)。
【3】 有時候決策樹在部分數據上訓練之後,容易過擬合(也就是過於貼合訓練數據,導致模型遷移到其他數據上時表現不佳),這時候可以對決策樹進行剪枝——也就是裁掉部分節點或者換句話說減少一些if-else規則。
【4】 奧卡姆剃刀原則是機器學習中經常遵守的基本原則,簡單說就是達到相同的效果(如正確率)需要的參數越少越好或模型的規模越小越好。
【5】剪枝分爲預剪枝和後剪枝,預剪枝指的是對特徵進行篩選,也就是通過挨個嘗試每個特徵進行劃分之後的正確率更大,就採用哪個特徵;後剪枝指的是事先先訓練好一個決策樹,然後自底向上對非葉子結點進行判斷:如果刪掉該節點,整棵樹的分類正確率是否提高,如果提高了,那麼裁減掉這個節點及其葉子結點,從而達到縮減模型複雜度的效果,提高泛化性。
03—參考文獻
1. 關鍵字:《統計學習方法》、李航
2. 關鍵字:《機器學習》、西瓜書、周志華
3. 關鍵字:coursera、決策樹