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
版权声明:本文为博主原创文章,未经博主允许不得转载。