MIS772 – Week 3 Classification notices

嗯。。昨天的Predictive Analytics开始讲熟悉操作以外的内容了,主要关于classification。课堂主要分为:

  • 分类-classification的一些定义什么的
  • k-NN 最简单的模型(Lzay)
  • Cross validation-交叉验证
  • Model evaluation and optimisation
  • 以及并没有时间讲的decision tree-决策树
  • 于是用RapidMiner演示一下各种操作。

Classification

并没有什么难点,知道class-类跟classification-分类啥的就差不多了

k-NN (k Nearest Neighbor)

基本的一些东西

  • 一个相似度模型(similarity model)
  • 大概方法就是有这么一个东西,它问它附近k个东西是什么属性,什么属性占优那他自己就是这个属性
    • 例如k=5,a附近的5个个体有三个是x,有两个是y,那a就会觉得自己是x
  • 这模型很懒-Lazy model
  • 因为不少时候情况复杂,通常会用一小部分的样本数据去训练k-NN模型,那小部分数据就叫做prototypes
  • k-NN也能用来识别异常变量-如果它离它的邻居都很远的话。

距离的计算

课堂上介绍了两个方法:

  • Euclidean distance – 直线距离,在图标上需要计算
  • Manhattan distance – 图标上横+纵坐标加起来的距离,对付outliers会好一点。

建模的过程

一般就是拿到预处理的数据然后:

  • training:用一些数据去建立分类模型
  • validation:用训练数据以外的数据去测试模型的准确性
  • deployment:

Evaluation

关于模型的评估,课堂最主要介绍的方式是confusion matrix – 混淆矩阵,附以一些其他方面的说明。

Confusion matrix

一般Rapidminer里面的混淆矩阵是长这样的:

emmm…作为混淆矩阵,最主要的功能是用validation的数据去验证模型的结果,并且给出模型的精度(性能什么的。。)

首先混淆矩阵中间的格子有这么4种情况:

TP:true positive,真实是unacc,预测也是unacc

FN:false negative,真实是unacc,预测却是acc

FP:false positive,真实是acc,预测却是unacc

TN:true negative,真实是acc,预测也是acc

预测总样本数是1207,目标是预测acceptable的性能。。

图表的右侧是预测各个情况的准确率。。例如第一行就是预测unacc的准确率,第二行预测acc的准确率(accuracy performance)。。以此类推。算起来也挺简单,只要把TP或者TN除以同行加起来的总数就成了,例如:

pred.unacc:831/(831+130+5+16)=84.62%

下面的class recall又叫差全(召回)率,算起来也挺简单,纵向除以总数就成了,例如:

true unacc: 831/(831+15)=96.23%

至于整个模型的准确率的话,把所有的TP跟TN加起来,然后除以总数就成:

(831+138+8+60)/1207=81.52%

当然,也有右边的那两个misclassification的格子显示了模型有哪些是预测错误的,一般misc=1-accuracy。

然后performance operator还有一种叫Kappa系数的方法,用于检验一致性,衡量分类精度。一般有很高的accuracy但是Kappa系数很低的话模型也是不行的= =

Kappa系数的计算:

Kappa系数看起来还是可以的。。0.527属于有中等的一致性,一般低于0.2就是一致性比较低了。。

Bias and variance trade-off

Bias:模型结果的偏向程度。如果模型的预测结果大多数都是集中一块但有偏向的话bias就比较高了。。

Variance:模型预测的结果的离散程度-离散程度太高的话也预测不到什么东西。。

一般bias跟variance是互相对立的-然而他们都是负面影响,嗯。

Cross validation

三种方法:holdout(留出法),k-flod,LOOCV

Holdout:

将数据分成三部分:训练集,验证集和测试集(training,validation,testing),训练用于出模型,验证用于调参数,测试用于测试泛用性。。

方法简单,分数据即可,但显然性能不太好。。也不太会用

k-flod:

k折交叉验证,步骤:

  • 不重复抽样把原始数据分成k份
  • 每选一次挑其中一份做测试集,剩余的k-1份当训练集
  • 重复k次-训练-测试,重复k次
  • 计算k组测试结果平均值为精度估计
    • 一般k是10次,看有多少数据而定。。。

重复而且随机的抽样让k-flod CV不会像holdout那样那么“对划分敏感”,一般都是用k-flod的了。

LOOCV:

leave one out CV

其实是k-flod的一种,只不过用于样本较少(数据缺乏)的时候。k=样本总数。。嗯,拿总体数据的一份去testing,然后其他的都去training,就是LOOCV了。

Boostrapping CV:

自助采样法,比较特殊的一种,把数据集分成m份样本,每分一次就抽一个样本出来再放回去。抽完以后就有一个新的数据集做training了,其他的就可以用来做validation了。平均来说只有63.8%左右的数据会被选取training,并且有一小部分的数据没有用上,所以其实并不常有。

第三周的课大概就讲了那么多。。其实并没有讲完,还有decision tree什么的。。

 

RPM文件:Rapidminer Res-MIS772-week3

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注