判别函数:
$$
f(x) = ( x+ b )\left\{\begin{matrix}
& >0, 1\quad means\quad is\quad alert \\
& <0, 0\quad means\quad not\quad alert
\end{matrix}\right.
$$
对于判定出错的样本,可使用一下公式迭代b:
$$
b:=b+\eta(\frac{b+x}{x})(y-f(x))*x
$$
进一步精简成:
$$
b:=b+\eta(b+x)(y-f(x))
$$
其中,y是实际的输出,$\eta(>1)$ 可取1.1。
例如,初始化设定的阈值是500时,b取-500。
若有点为800时,判定函数输出大于0,判定时报警,但实际该点不是报警(即实际输出y为0),按照上述公式更新b,b更新为-830,此时800的点判定函数输出为0,正确。
若再有点820,判定函数输出小于0,判定不报警,但实际该点时报警(即实际输出y为1),继续更新b为-819,此时820的点判定函数输出为1,正确。
考虑该判别函数只能处理“高于阈值的才是报警”的情形,针对“低于阈值才是报警”的情形,判别函数应为:
$$
f(x) = ( x+ b )\left\{\begin{matrix}
& >0, 0\quad means\quad not\quad alert \\
& <0, 1\quad means\quad is\quad alert
\end{matrix}\right.
$$
因此,不失一般性,可引入参数$\lambda$(在高于阈值才是报警的情形为1,在低于阈值才是报警的情形为-1),最终的判别函数为:
$$
f(x) = \lambda( x+ b )\left\{\begin{matrix}
& >0, 1\quad means\quad is\quad alert \\
& <0, 0\quad means\quad not\quad alert
\end{matrix}\right.
$$
b的迭代公式依旧。
额外的参数$\lambda$需用户配置时指定,默认为1。
done.