1. 程式人生 > >scikit-learn: isotonic regression(保序回歸,非常有意思,僅做知識點了解,但差點兒沒用到過)

scikit-learn: isotonic regression(保序回歸,非常有意思,僅做知識點了解,但差點兒沒用到過)

reg 現象 最小 給定 推薦 替代 ble class net

http://scikit-learn.org/stable/auto_examples/plot_isotonic_regression.html#example-plot-isotonic-regression-py


代碼就不貼了,參考上面鏈接。

看代碼,給人的直觀感受類似於CART,具有分段回歸的效果。

只是非常少見人用這種方法,還是推薦使用CART吧,只是了解一下思想罷了。

。。


給個簡單的樣例:

問題描寫敘述:給定一個無序數字序列y,通過改動每一個元素的值得到一個非遞減序列 y‘ ,問怎樣使y和 y’ 誤差(該處取平方差)最小?

保序回歸法:從該序列y的首元素往後觀察,一旦出現亂序現象停止該輪觀察,從該亂序元素開始逐個吸收緊跟在後面的元素

組成一個子序列sub_y,直到子序列sub_y全部元素的平均值小於或等於下一個待吸收的元素。

舉例:

原始序列:<9, 10, 14>

結果序列:<9, 10, 14>

分析:從9往後觀察,到最後的元素14都未發現亂序情況。不用處理。

原始序列:<9, 14, 10>

結果序列:<9, 12, 12>

分析:從9往後觀察。觀察到14時發生亂序(14>10),停止該輪觀察轉入吸收元素處理。吸收元素10後子序列為<14, 10>,取該序列全部元素的平均值得12,故用序列<12, 12>替代<14, 10>。

吸收10後已經到了最後的元素,處理操作完畢。

原始序列:<14, 9, 10, 15>

結果序列:<11, 11, 11, 15>

分析:從14往後觀察,觀察到9時發生亂序(14>9)。停止該輪觀察轉入吸收元素處理。吸收元素9後子序列為<14, 9>。求該序列全部元素的平均值得12.5。因為12.5大於下個帶吸收的元素10,所以再吸收10,得序列<14, 9, 10>。

求該序列全部元素的平均值得11。因為11小於下個帶吸收的元素15。所以停止吸收操作,用序列<11, 11, 11>替代<14, 9, 10>。




example from:http://blog.csdn.net/fsz521/article/details/7706250


scikit-learn: isotonic regression(保序回歸,非常有意思,僅做知識點了解,但差點兒沒用到過)