首页 > 代码库 > scikit-learn: isotonic regression(保序回归,非常有意思,仅做知识点了解,但差点儿没用到过)

scikit-learn: isotonic regression(保序回归,非常有意思,仅做知识点了解,但差点儿没用到过)

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(保序回归,非常有意思,仅做知识点了解,但差点儿没用到过)