决策边界
决策边界就是一个能正确区分正例和负例之间的边界,那么它是怎么计算出来的呢?
在逻辑回归中,我们预测:
当h_θ (x)>=0.5时,预测 y=1。
当h_θ (x)<0.5时,预测 y=0 。
根据上面绘制出的 S 形函数图像,我们知道当
z=0 时 g(z)=0.5
z>0 时 g(z)>0.5
z<0 时 g(z)<0.5
又 z=θ^T x ,即:
θ^T x>=0 时,预测 y=1
θ^T x<0 时,预测 y=0
现在假设我们有一个模型:
并且参数θ 是向量[-3 1 1]。 则当-3+x1+x2≥0,即x1+x2≥3时,模型将预测 y=1。 我们可以绘制直线x1+x2=3,这条线便是我们模型的分界线,也就是决策边界,将预测为1的区域和预测为 0的区域分隔开。
假使我们的数据呈现这样的分布情况,怎样的模型才能适合呢?
因为需要用曲线才能分隔 y=0 的区域和 y=1 的区域,我们需要二次方特征:
是[-1 0 0 1 1],则我们得到的判定边界恰好是圆点在原点且半径为1的圆形。
我们可以用非常复杂的模型来适应非常复杂形状的判定边界。
复杂模型求解决策边界的方法
复杂模型求解决策边界的方法就是先将简单特征映射为复杂特征,比如将x1,x2,映射为x1,x2,x1^2等特征:
具体代码如下:
# feature mapping(特征映射)
def feature_mapping(x, y, power, as_ndarray=False):
# """return mapped features as ndarray or dataframe"""
# data = {}
# # inclusive
# for i in np.arange(power + 1):
# for p in np.arange(i + 1):
# data["f{}{}".format(i - p, p)] = np.power(x, i - p) * np.power(y, p)
data = {
"f{}{}".format(i - p, p