機器學習中的用於聲稱性能的指標標準不多被討論。因爲在這個問題上彷佛沒有一個明確的、普遍的共識,所以我認爲提供我一直在倡導並儘量遵循的標準可能會頗有趣。它源於這個簡單的前提,這是個人科學老師從中學開始就灌輸給個人:bootstrap
科學報告的通常規則是,您寫下的每一個數字都應爲「 真」的,由於「 真」的定義是什麼。機器學習
讓咱們來研究一下這對測試性能等統計量意味着什麼。當你在科學出版物中寫下如下陳述時:ide
測試準確率爲52.34%。你所表達的是,據你所知,你的模型在從測試分佈中提取的未見數據上成功的機率在0.52335和0.52345之間。性能
這是一個很是強有力的聲明。學習
考慮你的測試集是從正確的測試分佈中抽取的N個樣本IID組成的。成功率能夠表示爲一個二項式變量,其平均機率p由樣本平均值估計:p ≅ s / N測試
其標準差爲:σ=√p(1-p)。圖片
其中當p=0.5時,其上限爲0.5。部署
在正態近似下,估計量的標準差爲:δ=σ/√N。數學
這個精度估計上的偏差δ 是這樣的,在最壞的狀況下,有約50%的精度:it
機器學習中的數學意義
換句話說,爲了保證上述報告中例子52.34%的準確率,你的測試集的大小至少應該在30M樣本的數量級上!這種粗略的分析很容易轉化爲除了準確率之外的任何可計算的數量,儘管不能轉化爲像似然率或困惑度這樣的連續數字。
下面是一些常見的機器學習數據集的說明。
在ImageNet上能夠合理地報告多少位數的精度?準確率在80%左右,測試集是15萬張圖片:
√(0.8*0.2/150000) = 0.103%
這意味着你幾乎能夠報告XX.X%的數字,而實際上每一個人都是這樣作的。
MNIST呢,準確率在99%:
√(0.99*0.01/10000) = 0.099%
噗,也報個XX.X%就OK了!
然而,最值得注意的是,在大多數狀況下,性能數據並非單獨呈現的,而是用來比較同一測試集上的多種方法。在這種狀況下,實驗之間的抽樣方差會被抵消,即便在樣本量較小的狀況下,它們之間的準確度差別也可能在統計學上很顯著。估計圖方差的一個簡單方法是執行bootstrap重採樣。更嚴格、一般更嚴格的檢驗包括進行配對差別檢驗或更廣泛的方差分析。
報告超出其內在精度的數字可能很具備極大的吸引力,由於在與基線進行比較的狀況下,或者當人們認爲測試集是一成不變的狀況下,同時也不是從測試分佈中抽取的樣本時,性能數字每每更加劇要。當在生產中部署模型時,這種作法會讓人感到驚訝,而且固定的測試集假設忽然消失了,還有一些可有可無的改進。更廣泛的是,這種作法會直接致使對測試集進行過擬合。
那麼,在咱們的領域中數字爲「真」意味着什麼?好吧,這確實很複雜。對於工程師而言,很容易辯稱不該該報告的尺寸超出公差。或者對於物理學家來講,物理量不該超過測量偏差。對於機器學習從業者,咱們不只要應對測試集的採樣不肯定性,並且還要應對獨立訓練運行,訓練數據的不一樣初始化和改組下的模型不肯定性。
按照這個標準,在機器學習中很難肯定哪些數字是 "真 "的。解決辦法固然是儘量地報告其置信區間。置信區間是一種更精細的報告不肯定性的方式,能夠考慮到全部隨機性的來源,以及除簡單方差以外的顯着性檢驗。它們的存在也向你的讀者發出信號,代表你已經考慮過你所報告的內容的意義,而不只僅是你的代碼所獲得的數字。用置信區間表示的數字可能會被報告得超出其名義上的精度,不過要注意的是,你如今必須考慮用多少位數來報告不肯定性,正如這篇博文所解釋的那樣。一路走來都是烏龜。
數字少了,雜亂無章的東西就少了,科學性就強了。
避免報告超出統計學意義的數字結果,除非你爲它們提供一個明確的置信區間。這理所固然地被認爲是科學上的不良行爲,尤爲是在沒有進行配對顯著性測試的狀況下,用來論證一個數字比另外一個數字好的時候。僅憑這一點就常常有論文被拒絕。一個良好的習慣是對報告中帶有大量數字的準確率數字始終持懷疑態度。還記得3000萬、30萬和30萬的經驗法則對最壞狀況下做爲「嗅覺測試」的統計顯著性所需樣本數量的限制嗎?它會讓你避免追逐統計上的「幽靈」。