这个青年的经历,只代表他个人,没有任何群体的意义。
我想写下一段自白,这自白既是我个人的,也具有普遍意义,因为一个人经历过的事情所有的人都可以经历。
/*跟武汉博文视点合作,召集些身边的朋友,2009应届生,计算机背景,在毕业之前,讲讲自己求学、实习、找工作等的经历与感悟,文章将由电子工业出版社结集出版,在今天秋季学期开学之前出来。我是主编,也是作者之一,刚好经历跟大伙有重叠:经济学、软件工程、SAS、统计学、数据挖掘,文章贴出来,大伙多拍砖头。文中我提到COS,COS让我长见识,又结识不少好朋友。*/
想启蒙至今,我的学习重心从文史哲转到经济学,最后以软件工程收场;在行业方面,在一家软件公司实习了一年多,找工作以药厂收场——用一个朋友的话讲,“背景是复杂得一塌糊涂”。虽然我常以“学一行,爱一行;做一行,爱一行”自勉,有时也不免回首,想想以前经历过的所有分岔口,玩味些那些没有走过的路,无论当时我多么坚决或者犹豫,一条路被选中,然后一路曲折至今。很多事情,很多选择,可能只有以后才能适合评说,现在我选择把它们记下来,在这么一个时点,我就要毕业,我有一个安身立命的去处,我有规划,但我不知道以后生活会给我什么样的分岔口,就跟我以前遭遇的一样。
——————我的人生轨迹—————
项羽,“学书不成,去;学剑,又不成”。
—-《史记·项羽本纪
1.高中:文科生,喜文史
|
|高考
...
阅读全文 »
数据挖掘与机器学习
数据挖掘与机器学习
我的求学之路:经济学、软件工程、SAS
COS竞赛:英文站点会员类型的识别
大家好,为了促进大家对统计之都的了解,并锻炼各位会员的统计应用能力,即日起我们推出“COS竞赛”系列活动。第一期活动的主要任务是分析统计之都英文网站(http://cos.name/en/)的会员数据,从中找出识别正规会员和机器人(垃圾、广告、自动注册)会员的规律。
数据背景
原始数据来自phpBB论坛的phpbb_users数据库,其中包含用户id、用户名、是否激活、Email、发帖数等字段,其中我们要研究的因变量是“是否激活”(user_active),它取值0和1,分别代表该用户是否被管理员激活,1表示是正规会员,0表示该会员是机器人或不知如何激活的人类。
我们对原始数据首先做了隐私处理,删掉了一些敏感字段,如用户名等,然后对Email和MSN帐号做了如下处理:
x = read.csv("cos_en_users.csv", stringsAsFactors = FALSE,
encoding = "UTF-8")
x$user_email_nchar = nchar(x$user_email)
x$user_email = sub("^.*@", "", x$user_email)
x$user_msnm_nchar = nchar(x$user_msnm, allowNA = TRUE)
x$user_msnm = sub("^.*@", "", x$user_msnm)
write.csv(x, "cos_en_spam.csv", row.names = FALSE)
即:去掉了帐号中@字符前面的字符串,只剩下域名字符串,然后在原数据中添加了两个变量*_nchar表示Email和MSN帐号的字符数。
数据下载
整理之后的数据下载:统计之都英文网站会员数据;
所有变量名的解释参见:phpbb_users的数据表结构说明;注意其中所有时间数据都是Unix时间戳格式,起点为1970-01-01 00:00:00,可以用R函数as.POSIXlt(, origin = "1970-01-01 00:00:00")转化为日期。
分析目的
找出有效的规则区分会员类型:是否正规会员。本数据是一个高度不平衡的数据,取值为1的会员非常少:
> table(x$user_active)
0 1
25911 92
这给判别分析带来了不小的难度,如:即使将所有正规会员判别为机器人,正确率也在99.6462%,因此仅仅看模型的正确率可能不是合适的评判标准。我们最终考察的指标包括:预测正确率、模型简洁性、程序效率、分析结果新颖性。
注意事项
使用数据时请注意数据有效性,可以从原始信息中生成新的变量用来做预测:
user_session_page:该变量的取值意义不太确定,建议不使用;
user_lastvisit:变量取值不稳定,建议不使用,user_session_time可能更适合于作为用户最后的访问时间;
由于非激活用户不能发帖,因此他们的user_posts必然都是0;而我们的分析目标是在用户注册之后马上就能从注册信息获知是否机器人注册,所以建议建模时不要使用这个变量;
user_style取值只能为1,是个常数,因此不必使用该变量;
建议着重分析用户注册信息中的签名档、邮箱、网站链接,可以从这些文本数据生成新的变量,如邮箱域名是否以”.ru”(俄罗斯)结尾,签名档是否含有”free”等具有垃圾特征的词汇,等等;
参加方式
本次竞赛以邮箱投稿的方式接收作品,请将您的作品发送至contact cos.name(替换为@),作品应满足以下要求:
注明使用软件工具的详细信息(版本、操作系统等);
评委可在其它地方相同条件下重复您的完整分析过程,包括:数据转换、建模、预测、图表的输出;为了保证预测结果的可重复性,请适当增大预测中估计正确率的交叉验证次数(或其它验证方法的次数);
写明最终的分析结论;
文档格式不限,但有如下优先考虑顺序:Sweave > LaTeX/LyX...
阅读全文 »
统计学博文导读:火箭队比赛与分类树、神经网络与降维
即日起,统计之都网站成立“统计学博文导读”栏目,归属于“网站导读”栏目。我们号召广大读者和作者将喜爱的统计学博客文章推荐给我们,以方便更多读者在这个信息爆炸的时代能够快速阅读到优秀的文章;本文是统计之都“统计学博文导读”第一篇,权当示范本栏目的作用。这次我们重点推荐两篇博文,分别来自于刘思喆和左辰,向大家展示统计学理论的生活和思维魅力。
阅读全文 »
分类模型的性能评估——以SAS Logistic回归为例(3): Lift和Gain
书接前文。跟ROC类似,Lift(提升)和Gain(增益)也一样能简单地从以前的Confusion Matrix以及Sensitivity、Specificity等信息中推导而来,也有跟一个baseline model的比较,然后也是很容易画出来,很容易解释。以下先修知识,包括所需的数据集:
分类模型的性能评估——以SAS Logistic回归为例(1): 混淆矩阵
分类模型的性能评估——以SAS Logistic回归为例(2): ROC和AUC
阅读全文 »
分类模型的性能评估——以SAS Logistic回归为例(2): ROC和AUC
ROC
上回我们提到,ROC曲线就是不同的阈值下,以下两个变量的组合(如果对Sensitivity和Specificity两个术语没有概念,不妨返回,《分类模型的性能评估——以SAS Logistic回归为例(1): 混淆矩阵》,强烈建议读者对着看):
Sensitivity(覆盖率,True Positive Rate)
1-Specificity (Specificity, 负例的覆盖率,True Negative Rate)
阅读全文 »
分类模型的性能评估——以SAS Logistic回归为例(1): 混淆矩阵
跑完分类模型(Logistic回归、决策树、神经网络等),我们经常面对一大堆模型评估的报表和指标,如Confusion Matrix、ROC、Lift、Gini、K-S之类(这个单子可以列很长),往往让很多在业务中需要解释它们的朋友头大:“这个模型的Lift是4,表明模型运作良好。——啊,怎么还要解释ROC,ROC如何如何,表明模型表现良好……”如果不明白这些评估指标的背后的直觉,就很可能陷入这样的机械解释中,不敢多说一句,就怕哪里说错。本文就试图用一个统一的例子(SAS Logistic回归),从实际应用而不是理论研究的角度,对以上提到的各个评估指标逐一点评,并力图表明:
这些评估指标,都是可以用白话(plain English, 普通话)解释清楚的;
它们是可以手算出来的,看到各种软件包输出结果,并不是一个无法探究的“黑箱”;
它们是相关的。你了解一个,就很容易了解另外一个。
本文从混淆矩阵(Confusion Matrix,或分类矩阵,Classification Matrix)开始,它最简单,而且是大多数指标的基础。
阅读全文 »
