机器学习与建模中 - 判断数据模型拟合效果的三种方法

版权声明:转载请联系作者,获得允许后,添加链接及作者到页首 https://blog.csdn.net/weixin_40683253/article/details/82734698

数据建模的目的就是获得从自变量映射到因变量的函数,在建模的探索过程中,不同的方式总会得出不同的函数模型,而这些函数大多是由一些参数构成的,比如 y = f( x; w0, w1, w2, w3, ...)。

平方损失函数

为了选择在某种方式下最好的参数值( w0, w1, w2, w3, ...的值),这个衡量方法一般是比较原始数据与模型的预测数据之间的平方差,平方差定义为:

[(y(原始)-y(预测))**2 ] / N = [(y(原始)- f( x; w0, w1, w2, w3, ...))**2 ] / N

这个数值越小,说明模型的预测值越接近原始值,也就代表模型越好。上述表达式也称为平方损失函数

绝对损失函数

平方损失是非常常见的选择,其他的损失函数比较适合回归,比如另一个常见的是绝对损失函数

| y(原始)-y(预测)|  / N = | y(原始)- f( x; w0, w1, w2, w3, ...)|  / N

准确率

用准确率判断模型好坏比较适合分类问题,即因变量是固定的几个值,比如自变量是0或1的二分类问题。准确率就是看模型分类的结果与原始数据中的分类结果相同的占比。

准确率 = S(模型与原始数据的分类结果一致) / S(该分类下的所有数据量)

下面是python代码示例:

y32 = lr.predict(x3)#用检验集x3的数据通过模型进行预测,结果储存在变量y32中。
print(u'模型的平均准确率(检验集)为:%s'% lr.score(x3, y3))
print(u'模型的平均准确率(检验集,y=0)为:%s'% (sum(y32[i] == 0 for i,v in enumerate(y3) if v == 0) / sum(1 for i,v in enumerate(y3) if v == 0)))
print(u'模型的平均准确率(检验集,y=1)为:%s'% (sum(y32[i] == 1 for i,v in enumerate(y3) if v == 1) / sum(1 for i,v in enumerate(y3) if v == 1)))

猜你喜欢

转载自blog.csdn.net/weixin_40683253/article/details/82734698
今日推荐