分类模型的性能评估——以SAS Logistic回归为例(1): 混淆矩阵

 未分类  分类模型的性能评估——以SAS Logistic回归为例(1): 混淆矩阵已关闭评论
11月 301999
 

跑完分类模型(Logistic回归、决策树、神经网络等),我们经常面对一大堆模型评估的报表和指标,如Confusion
Matrix、ROC、Lift、Gini、K-S之类(这个单子可以列很长),往往让很多在业务中需要解释它们的朋友头大:“这个模型的Lift是4,表明模型运作良好。——啊,怎么还要解释ROC,ROC如何如何,表明模型变现良好……”如果不明白这些评估指标的背后的直觉,就很可能陷入这样的机械解释中,不敢多说一句,就怕哪里说错。本文就试图用一个统一的例子(SAS
Logistic回归),从实际应用而不是理论研究的角度,对以上提到的各个评估指标逐一点评,并力图表明:

  1. 这些评估指标,都是可以用白话(plain English, 普通话)解释清楚的;
  2. 它们是可以手算出来的,看到各种软件包输出结果,并不是一个无法探究的“黑箱”;
  3. 它们是相关的。你了解一个,就很容易了解另外一个。

本文从混淆矩阵(Confusion Matrix,或叫分类矩阵(Classification
Matrix)开始,它最简单,而且是大多数指标的基础。(这篇小东西先发布在cos.name上,比较长,感兴趣的朋友可以去看看):

http://cos.name/2008/12/measure-classification-model-performance-confusion-matrix/

KDnuggets调查:数据挖掘方法和工具

 机器学习与数据挖掘  KDnuggets调查:数据挖掘方法和工具已关闭评论
11月 301999
 

数据管理工具及编程语言 

Data Manipulation Tools/Languages (June 2007)

What tools/languages you typically use for data manipulation [307 voters]

http://www.kdnuggets.com/polls/2007/data_manipulation_tools.htm  

Use SQL / database system (116) 37.8%

Do data manipulation within data mining tool (95) 30.9%

Excel (84) 27.4%

SAS (75) 24.4%

Java (50) 16.3%

R (39) 12.7%

Perl (39) 12.7%

MATLAB (35) 11.4%

Python (34) 11.1%

C++/C# (30) 9.8%

shell/awk/gawk (29) 9.4%

C (19) 6.2%

Other (17) 5.5%

Other statistical languages (15) 4.9%

S-PLUS (11) 3.6%

Other compiled languages (11) 3.6%

Other scripting languages (9) 2.9%

Ruby (1) 0.3%

1.这次调查有307人响应,但这些百分比相加,粗看一下就超出100%很远,说明大伙都不会局限于用一种工具/语言来管理数据。

2.这些管理数据的工具/语言大概分为三种:

 ─数据库(SQL)
 ─统计软件包(如SAS、R、Matlab、S-Plus)
 ─编译语言(C、Java)

 ─脚本语言(Perl、Python、 Ruby、awk)

 在这些响应者中,用数据库、Excel和SAS系统管理数据的人最多,但看着这些人不乏程序员,不但有用传统的编译语言C、Java,还有用脚本语言Perl、Python、Ruby,甚至还有用流语言awk的。

 

数据挖掘和数据分析工具

Data Mining / Analytic Software Tools (May 2007)

Data Mining (Analytic) tools you used in 2007: [534 voters]

http://www.kdnuggets.com/polls/2007/data_mining_software_tools.htm

Commercial Data Mining Software

SPSS Clementine 116, 73 alone or with SPSS

Salford CART/MARS/TreeNet/RF   106, 54 alone

Excel  94, 2 alone

SPSS  91, 49 alone or with Clementine

SAS  80, 8 alone or with SAS E-Miner

Angoss  78, 50 alone

KXEN   70, 51 alone

SQL Server  38, 2 alone

MATLAB  30, 1 alone

SAS E-Miner  25, 8 alone or with SAS

Other commercial tools  21, 0 alone

Statsoft Statistica  15, 2 alone

Insightful Miner/S-Plus  14, 0 alone

Oracle DM  12, 0 alone

Tiberius  11, 3 alone

FairIsaac Model Builder  3, 2 alone

Xelopes  2, 2 alone

Miner3D  2, 0 alone

Bayesia  2, 0 alone

Megaputer  1, 1 alone

your own code 61, 7 alone

商业数据挖掘软件包

1.这些商业数据挖掘工具大概包括:

 —统计软件包和来自统计软件包生产厂商的数据挖掘套件SPSS、SAS、Statistica、S-Plus、SPSS Clementine、SAS E-Miner、Insightful Miner

 —其他专业的数据挖掘软件包,SalfordCART/MARS/TreeNet/RF、

Angoss、KXEN  

 —电子表格Excel

 —数学软件Matlab

 —特定行业的数据挖掘软件包FairIsaac Model Builder (金融业)

 —基于数据库的数据挖掘套件

SQL Server(应该是其中的Analysis Service)、Oracle DM

2.看着几乎是统计软件包及其相应的数据挖掘套件如SPSS和SAS的天下,基于数据库的如SQL Server、Oracle DM 也有一席之地。

Free Data Mining Software

Yale  103, 70 alone

Weka  48, 3 alone

R  42, 0 alone

Other free tools  30, 0 alone

C4.5/C5.0/See5  14, 0 alone

Orange  12, 0 alone

KNIME  2, 0 alone

 

数据挖掘方法

Data Mining Methods (Mar 2007)

Data mining/analytic methods you used frequently in the past 12 months: [203 voters]

http://www.kdnuggets.com/polls/2007/data_mining_methods.htm

Decision Trees/Rules (127) 62.6%

Regression (104) 51.2%

Clustering (102) 50.2%

Statistics (descriptive) (94) 46.3%

Visualization (66) 32.5%

Association rules (53) 26.1%

Sequence/Time series analysis (35) 17.2%

Neural Nets (35) 17.2%SVM (32) 15.8%

Bayesian (32) 15.8%

Boosting (30) 14.8%

Nearest Neighbor (26) 12.8%

Hybrid methods (24) 11.8%

Other (23) 11.3%

Genetic algorithms (23) 11.3%

Bagging (22) 10.8%

1.这些方法包括:

  ─传统统计方法

Regression(回归)、Statistics (descriptive)(描述性统计)、

Boosting()、Visualization(可视化)

  ─分类

Decision Trees/Rules(决策树和规则)、Neural Nets(神经网络)、Bayesian(贝叶斯)、Genetic algorithms (遗传算法)

─聚类

Clustering(聚类)、Nearest Neighbor(最近邻)

─关联(Association rules)

─时间序列(Sequence/Time series analysis )
─其他(Hybrid methods、Bagging)

 

2.结论之一,简单的、直观的、容易解释的方法用得较多,比如决策树、回归、描述性统计……

行业

Data Mining Applications by Industry (June 2007)

Industries/fields where you applied data mining in the past 12 months [138 voters]

http://www.kdnuggets.com/polls/2007/data_mining_applications.htm

CRM (36) 26.1%

Banking (33) 23.9%

Direct Marketing/ Fundraising (28) 20.3%

Science (26) 18.8%

Fraud Detection (26) 18.8%

Telecom (21) 15.2%

Credit Scoring (19) 13.8%

Other (18) 13.0%

Biotech/Genomics (16) 11.6%

Web usage mining (14) 10.1%

Retail (14) 10.1%

Medical/ Pharma (13) 9.4%

Insurance (12) 8.7%

Health care/ HR (10) 7.2%

Government/Military (10) 7.2%

Financials/Lending (10) 7.2%

Web content mining/Search (9) 6.5%

Manufacturing (9) 6.5%

e-commerce (8) 5.8%

Entertainment/ Music (6) 4.3%

Social Policy/Survey analysis (5) 3.6%

Security / Anti-terrorism (5) 3.6%

Investment / Stocks (4) 2.9%

Travel/Hospitality (3) 2.2%

Junk email / Anti-spam (3) 2.2%

分类模型的性能评估——以SAS Logistic回归为例(2): ROC和AUC

 机器学习与数据挖掘  分类模型的性能评估——以SAS Logistic回归为例(2): ROC和AUC已关闭评论
11月 301999
 

ROC

上回我们提到,ROC曲线就是不同的阈值下,以下两个变量的组合(如果对Sensitivity和Specificity两个术语没有概念,不妨返回,分类模型的性能评估——以SAS Logistic回归为例(1): 混淆矩阵,强烈建议读者对着看):

Sensitivity(覆盖率,True Positive Rate)

1-Specificity (Specificity, 负例的覆盖率,True Negative Rate)

二话不说,先把它画出来(以下脚本的主体是标红部分,数据集valid_roc,还是出自上面提到的那篇):

axis order=(0 to 1 by .1) label=none length=4in;

symbol i=join v=none c=black;

symbol2 i=join v=none c=black;

proc gplot data = valid_roc;

plot _SENSIT_*_1MSPEC_ _1MSPEC_*_1MSPEC_

/ overlay vaxis=axis haxis=axis;

run; quit;

roc

上图那条曲线就是ROC曲线,横轴是1-Specificity,纵轴是Sensitivity。以前提到过,随着阈值的减小(更多的客户就会被归为正例),Sensitivity和1-Specificity也相应增加(也即Specificity相应减少),所以ROC呈递增态势(至于ROC曲线凹向原点而非凸向原点,不知道有无直观的解释,不提)。那条45度线是作为参照(baseline model)出现的,就是说,ROC的好坏,乃是跟45度线相比的,怎么讲?更多,见COS:

http://cos.name/2008/12/measure-classification-model-performance-roc-auc/

SAS学习笔记(2):Using the Programming Workspace

 未分类  SAS学习笔记(2):Using the Programming Workspace已关闭评论
11月 301999
 

SAS OnlineTutor®: Basic and Intermediate SAS®的learning path见《SAS学习笔记:开篇》

SAS学习笔记(1):Basic Concepts

这一集没什么好看的,就是SAS的编程环境,熟悉各种窗口就是。需要清楚的是什么是Output窗口,什么是Result窗口。

The Output Window

You can create two basic types of SAS output: a listing, which is traditional SAS output, an HTML document.

In the Output window, you browse listing output from SAS programs that you submit. (You can use a browser to view HTML output.)

By default, the Output window is positioned behind the code editing and Log windows.

The Results Window

The Results window helps you navigate and manage output from SAS programs that you submit. You can view, save, and print individual items of output.

On most operating systems, the Results window is positioned behind the Explorer window and is empty until you submit a SAS program that creates output. Then the Results window moves to the front of your display.

The Results window displays separate icons for listing output and HTML output. In the example below, the first Print folder contains both types of output.

一句话,区别在于:

The Results window displays a tree view of output that is created during a SAS session. The Output window displays the output itself.

Technorati Tags: ,

江山一笼统-新年快乐

 未分类  江山一笼统-新年快乐已关闭评论
11月 301999
 
新年快乐 ( Xin Nian Kuai Le),
Guten
Rutsch ins neue Jahr,
Bonne Année,
Nav varsh ki shubh kamnayey,

Felice Anno Nuovo,
Feliz Año Nuevo,
Feliz Ano Novo,

明けましておめでとうございます (Akemashite Omedetô),
Gelukkig Nieuwjaar,

Szczęśliwego Nowego Roku,
Καλή Χρονιά (Kalí Chroniá),
Seh Heh Bok
Mani Bat Uh Seyo,
חג חנוכה שמח (Hag Hanukkah Sameah),
Cчастливого Нового
Года,

Happy New Year,

数据采集策略:数据挖掘与统计学的一个区别

 机器学习与数据挖掘  数据采集策略:数据挖掘与统计学的一个区别已关闭评论
11月 301999
 

这个观点来自Hand等人的《数据挖掘原理》(机工,2003)。

说数据挖掘是对已经存在的数据进行分析(比如说“[原有]数据库中的知识发现”,KDD),而统计会为了回答某一个特定问题而专门去采集数据。也就是说,数据挖掘所分析处理的数据,不是为挖掘本身而收集的。

企业为了别的目的建立数据库,为了挖掘,它再从数据库的基础上建立起为分析服务的数据仓库。

SAS金融函数(1):期权定价(new in SAS9.2 Base)

 未分类  SAS金融函数(1):期权定价(new in SAS9.2 Base)已关闭评论
11月 301999
 

以前贴过一份SAS9.1 Base的金融函数(23个。SAS9.1/ETS还有9个),惜乎没有展开来讲。现在SAS9.2 Base新增了一些有意思的金融函数(还有一些调整,比如,SAS9.1/ETS那9个金融函数都整合到SAS9.2 Base中去了),正好可以慢慢道来,从新增的期权定价函数开始(以前这些函数在SAS的风险管理软件Risk Dimension里面)。

SAS9.2 Base新增的这些定价函数(8个)都是计算欧式期权价格的,对看涨(call)期权、看跌期权(put)以及不同的期权类型(股票期权、期货期权、货币期权、交换期权),分别提供了以下四种模型:

Black-Scholes model,传统的股票期权定价模型,见Fischer Black and Myron Scholes (1973)
Black model,Black-Scholes model的扩展,针对期货期权,见Fischer Black(1976),所以该模型又称作Black-76
Garman-Kohlhagen model,外汇期权定价模型,见Mark Garman and Steven Kohlhagen(1983)
Margrabe model,交换期权定价模型,见William Margrabe(1978)

SAS9.2期权定价函数一览:

    Model,定价模型    Underlying,标的物     函数(Call,看涨)     函数( Put,看跌)
Black model Futures,期货 BLACKCLPRC BLACKPTPRC
Black-Scholes model Stock,股票 BLKSHCLPRC BLKSHPTPRC
Garman-Kohlhagen model Currency,货币 GARKHCLPRC GARKHPTPRC
Margrabe model Exchange,资产交换 MARGRCLPRC MARGRPTPRC

具体用法,见SAS9.2的在线帮助文档,Functions and CALL Routines by Category: Financial
http://support.sas.com/documentation/cdl/en/lrdict/59540/HTML/default/a000245860.htm

推荐一个网站,可以比较各种不同的期权定价模型:http://www.montegodata.co.uk/

下期预告:一个通吃的金融函数,Finance(.)

一个孤零零的金融函数,能够做52种(是52种!)不同的金融计算,前面提到的SAS9.1/ETS那9个金融函数就是被它给硬生生消化掉了,……

三个有名的决策树算法和它们的叶子

 机器学习与数据挖掘  三个有名的决策树算法和它们的叶子已关闭评论
11月 301999
 

以前写过一个小笔记,《三个有名的决策树算法:CHAID、CART和C4.5》,说些它们的区别,刚找到一些树叶,可以辅助理解。曰: 

未命名 未命名未命名

CHAID (chi-squared automatic interaction detection,卡方自动交互检测)的前身是AID,主要特征是多向分叉,前向修剪,其标准如名所示,就是卡方检测;另外,CHAID只能处理类别型的输入变量,因此连续型的输入变量首先要进行离散处理。

标准的CARTclassification and regression trees)又不一样,它只能进行二部分叉,后向修剪,分割标准用的是基尼系数(Gini Index); 

C4.5源自有名的ID3,它只能进行L型分叉,后向修剪,标准乃是基于信息论的“熵”(Entropy)。

Technorati Tags: , , , ,

R与SAS之争:一个导读

 未分类  R与SAS之争:一个导读已关闭评论
11月 301999
 

现在R与SAS社区里,最热闹的大概是源于《纽约时报》的一篇文章而引发的R与SAS之争了。

2009年1月7号,《纽约时报》科技版登了一篇注定要引起四方瞩目的文章, Data Analysts Captivated by R’s Power(1月6号就有网络版),作者是该报的记者Ashlee Vance。这大概是开源统计软件包R,自1996年诞生以来,第一次出现在公众视野,而且是出现在《纽约时报》这样的主流媒体。这篇文章里有一句,让R社区和SAS社区都颇为兴奋,而且有很多私人博客也积极跟进:

The popularity of R at universities could threaten SAS Institute.

R软件的兴起,可能会威胁到SAS公司在数据分析领域的地位。

报道中有对SAS公司一位市场总监Anee Milley的采访。Anee Milley的一句回应也注定要引来不少争议(甚至是公关危机):

We have customers who build engines for aircraft. I am happy they are not using freeware when I get on a jet.

我们有一些客户,为整机制造引擎。当我乘机时,很高兴他们没有使用免费软件(来设计引擎)。

1月7号中午,就有用户在全球最主要的SAS论坛SAS-L发贴,提醒大家注意这篇报道。目前,这个帖子的跟贴不断,是目前SAS-L中最火的帖子,其中有不少R软件的支持者发言。SAS-L的大多活跃用户都是一些SAS老手,用SAS几十年,在最近的工作中意识到R的好处,所以对SAS与R的融合比较感兴趣。

更多,请见“统计之都”:

http://cos.name/2009/01/r-sas/

del.icio.us Tags: ,,,,

SAS备忘录:format和informat

 未分类  SAS备忘录:format和informat已关闭评论
11月 301999
 

       被问到informat和format的用法和区别。都是关于变量属性的,以前讲过informat影响到SAS输入数据的格式,而format影响到数据的输出格式。还是不直观,说个能操作的简单例子。

       先说format。format影响到SAS的数据输出格式,这个我们举了个例子,输出当前时间:

data time;
x=date();
format x yymmdd8.2;
put x=;
run;

      如果没有format那行,那么SAS系统就会把当前时间输出为一个数字(因为SAS就是用数字存储日期的),format就是指定x的输出格式,以便于我们阅读。

      format是改变输出格式,而informat则是关于SAS的读入格式。举个例子,假如你的D盘有个文本数据文件informat.txt,存的是一个时间变量time,有两个观测值:

time
1998-7-10
1998-7-11

      你要是这么读入它,就会出错:

data a;
infile "d:\informat.txt" firstobs=2; 
input time;
run;

       先解释一下这段。这是一个标准的读入数据的程序,infile "d:\informat.txt"指明文件路径,后面的firstobs=2表明数据从第二行开始读入(因为第一行是变量名time)。如果是数值型的变量,这一定没问题,但这个time的格式是1998-7-11,SAS就读不了,如果不指定time的读入格式。
       规定读入格式,就要用到informat了,下面的程序就能正确读入informat.txt了:

data aa;
infile "d:\informat.txt" firstobs=2;
input time;
informat time yymmdd10.;
run;

        informat time yymmdd10.就规定了time的读入格式,SAS系统就知道它存的是时间,就读进来了。读是读进来了,但这是SAS显示的却也是数字。为了让输出我们能明白,就要用到format,改变输出格式,完整的程序如下:

 
data aaa;
infile "d:\informat.txt" firstobs=2;
input time;
informat time yymmdd10.;
format time yymmdd10.;
run;

Technorati Tags: , ,