Scholomance Academy 读题训练,模拟(沈阳)
生活随笔
收集整理的這篇文章主要介紹了
Scholomance Academy 读题训练,模拟(沈阳)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意 :
- 給出n組,每組包含一個字符(+/-)和一個數值
- 對于任意一個數值x,如果x大于θ\thetaθ且為正,為TP;x大于θ\thetaθ且為負,為FP;x小于θ\thetaθ且為正,為FN;小于θ\thetaθ且為負,為TN
- 現定義TPR=TP/(TP+FN)TPR=TP/(TP+FN)TPR=TP/(TP+FN),FPR=FP/(TN+FP)FPR=FP/(TN+FP)FPR=FP/(TN+FP)
- 可以發現TPR即所有字符為正的數值中屬于TP的數量,FPR…
- 可以根據取不同θ\thetaθ時TPR和FPR的值畫出曲線,要求根據的ROC曲線,求出AUC(曲線下面積)
思路 :
- AUC即取到FPR<=1的所有θ\thetaθ對應的TPR這條曲線下的面積,結合圖例(分段常數函數)是多個矩形的面積,由若干段TPR*FPR相加,現在的問題是不知道哪里是分界點
- 發現橫縱坐標相乘TPR?deltaFPR=(TP?FP)/((TP+FN)?(TN+FP))TPR*deltaFPR=(TP*FP)/((TP+FN)*(TN+FP))TPR?deltaFPR=(TP?FP)/((TP+FN)?(TN+FP)),又發現分母是所有字符正乘所有字符負,也就是說分母永遠是常數,因此可以先將分子累加,最后除分母
- 根據FPR的值從小到大(由定義公式推出θ\thetaθ從小到大)cmp函數是從小到大的,若值相同,’+'排在‘-’前,這樣得到的一組坐標,它的橫縱坐標都是遞增的(非嚴格遞增)),這樣就可以計算了
- 將+和-的值分別放在兩個數組里,進行從小到大的cmp排序
- a.end() - upper_bound(a.begin(), a.end(), b[i]) 返回大于b[i]的有幾個
題解二 :
- 當theta變大時,tpr和fpr同時變大,注意到auc函數單調性(當r較大時 我們讓FPR盡量大 這樣可以讓θ盡量大 使得TPR變大),且為若干斜率為0的直線(當r在一段較小的區間內波動時 FPR不會變化 如果讓TPR盡量大 就令θ盡量大 此時TPR也不會變化),我們可以分割成一個個的矩形求面積,在遍歷的時候將函數分成TN+FP段,每一段長度為1/(tn+fp)
總結
以上是生活随笔為你收集整理的Scholomance Academy 读题训练,模拟(沈阳)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kobolds and Catacomb
- 下一篇: Journey to Un‘Goro 贪