我想建立一个高度不平衡的数据上的二元分类神经网络。班级失衡约为99%:1%。即使在对数据进行加权以创建50-50个样本时,似乎也存在问题。网络可能陷于低精度,或猜测所有零点以获得最大99%的准确性。设置响应的下限阈值似乎也不起作用。有没有办法创建一个适用于不平衡类的成本函数或者可以模拟梯度提升的成本函数?我想实施一些对异常值积极学习并对虚假预测进行惩罚的事情。我尝试按以下方式修改代价函数,但它并未改进算法。停止预测所有的网络
class QuadraticCost(object):
def fn(output, y):
if y == 1 and output < 0.5: fun = 100*0.5*np.linalg.norm(output-y)**2
else: fun = 1*0.5*np.linalg.norm(output-y)**2
return fun
def delta(z, a, y):
return (a-y) * sigmoid_prime(z)
(在我的BP算法我使用与ETA等于学习效率随机梯度下降下面的总成本函数,和lambda是调整参数)
关于如何修改费用的任何想法惩罚虚假0更多将不胜感激。谢谢!
编辑:有没有一种方法来修正反向传播算法使用ROC-AUC成本而不是二次方法?
你的功能如何?作为一个人,你能否从这些特征中预测这些课程?功能在哪些范围内? –
有〜370个特征,并且不,我不能猜测观察将会通过检查而落入哪些类。它们很稀疏,范围从0到1或0到1000.我预先对数据进行了归一化处理,但仍然存在相同的问题。 – michel