2019/02/21
根據「no free leach"理論,沒有可以適用於所有問題的演算法或者模型,所以在進行測試的過程中, 必然要測試多種演算法來選擇最好的。這個時候不同的演算法他體現出來的效能是不一樣的,必然就要有多種評價引數來進行對比。
在kaggle上,一些資料集是已經對訓練集和測試集進行了區分,這種情況我覺得是不用再進行資料集的切分,直接進行交叉驗證的,只需要直接在測試集上進行測試即可。(個人想法)
需要交叉驗證的場景,是指那種資料量比較少的情況下,僅僅有訓練資料,訓練誤差並不能體現出你相應的效能,要充分利用有限的資料。
進行多次驗證或者將測試集的比例增大,可以在統計學上提高演算法的置信度。
這個好像是有的,主要就是為了得到具有代表性的訓練和測試集。
書裡也對這部分進行了描述,他的說法叫做:stratification,我看sklearn中也有這個內容。
(官方文件[2]提到了這種方法sklearn.model_selection.stratifiedkfold,但要指定引數shuffle=true
,並且這個已經確定,跟原始資料的比例是一樣的2019/02/27)
(但是一定注意,在樣本非均衡的情況下,又是什麼樣的)
很久之前我在學習這部分內容(交叉驗證)的時候,我就很納悶,既然測試的每個內容不一樣,我是選擇哪個模型呢。不僅僅是書[1],還有很多文章,都指出,最後的步驟應該是把測試集也放回到訓練集中,然後利用所有的資料來生成最終的模型,這樣做的目的也很簡單,就是為了最大化的使用資料。
我知道的幾個評價引數:準確率、混淆矩陣、roc曲線、auc值、f1分數。準確率:這個算是最基礎的,演算法在構建的過程中同時會利用這個引數來調優。
sklearn中分類器的方法score是所有類別被分類正確的平均準確值,metrics.accuracy_score
混淆矩陣可以直接看出來多個類別他的分類效果,從混淆矩陣中可以得到相應的這個演算法測試得到的精確率和召回率等,還有f1分數。雖然f1分數的公式推導利用了精確率和召回率,是可以得到相應的多分類情況的推廣的。
roc這個東西的計算比較複雜,
這個回答簡單易懂,另外,我記得是,只有你的分類效果最終是帶有概率的才能繪製這個曲線,我去查下相關的資料。
上面這個問題的解答:
而且看完這個回答之後,就感覺自己對這部分的內容,真的是一點也沒沒懂。
這些引數,本質上是足夠的。在很多**中,基本上就是圍繞這些內容作為最後的評價引數
(這個**提供的內容,對我更是乙個打擊,,這就跟是說,我原來的時候都沒明白我要幹什麼。)
這裡要解釋的內容是說,針對模型評估和模型調參,不同的內容針對的目標是不一樣的。
(關於模型評估的部分,利用什麼網格搜尋調優引數,這種還是需要掌握;特別是今天看到了你如果是在非均衡樣本的情況下是怎麼處理的。 2019/02/26)
2019/02/21
模型評估部分的內容,遠比我想象中的內容要複雜的多。這次基本上對很多內容都通了,但還是不夠準確。
[1]i. h. witten, e. frank, and m. a. hall, data mining: practical machine learning tools and techniques, 3rd ed. burlington, ma: morgan kaufmann, 2011.
[2]sklearn.model_selection.stratifiedkfold
模型的評估
錯誤率 如果在m個樣本中有a個樣本分類錯誤,那麼錯誤率 a m 精度 1 錯誤率 誤差 實際 輸出與樣本的真實輸出之間的差異 訓練誤差 經驗誤差 學習器在訓練集上的誤差,在很多情況下,我們都可以學得乙個經驗誤差很小,在訓練集上表現很好的學習器 泛化誤差 在新樣本上的誤差,我們希望得到的是乙個泛化誤差...
kmeans及模型評估指標 模型的評估指標
想必大家都知道,構建機器學習模型就是為了能夠更好的訓練我們的資料集,使得模型的準確率達到最大,那麼當我們構建好了我們的學習模型,可以通過哪些指標來評估我們模型的好壞呢?這就是我今天要給大家介紹的內容。一.精確率與召回率 1.混淆矩陣 在分類過程中,結果與正確標記之間存在四種不同的組合,構成了混淆矩陣...
模型評估的方法
一 回歸模型評估 1 mse 均方誤差 sklearn.metrics.mean squared error y test,y predict 二 分類模型評估 1 accuracy score分類準確率分數 正確的樣本數目佔總體的比例 正確的樣本數目 正例 正確的 負例 正確的樣本數 注 如果乙個...