Training and Testing
引言
Classification的一般过程如下:
1.选择一个Classifier(Modell)
2.根据已有信息对这个Classifier进行训练
3.把Classifier使用与对新的数据的预测
与数据库中一般如下:
目标:根据前n个属性,对第n+1个属性进行推测
训练数据是已有的n+1个属性的数据
经典的方法比如有建立决策树(Entscheidungsbaum)
Training and Testing
Resubstitution Error
首先错误率(Fehlerrate)就不说了,先认识一个新的名词:Resubstitution Error. Rebsubstitution Error就是指这对训练数据库的错误率。
一般的Training的过程
1.并不会把所有的数据都用于训练
2.训练后的Classifier使用剩余的数据进行测试,并进行评估
Testdaten
所谓TestDaten就是指,在构建Classifier的过程中,木有使用到的数据。又叫Hold out Daten。
更切确的
经常区分为以下三个步骤:
1.训练(training)
2.Validation(Validieren):调整参数或进行的可能的替换 //这个不是很了解??
3.测试(Test):测试
然后
通过以上三个步骤后,确定了要使用的Classifier。之后就可以使用之前的Testdaten,进一步细化Classifier。
Cross validation(Crossvalidierung)
Stratification
把原始数据进行分堆,同时确保特定属性的分布均匀。
//如果分得很畸形会怎么样呢??比如同一个堆里的属性对应的值都相同???
**基本思想:**repeated holdout
分辨那种Classifier最适合当前的数据?//这才是目的吗??
将生成的堆随机的分配给Training和Test。并不断重复实验
分别算出各个实验的错误率(Fehlerrate),求出均值。
一种做法
比如分成n堆,然后选出n-1堆用于training,最后一堆用于测试。从n个堆中选出n-1个堆共有n中情况,相应的可以分别用于训练Classifier,从而得到n个训练后的Classifier。对这n个Classifier进行测试,选出其中评价最优的。
目的(Ziel)
可靠的错误评估 //不理解这里,这方法并不能使评估更加可信啊??
使用原因(Ausgangssituation)
仅有少量的原始数据可以用于Training和Test
用概率表示预测结果-Evaluation(Wahrscheinlichkeiten als Vorhersageergebnisse)
//小问题,如何把决策树改成用概率表示预测结果呢?
//又要如何把它用于Instanzbasierten Lernen呢??
Loss function
loss function:
loss function即损失函数,指出因为错误而照成的损失。
0-1 loss function:
当正确是不造成损失,错误则损失为一。
这种方法忽略了不同错误带来的损失上的差异。
Quadratic loss function(Quadratische loss function):
假设有k种可能预测结果。
用pi1<=i<=k表示预测各种结果出现的概率。(∑iPi=1)。
用向量(a1,...ak)描述真实的结果,仅与结果相应的ai的值是1,其他的值为0。
Quadratic loss function为∑j(pj−aj)2
这种做法同样掩盖了具体的错误。比如(0,0,…,1),(1,0,…,0)这两种错误并没法从结果上区分出来,他们的结果都是2(同时这也是最大的错误率)。
informational loss function:
Informational loss function:−log2pi
其中i为真实结果所在的分类。预测越准结果越小。
另外预测结果中不允许出现pi=0得情况。
//问题来了,为什么要使用log函数呢??????
掩盖错误的能力比前者更厉害了,比如(0.1,0.1,0.8)(0,0.2,0.8)。假设真实结果为第三类,那么上面两个Tupel对informational loss function来说并没有区别。而对于Quadratic loss function来说,两个Tupel是不一样的。
错误类型和其相应的措施(Fehlerarten und entsprechende Maße)
Bias和Variance
//与Training Data无关
针对Classifier的学习方法存在两种错误类型,他们分别是Bias和Variance
Bias:
Bias指由该学习方法本身存在的局限性所导致的错误,他是没有办法通过增大训练量来消除的。
Variance:
学习方法的Variance指由于训练数据的局限性而导致的错误。
Bias-Variance Decomposition:
//不知是啥???
错误类型和成功率(Fehlerarten und Erfolgsquote)
两类问题的可能的错误类型:
总得正确率(Gesamt-Erfolgsquote):=(TP+TN)/(TP+TN+FP+FN)
Kappa Koeffizient
下面是一个三类问题的confusion matrix
那么可以很简单的算出他的总得正确率是(88+40+12)/200=70%
那么这个70%到底是有多好呢?以上是根据复杂的Classifier预测得到的结果,那么如果我们不用Classifier,而是直接根据a,b,c之间的比例来进行预测呢??
下面是根据比例预测得到的结果:
抽出上面两个表的对角线数据(表示预测正确的数据),我们求出他的Kappa Coeffizient(以此来看出70%的威力):
k=(140-(60+18+4))/(200-(60+18+4))=58/118=49.2%
这个值给出了Classifier比按比例分好了50%。
他的值域是[0,1]。
当比较双方正确预测的数量一样时k=0。表示两个方法一样好。
当一个方法全错而另一个全对时k=1。
关注不同错误造成的损失
上面的方法没有区分不同错误造成的损失。这其实是不合理的。举个例子把一个号的投资者误判为坏得,和把一个坏得投资者误判为好得所带来的损失明显的不同的。
Lift Charts
举个例子比如做市场调查用得传单。假设给100万个人发传单,而得到的回应只有0.1%。现在经过数据分析,我们知道对特定的100号人发传单,得到的回应的比例是0.4%。那么我们是否只针对这100号人发传单呢??
Lift:所谓的lift就是指上述例子中回应率提高的倍数。比如上例中的lift=0.4%/0.1%=4
那么我们最好的做法是什么呢?
假设我们要发k张传单,那么我们需要找得就只是最有可能回复的人群,在这里我们看重的只是关于预测的可能性的排序,而对于具体的数值并不敢兴趣。由此我们可以得到下面这个图表:
//上传不了 先欠着!!!!
也可以用另外的表达方式,只要x坐标不变,把y坐标改成盈利或损失,即是相应得Cost/Benefit Curve。
ROC
ROC=receiver operating characteristics
本来是信号处理中的一个概念
先看一下他长什么样子:
//还上传不了 拖着吧!!!
那么这个图是怎么来得?
首先他的数据基础是一个按照预测概率排序的一系列数据
其次其上得点是这么来的:对于前k个数据,我们要知道其中错误估计的个数f,和正确预测的个数r。那么f:r就是图上得一个点
//是吗????
Formel:
x坐标:FP-Rate(Precision) = 100 * FP/(FP+TN)
y坐标:TP-Rate(Recall)= 100 * TP/(TP+FN)
//FP rate的值域是多少呢?在什么情况下取得最大值呢??
当对所有都预测为yes的时候,因为没有no的预测所以TN=0 FN=0,此时FP-Rate取得最大为1 TP-Rate同样取得最大值等于1;
与之相反的当对所有的都预测为no的时候,FP=0 TP=0,FP-Rate=0最小 TP-Rate=0最小。
AUC:
AUC:area under curve
即指ROC曲线下面的区域
其他关于错误率的参数:
f-Measure: (2*recall*precision)/(recall+precision)=2*TP/(2*TP+FP+FN)
正确率:(TP+TN)/(TP+FP+TN+FN)
数字表达预测质量
Mean-squared error:(p1−a1)2+...+(pn−an)2n
Root mean-squared error:(p1−a1)2+...(pn=an)2n‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√
mean-absolute error:|p1−a1|+...|pn−an|n
relative-squared error∗: (p1−a1)2+...+(pn−an)2(a1−a⎯⎯)2+...+(an−a⎯⎯)2
root relative-squared error∗: (p1−a1)2+...+(pn−an)2(a1−a⎯⎯)2+...+(an−a⎯⎯)2‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√
relative-absolute error∗:|p1−a1|+...|pn−an||a1−a⎯⎯|2+...+|an−a⎯⎯|2
correlation coefficient∗∗:SPASPSA√ SPA=∑i(pi−p⎯⎯)(ai−a⎯⎯)n−1 SP=∑i(pi−p⎯⎯)2n−1 SA=∑i(ai−a⎯⎯)2n−1