kaggle的quora question pairs比賽的任務是: 對於乙個樣本, 由兩個句子組成, 判斷兩個句子是不是同乙個意思. 是乙個二分類問題.
比賽使用的評價方式是log loss, 即邏輯回歸中的損失函式. 對於這種特定的評價方式, 能用下面的方法, 探測出提交的測試集中, 正樣本的比例.
得到測試集中正樣本的比例之後,乙個比較有效的提高leaderboard排名的方式是: 判斷訓練集和測試集中的正樣本比例相差是否過大. 假設它們來自於同乙個分布取樣得到的, 那麼就應該調整訓練集的樣本比例或者使用改造的損失函式來解決訓練集和測試集分布不一致的問題.
data analysis & xgboost starter (0.35460 lb)中, 作者在使用xgboost進行訓練之前, 對負樣本進行了oversample. 原因是訓練集中的正樣本比例為36%, 高於測試集中的17%. 然而測試集並沒有標籤, 17%的數值是如何獲取的呢?
在how many 1's are in the public lb?中描述的具體的原理和方法, 簡述如下:
計算訓練集的正樣本的比例. 並作為乙個常數, 作為每個樣本的**概率. 在quora question pairs問題中, 這個比例約為0.37, 將其作為測試集的**概率並提交, 得到返回的log loss, 此例中為0.55.
log loss公式為(單樣本):
\[\text=r \cdot log(p) + (1-r) \cdot log(1-p)
\]\(p\)為**概率, 也就是我們給出的常數**0.55, \(r\)是測試集中的正樣本的真實概率, 也就是測試集中正樣本的比例. 因此, 可以得到:
\[r = \frac + log(1-p)}\big)}
\]因此得到測試集中正樣本的概率為0.174
如果得到的測試集中的正樣本比例與訓練集中的比例不平衡的時候, 調節的方法有:
使用新的損失函式進行訓練
\[\text = \alpha \cdot y \cdot \log(\hat) + \beta \cdot (1-y) \log(1 - \hat)
\]其中, \(\alpha\)為[訓練集正樣本比例]/[測試集正樣本比例], \(\beta\)為[訓練集負樣本比例]/[測試集負樣本比例]. 原理見cross entropy and training-test class imbalance.
負取樣, 確保訓練集與測試集的正樣本比例相同.
機器學習中的訓練集 驗證集 測試集
訓練集用來訓練模型,即確定模型的權重和偏置這些引數,通常我們稱這些引數為學習引數。而驗證集用於模型的選擇,更具體地來說,驗證集並不參與學習引數的確定,也就是驗證集並沒有參與梯度下降的過程。驗證集只是為了選擇超引數,比如網路層數 網路節點數 迭代次數 學習率這些都叫超引數。比如在k nn演算法中,k值...
機器學習中的訓練集 驗證集 測試集
用來訓練分類器中的引數,擬合模型。會使用超引數的不同取值,擬合出多個分類器,後續再結合驗證集調整模型的超引數。當通過訓練集訓練出多個模型後,為了能找出效果最佳的模型,使用各個模型對驗證集資料進行 並記錄模型準確率。選出效果最佳的模型所對應的超引數,即用來調整模型超參。通過訓練集和驗證集得出最優模型後...
深度學習中的訓練集與測試集
看上面的圖,這是乙個邏輯回歸演算法的dag 有向無環圖 它是這個二分類演算法的簡單應用流程的展示。可以看到我們在採集完資料並做過處理後,會把資料進行拆分。訓練集作用訓練模型,而測試集會被輸入到模型中來評估模型的效能。這是我們測試人工智慧服務的最常用方式,通過這個流程會產生乙個模型的評估報告,如下 當...