當前位置首頁 > 新聞> 正文

不能更通俗易懂的機器學習名詞解釋q秀文筆|模型|陽性|測試_科技

2017-06-14 新聞 模型   陽性   測試

雷鋒網(公眾號:雷鋒網)按:本文作者 filwaline,原載于作者知乎專欄,雷鋒網已獲授權。

train? valid? or test?

機器學習最明顯的一個特點是需要大量的數據。特別對監督學習來說,就是需要大量的帶標簽數據(labeled data)。

很多入門的朋友很快就會遇見模型訓練和測試這兩個階段,進而也就了解到帶標簽數據是要被劃分成兩個部分的:訓練集(training set)與測試集(test set)。這兩個概念也很直觀,大部分朋友非??炀湍芙邮?。

可是到后面,在我們需要為機器學習模型調參的時候,半路殺出來了個交叉驗證(cross validation)階段,這個對應的數據集也有個名字,叫做驗證集(validation set)。

據我觀察,很多入門機器學習的朋友在這個時候就會感到一頭霧水,并且非常困惑:咋又冒出來了個驗證集???我們不是有個測試集了嗎?直接在那上面做實驗不就好了么?又劃分多一個數據集,那就使得能用于訓練和測試的數據都變少了,驗證集是那方神圣???...

這里我給你們來個非常形象的類比!別眨眼!

訓練集 → 題解大全

驗證集 → 模擬考試

測試集 → 高考!

是不是非常形象易懂呢?(得意臉)

呃?搞不懂為什么是這樣的對應關系?別急我還沒說完呢。

機器學習算法是個笨學生,他沒法直接從人類教師那里學會抽象的概念,于是唯一有效的策略就是天賦不足勤來補:玩命刷題! 想想看帶標簽的訓練數據,是不是很像你平時做的習題冊呢? 數據本身是題目,標簽是正確答案。所以機器學習算法能夠通過大量做題來學會抽象概念(但是這個傻孩子實際上只學會了怎么解答與特定抽象概念相關的問題)。

你說你學會了東西,但空口無憑啊,你得通過考試來證明自己!于是就有了測試集。測試集相當于考試的原因是,你只能看到題目(數據)而無法得知答案(標簽)。你只能在交卷之后等老師給你打分。

于是就有朋友發問了:“那我一遍一遍考試來證明自己不就好?我大學掛科補考還少么?”。首先心疼你一秒鐘。然后請你思考這個問題,如果那場考試是高考怎么辦?你耗得起嗎?

所以我們需要模擬考試,也就是驗證集。我們可以獲得驗證集的標簽,但是我們假裝得不到,讓自己以考試的心態去面對,過后也就能通過自己對答案來了解自己到底學會了多少,而這種幾乎沒有成本的考試我們想進行多少次都行!這就是驗證集存在的意義!你的模型只能在測試集上面跑一次,一考定終身!

我們需要驗證集的真正原因是:防止機器學習算法作弊!我們訓練一個機器學習模型不是為了讓它在那有限的帶標簽數據 high 個夠,而是要將模型應用于真實世界。絕大多數情況下,我們無法直接從真實世界獲得答案,我們能收集到的數據是沒有標簽的裸數據,我們需要高效準確的機器學習模型為我們提供答案。不能直接使用測試集不是因為我們負擔不起在測試集上跑模型的成本(事實上幾乎為0),而是因為我們不能泄露測試集的信息。試想一下,假如你搞到了真正的高考題和答案,你一遍又一遍地去做這套題目,會發生什么?也許你會成為高考狀元,可是你真的學會這些知識了嗎?你能夠再去做一套高考題并且拿高分嗎?你能夠去當家教向學弟學妹傳授你的知識和解答他們的問題嗎? 偷窺到了測試集的機器學習模型就是廢品,沒有人需要它,它也做不了任何有用的事情。

切記,你的機器學習模型只能在測試集上跑一次,一考定終身!

切記,你的機器學習模型只能在測試集上跑一次,一考定終身!

切記,你的機器學習模型只能在測試集上跑一次,一考定終身!

切記,你的機器學習模型只能在測試集上跑一次,一考定終身!

切記,你的機器學習模型只能在測試集上跑一次,一考定終身!

超級重要的事情說五次還嫌少,我得加粗了才行。哦還得加大字號,我怕你近視眼看不見!

都說到這個地步了,順便借這個類比說說過擬合(overfit)和欠擬合(underfit)的事吧。過擬合的模型是個真正的書呆子,玩命刷題解大全(Demidovich),但是只記住了所有的習題和答案,去做模擬考試就直接傻掉了。欠擬合的模型就是個不聽課還懶惰的學渣,連習題冊上的題目都搞不懂,別說模擬考試了。高考?呵呵呵。

accuracy? precision? recall?

accuracy 就是百分制的考試分數,我是想不到要怎么解釋了。(摳鼻)

precision 和 recall 倒是有兩個非常好的意象。

這里先說一下 precision 和 recall 哪來的。想象你在做一套全都是判斷題的考試題,你的答案總會跟正確答案有些出入(學神,學霸和 overfit 的書呆子一邊去)。

真陽性、假陽性、假陰性和真陰性

對比上面的表格很容易看出,你做對的題會對應著 真(True) 這個前綴,對了就對了,不管啦。而你做錯的題則帶了 假(False) 的前綴,做錯的題分兩種:你回答真但答案是假,這是假陽性;你回答為假但是答案為真,則為假陰性。很明顯,陽性陰性是對應著你的回答。

那我們為啥需要這亂七八糟的東西?直接用accuracy來衡量不就好了?

假設你有一個大小為1000的帶布爾標簽數據集, 里面的“真”樣本只有100個不到,剩下的都是“假”樣本。你說這沒什么??? 別急,想象你訓練了一個模型,不管輸入什么數據,它都只給出“假”的預測。這顯然是個失敗模型,也就比停了的鐘好一點(哦不對,是五十步笑百步),但是它在你這個數據上可能能拿到90分以上哦? 很明顯,這個時候accuracy已經失去它的作用了。是時候讓亂七八糟的概念上場了。

precision:嚴謹認真的普通日本人

多做多錯 少做少錯 不做不錯precision 和 recall 一般只在有傾斜數據集的時候出來玩。我們一般把數量較少的樣本叫陽性樣本,一般情況下我們也只關心陽性樣本的預測結果。最常見的傾斜數據例子是癌癥檢查,得了癌癥的不幸的人就是陽性樣本,相對于健康的大眾,他們是稀少的存在。

精確率 等于 真陽性 與 所有被預測為陽性的樣本 之比。

為什么說多做多錯少做少錯的理由很明顯了吧? 如果模型預測為陽性的樣本越少,那么它犯錯的可能性也就越小,也就是說精確率越高了。

思考題:一個精確率超級高的模型有什么問題?

recall:威武霸氣的川普移民禁令

寧可錯殺,不能放過

召回率 等于 真陽性 與 所有真正的陽性樣本 之比

冤枉你就冤枉你咯,不服來咬我??? —— 川普

川普爸爸近來又搞了個大新聞,多國移民禁止入境。理由當然是防止恐怖分子混入美利堅大地啦,你們這些國家的人素質太差動不動搞恐怖襲擊,我實在沒精力去一個個查,所以你們通通別來了,我樂得輕松。

recall 的公式里并沒有假陽項,這說明它不關心自己冤枉了多少人,只要假陰的數量越少越好,恐怖分子一定不能漏了。

思考題:召回率與精確率是如何互相掣肘的?

wiki 的配圖也很棒,對比看看吧:

learning rate?

原本計劃弄兩個動圖出來,可是 matplotlib 和 moviepy 死活導出不了gif(而且知乎文章也不支持),想玩的自己復制代碼吧。Github Gist 很簡陋,不過這種東西也沒必要做復雜是不是2333

源代碼鏈接:http://t.cn/RSeGsf0

學習率通常都會用步子的大小來形象比喻:

步子邁大了容易扯著蛋... 你會得到一個發散思維很強的模型...

步子走得太小啊... 你聽說過閃電么?

好了正經點(一臉嚴肅)。計算完梯度以后,模型就需要更新它的參數了。梯度指出了一個讓loss提升最快的方向(沒錯是提升),學習率控制我們應該朝反方向走多遠,學習率太大了可能會越過最低點,變得難以收斂甚至會發散。學習率調低一般就能回避overshoot的問題了,但是調太低會讓模型半天不挪窩,于是模型會收斂得很慢。這對小規模的機器學習問題影響不大,但是這個大數據時代是無法接受的。針對當前問題找一個合適的學習率很重要(機器玄學入門第一步),可惜一般只能靠猜靠試,現在有一些能幫你調整的學習率的算法,太超綱就不說了。

雷鋒網相關閱讀:

“回歸分析”真的算是“機器學習”嗎?

你在數據預處理上花費的時間,是否比機器學習還要多?

開發者專場 | 英偉達深度學習學院現場授課

英偉達 DLI 高級工程師現場指導,理論結合實踐,一舉入門深度學習!

課程鏈接:http://www.mooc.ai/course/90

91免费观看在线网址