KNN(K-nearest neighbors)、logistic回归、LDA(Linear discriminant analysis)、QDA(Quadratic discriminant analysis)是四大常用的分类预测模型。其中除KNN是非参数模型外,其他三个都是参数模型。非参数(non-parametric)模型指不明确假设一个或多个参数化形式F(x)的方法。
当Y为两类数据时,logistic回归和LDA的分类预测结果会很近似。logistic回归主要用于Y是两类数据时的分类,而当Y的数据类别超过两类时,LDA被更多的使用。
影响logistic回归分类预测准确率的一个重要点是:预测概率的阈值的设定!即设定超过某个概率值时判定为不同的类别。
当分类决策边界是线性时,logistic回归和LDA是更佳的分类模型,而当分类决策边界是非线性时,QDA模型分类预测准确性会更佳。顾名思义,QDA是一个二次函数。
需要注意的是:LDA和QDA都是建立在数据呈正态分布的假设前提上,如果数据不满足正态分布,分类结果可能会很糟糕,此时可以尝试使用logistic回归。
当分类决策边界很复杂时,非参数方法KNN的分类结果更佳。
在使用KNN算法时需注意:KNN的原理是通过圈定距离最近的观测值来实现,因此,变量的取值尺度将会对结果产生影响。所以,在应用KNN时,需首先将所有变量统一尺度,以使得不同变量的数据可以相互比较。一个方法是标准化数据,比如,可将所有变量转化为以0为均值、1为标准差的数据。
影响KNN分类预测准确率的一个重要点是:K值的设定!
分类准确率(accuracy rate of prediction)是对比不同分类模型优劣的一个核心评判指标,而偏差(Bias)和方差(Variance)则是评判模型本身效能优劣的两个核心指标。
偏差指模型的预测结果与真实结果之间的差异。通俗的说,偏差被用于衡量当前使用的模型与当前数据的匹配程度,以及对当前数据的解释程度。
方差指同一个模型对不同批次数据的分析结果的差异。通俗的说,方差被用于衡量一个模型表现的稳定性和可推广性,即多次模型分析的结果是否一致和稳定,以及除了当前数据外,模型是否可以推广应用到其他类似的数据中。
对于参数模型来说,模型包含的参数越多(即模型越复杂),它与当前数据的拟合会越好,复杂的模型能更好的解释当前的建模数据,使得偏差很低。然而,当对新数据进行分析时,如果模型过度匹配过去的建模数据,它对新数据的解释或预测很可能会出现错误或偏离,从而导致方差增大。这种现象被称为:模型过拟合(Overfit)。
但是,如果模型过于简单,又容易导致模型的欠拟合(Underfit),此时,偏差会显著增加,即模型对数据的解释力度不足,预测正确率低。然而,由于欠拟合模型的表现很平均化,它在分析不同数据时的结果可能会比较稳定,即模型低方差。
因此,在构建或选择模型时,并非偏差越低越好,同时也需要考虑模型的方差(即可推广性和普遍适用性)。这被称为:偏差与方差权衡(Bias-Variance trade-off)。偏差与方差权衡实际上也是过拟合与欠拟合的权衡,亦是简单与复杂的权衡!
对于非参数模型同样如此,KNN分类模型中K值的设定能非常贴切的说明上述的权衡问题。K值最小可设定为1,此时,KNN模型的决策边界最为复杂,其拟合最好、偏差最小,但这非常容易导致模型的过拟合和高方差。而随着K值的增加,KNN模型的决策边界会越来越接近线性,其拟合逐渐降低、偏差逐渐增加,方差也会逐渐降低。当K值增加到一定限度时,模型将欠拟合,从而变成了一个中庸且用处不大的模型。因此,寻找最佳的K值对KNN模型至关重要。
END
看完以后有个问题:二分类模型添加方差作为评价指标怎么通过代码实现呢?
方差指的是计算稳定性,即计算每次得到的结果是否一致或稳定。比如说你有两个二分类的模型,对同一个东西进行10次分类,模型A把这个东西7次分到了1类,3次分到了2类,模型B把它5次分到了1类,5次分到了2类。结果是模型1稳定,方差就会小。
有了分类信息你就可以求方差,你可以上网搜方差的计算公式,但几乎所有计算软件都有求方差的函数代码,你甚至可以通过函数VAR(),用excel求出来。
在这个例子中:
VAR(1,1,1,1,1,1,1,0,0,0) = 0.23 ###7次1类,3次2类###
VAR(1,1,1,1,1,0,0,0,0,0) = 0.28 ###5次1类,5次2类###