要想獲取好的結果,按照流程工作很重要,並且仔細檢查確保不犯常見錯誤。
1)先針對特定問題,選演算法。一般不會用最新的,而是用最成熟的,大概會選擇2到3個演算法。
2)實現演算法,小規模樣本保證流程正確。有資料就爽,不然還要收集。
3)調引數,選特徵。得到模型的最優解。
4)針對特定問題會進行少量的修改。
根據要解決的問題和對資料的理解,大致決定出模型的搜尋範圍,如嘗試svm,邏輯回歸,隨機森林等。如資源允許,可擴大模型候選名單。
根據要解決的問題和對資料的理解,決定模型的評估標準。雖然建議選擇單一的評估標準進行對比,但推薦計算所有可能的評估標準。
根據具體問題中的資料量大小,以及模型穩定性,決定是否使用交叉驗證。
結合引數搜尋、交叉驗證方法,通過選定的評估標準從候選模型中找到表現最好的模型。
對上一步中的所選模型進行微調。迭代以上步驟直到找到最優的模型。
1)你最偏向使用哪個機器學習演算法?
我會逐個來篩選演算法,但我更喜歡在模型整合時使用一些簡單演算法,如嶺回歸(ridge regression)。在深度學習比賽中,我喜歡從resnet-50網路或類似結構來開始嘗試。
2)把回歸問題轉為分類問題,犧牲一部分精度;
3)捨棄掉一部分密度很低的資料,對於高密度區域根據密度重建模型;
4)如果不行,對於高密度區域用有限混合模型(finite mixture model)再做一次。
1)在整合數模型中,優先推薦使用xgboost
2)在中小資料集上,優先選擇整合樹模型。大資料集上推薦神經網路
3)在需要模型解釋度的專案上,優先使用樹模型
4)在專案時間較短的專案上,如果資料質量低(大量缺失值、噪音等),優先使用整合樹模型
5)在硬體條件有限及機器學習知識有限的前提下,優先選擇樹模型
6)對於結構化較高的資料,尤其是語音、、語言,優先使用神經網路模型(往往其資料量也較大)
一般來說,在小資料量多特徵下,整合的樹模型往往優於神經網路。隨著資料量增大,兩者表現趨於接近,隨著資料量繼續上公升,神經網路的優勢會逐步體現。這個跟很多答主提到的一樣:隨著資料量上公升,對模型能力的要求增加而過擬合的風險降低,神經網路的優勢終於有了用武之地而整合學習的優勢降低。
用個不恰當的比喻,整合樹模型就像python,而神經網路就像c++。前者簡單粗暴效果好,容易上手優點多,後者比較精貴更為複雜但嚴肅專案上潛力很大。如果你願意好好學習資料結構、記憶體分配和要命的指標,c++幾乎無所不能。但如果你只打算寫個簡單的網路爬蟲,python十行就可以搞定。
綜上來看,大部分專案建議使用整合決策樹,首推xgboost,速度快效果好用時少。特定的複雜且資料量大的專案,建議還是老老實實的為神經網路調參,拿出debug c++ pointer的精神來。
2)關於nn中的無監督逐層預訓練
現在的人用得少了,但會用的人用得如火如荼,不會的人只能說沒用了。
模型評估與選擇
錯誤率 分類錯誤的樣本書佔樣本總數的比例 誤差 學習器的實際 輸出與樣本的真實輸出之間的差異 訓練誤差 經驗誤差 學習器在訓練集上的誤差 泛華誤差 在新樣本上的誤差 過擬合 學習器把訓練樣本學的 太好 了,很可能已經把訓練樣本本身的一些特點當作了所有潛在樣本都會具有的一般性質,導致泛華效能下降。欠擬...
模型評估與選擇
1.概念 錯誤率 錯誤分類的樣本數佔樣本總數的比例 精度 1 錯誤率,即正確分類的樣本數佔樣本總數的比例 經驗 訓練 誤差 學習器在訓練集上的誤差 泛化誤差 學習器在新樣本上的誤差 過擬合 學習器在訓練集上效果太好,而在新樣本上的效果較差的現象。模型選擇 不同學習演算法或者相同的學習演算法,當使用不...
模型評估與選擇
當我們有一堆模型,哪個是最好的呢?一 定義 錯誤率精度 是不是就是正確率?誤差訓練誤差 經驗誤差 泛化誤差 二 過擬合與欠擬合 過擬合 學到了過多東西,那些特徵並不是正確的。欠擬合 有些特徵沒有學到 過擬合 比較難解決 欠擬合 比較好解決,比如決策樹中擴充套件分支 神經網路中增加訓練輪數 怎樣評價乙...