作排序的話用LR和NN比較多,像GBDT這種模型也是能夠輸出機率值。面試
能不能找一函數將連續的y值約束到某一個範圍內,常見的範圍是0-1(機率)。 算法
這是非凸函數,即有不少個窪點。 網絡
損失函數不必定都要求是非凸的,神經網絡裏面用的loss function就是非凸的,不過他用的是SGD,保證隨機找一個接近全局最優勢便可。函數
在負樣本的狀況下,若是h_θ(x)預測出來是正樣本機率很高0.99,那麼損失函數負log以後的損失值也會很是大。學習
若是預測的值和我真實的值差異越大,那麼損失函數計算的結果值就會越大。優化
可是現實中的分類通常是多分類,不是二分類,在多分類的狀況下,使用的是上面式子的拓展形式。3d
在樣本不均衡的狀況,經過下采樣等方式讓樣本儘可能均衡。cdn
上採樣,經過拷貝樣原本達到樣本均衡會帶來一個問題 過擬合。千萬不要在樣本的量級相差極大的狀況下,試圖用上採樣的方式去解決unbalance的問題。blog
SVM+kernel理論上能夠作非線性分割,可是他比較慢,另外若是樣本不是很合適的話,效果也會不太好。工業界,特別是數據量大的時候,大部分用的都是linear LR或者linear SVM。 若是要完成一些非線性切分的話,你須要手動的去構造一些特徵,已經設定好的,高次的,能夠完成非線性切分的這樣一些映射,可是在工業界你很難知道怎樣去構造這些特徵。 排序
分批次,在每一個批次上求梯度。BP算法是來幫助求梯度的。 神經網絡裏面最優化算法叫SGD,而SGD要使用到梯度,因此求梯度要藉助於BP算法。
在手工設定了神經網絡的層數,每層的神經元的個數,學習率 η(下面會提到)後,BP 算法會先隨機初始化每條鏈接線權重和偏置,而後對於訓練集中的每一個輸入 x 和輸出 y,BP 算法都會先執行前向傳輸獲得預測值,而後根據真實值與預測值之間的偏差執行逆向反饋更新神經網絡中每條鏈接線的權重和每層的偏好。在沒有到達中止條件的狀況下重複上述過程。
其中,中止條件能夠是下面這三條:
● 權重的更新低於某個閾值的時候
● 預測的錯誤率低於某個閾值
● 達到預設必定的迭代次數
若是數據量不是那麼大的話,能夠用RBF kernel,用注意加正則化項。若是數據量特別大的話,建議把特徵離散化,拉高維度,而後用linear SVM。
神經網絡的學習能力特別強,但它是個黑盒不具解釋性,可調性不高。
神經網絡要注意控制層數和樣本的個數。
LR的損失函數是交叉熵,SVM使用的是hinge loss。LR天生能夠產出機率,而SVM須要根據樣本到超平面的距離去作一個映射。LR簡單,可解釋性強。 SVM會有點慢,但他的健壯性很強,他不會由於樣本的不一樣分佈,而使得決策邊界左右移動。