贝叶斯在淘宝

On 2010年12月27日, in tips, by netoearth

Shared by 车东 ,搜狐邮箱不幸上榜…… @qiuyingbo

随着电子商务的快速发展,淘宝的规模也逐渐壮大,淘宝在业界的影响力也越来越大。目前,淘宝网的日独立访问数已逾4000万,而注册的用户数现在已经达 到1.63亿,中国网民也就3.3亿,在所有的中国网民中,几乎有一半都是淘宝的用户。现在每天独立访问淘宝的用户数,已达到2000+w,可以说,中国 互联网网民,每天近9%左右的人会上淘宝,而他们上淘宝的目的也很明确,就是消费。这个规模,这个市场,这样优质的消费流量,同样也受到很多“不法分子” 的觊觎和青睐。

“不法分子”们在淘宝上也看到强大的商机,那就是垃圾账号的注册器的研发。随着每天用户注册数的剧增,每天的垃圾小号也在不断飙升,所谓垃圾小号,是指 不符常理的,都是乱七八糟的中文会员、英文会员、数字组合会员和邮箱前缀,其中重点高危的邮箱有:@tom、@126、@hao240、 @yahoo.cn、@sogou、@不知名的但大量注册的邮箱、也包括大量注册不符常理的知名邮箱,或者是存在关联的中文或英文会员,如金鼠报春01、 金鼠报春02…… ;a789887865、a786645565……,这些垃圾小号一般通过注册机自动或半自动完成用户的注册和激活,他们通常的在淘宝上的活动就是用小号 发布旺旺垃圾消息,在淘宝邮箱发送垃圾邮件,或用小号进行信誉炒作,严重影响淘宝上的用户体验和交易安全。而现在每天的注册量中,垃圾小号基本过半,在这 样的数量级上,通过人工审核和排查机制来降低垃圾小号数量已是浮云了。

于是查杀垃圾小号的需求也就应运而生。

查杀垃圾小号其实与垃圾邮件的查杀原理一致,只是垃圾邮件包含的信息比垃圾小号更加丰富一些。其基本原理是相通的,换汤不换药。在所有反垃圾邮件的技术 中,最简单、有效而且在实际应用中较成功的分类器就属贝叶斯了,根据2003年5月BBC专题报道称,贝叶斯应用在垃圾邮件的识别上,其识别率可以达到 99.7%的,同时误判率极低。是目前最有效的反垃圾邮件技术。

下面花小点时间介绍下贝叶斯相关的基础知识,Thomas Bayes, 托马斯·贝叶斯是一位英国牧师数学家,他发表了贝叶斯统计理论,即根据已经发生的事件来预测事件发生的可能性,贝叶斯理论假设:如果事件的 结果不确定,那么量化它的唯一方法就是事件的发生概率。如果过去试验中事件的出现率已知,那么根据数学的方法可以计算出未来试验中事件出现的概率。贝叶斯 定理可以用一个数学公式表达,那就是贝叶斯公式。说起贝叶斯公式,大家可能都不会很陌生,大学的必修课,概率论与数理统计这门课程,没记错的话,教材的第 一章讲述的是随机事件及其概率,其中在介绍条件概率时,就有详细介绍贝叶斯公式和全概率公式。

贝叶斯决策理论方法是统计模型决策中的一个基本方法,其基本思想是:

1、已知类条件概率密度参数表达式和先验概率。

2、利用贝叶斯公式转换成后验概率。

3、根据后验概率大小进行决策分类。

他对统计推理的主要贡献是使用了”逆概率”这个概念,并把它作为一种普遍的推理方法提出来。假定B1,B2,……是某个过程的若干可能的前提,则 P(Bi)是人们事先对各前提条件出现可能性大小的估计,称之为先验概率。如果这个过程得到了一个结果A,那么贝叶斯公式提供了我们根据A的出现而对前提 条件做出新评价的方法。P(Bi∣A)既是对以A为前提下Bi的出现概率的重新认识,称 P(Bi∣A)为后验概率。

朴素贝叶斯(Naïve Bayes)是以贝叶斯定理为理论基础的一种在已知先验概率与条件概率的情况下得到后验概率的模式识别方法,用这种方法可以确定一个给定样本属于一个特定类的概率。应用朴素贝叶斯分类器时,训练时,对于n个类别,计算每个特征在类别的先验概率。测试时,对于一个由m个特征组合成特征向量,使后验概率最大的类作为分类结果

朴素贝叶斯分类是基于特征之间的独立性假设的基础上的,即给定一个实例的类标签,实例中每个属性的出现独立于实例中其它属性的出现,也就是说特征之间是 相互独立的。尽管这种假设在一定程度上限制了朴素贝叶斯模型的适用范围,然而从目前的许多研究看,即使在违背这种假设的条件下,朴素贝叶斯分类方法也能得 到很好的效果。由于后验概率是文档在某一个类别上的概率,因此可以设定当后验概率满足某一阈值就划分为该类,这样就满足了多类标注的要求。

再回到淘宝查杀垃圾小号上来,其实查杀垃圾小号是一件具有相当难度的事情,垃圾小号每天都在增加和变化。而且现在的垃圾小号注册器变得更加狡猾,之前采用 静态查杀垃圾小号技术也很难防范。注册器的研发者们只要简单的研究一下现在采用了哪些静态查杀小号规则,然后相应的改变一下注册内容,就可以逃避查杀了。 因此,必须采用一种新的方法来克服静态查杀的弱点,于是我们选用了贝叶斯过滤技术。将贝叶斯理论(即根据已经发生的事件可以预测未来事件发生的可能性)运 用到查杀垃圾小号上:若已知某些字词的组合,注册行为,或邮件后缀等等,经常出现在垃圾小号的行为中,却很少出现在正常用户的行为中,那么若一个会员符合 这个特征时,那么他是垃圾小号的可能性就很大。

所以基于这个理论,首先,把注册用户分成2个类别:垃圾小号和正常用户。

其次,利用注册信息将用户映射到上面两个类别。

再次,分析用户的活动和行为,分别映射到两个类别;

最后,用naïve Bayes模型进行分类。

如从以下几个字段提取信息:

昵称           e-mail             ip        注册时段    xxx

98524w7gz8b3  xiacharu@163.com 123.8.220.253     14    ……

从上述几个简单的字段信息,便可抽取到10几个静态的特征如:昵称的长度,nick中英文字母数,汉字的个数,数字的个数,nick中文字的 bigram,注册的时段,email前缀的长度,email中name英文个数,汉字个数,数字个数,以及文字的 bigram,email后缀是否为 常用的垃圾邮箱后缀等等特征,简写如下:

f1.   nick-name长度,

f2.  nick-name中汉字个数,

f3.  nick-name英文字母个数,

f4.  nick-name标点字符个数,

f5.   nick-name数字个数,

f6.   e-mail中所含id长度,

f7.   email的服务商(yahoo.cn, 163.com…..),

f8.   email-id 中汉字个数,

f9.   email-id 英文字母个数,

f10.  email-id 标点字符个数,

f11.  email-id 数字个数,

f12.  注册时段

f13.   Nick-name中文字的bigram, eg. piaoxue -> bigrams.  pi, ia,ao,ox,xu,ue

f14.  Email-id的bigram                   eg. piaoxue@taobao.com, email-id   piaoxue -> bigrams.  pi, ia,ao,ox,xu,ue

通过选取正样本(正常用户,淘宝上正常的活动用户)和负样本(垃圾小号,Alisoft通过事后行为,即已经发生垃圾旺旺消息发送被查杀的垃圾账号), 把样本的信息转换到一组一组的feature list上。 贝叶斯的分类器就会统计出每个feature在垃圾小号中出现的概率以及在正常用户中出现的概率,然后根据公式计算出当会员的特征包含某些 feature时则为垃圾小号的概率。

例如:

121686195  hfdz3wm   f3qi8a3@163.com 124.229.24.4    12 ……

其feature list为:

nick-name长度: uid_7

nick-name中Bigrams:  hf fd dz z3 3w wm

email-id长度: email_7

email中bigrams:  f3 3q qi i8 8a a3

email服务商:163.com

ip:124.22.9.24

注册时段:hour_12

nick-name汉字个数:unc_0

nick-name英文字母个数:une_6

nick-name数字个数:und_1

nick-name字符标点个数: unnt_0

email汉字 个数:unc_0

email英文字母个数:une_4

email数字个数:und_3

email字符标点个数: unnt_0

根据训练集上数据,统计各个特征在正常用户和非正常用户概率(eg.  wm在正常账号数据出现2次,在垃圾小号数据出现8次,则p(wm)是正常账号概率为0.2,垃圾小号0.8.),  然后计算上述特征在正常用户联合概率 和垃圾小号的联合概率。

在正常账号的联合概率:P(f1)*P(f2)……*P(f14)……*P(fn)

和垃圾小号上面联合概率:P(f1)*P(f2)……*P(f14) ……*P(fn)

联合概率取对数 ,在正常用户类别      -181.639

联合概率取对数,在垃圾小号类别       -177.095

故其被判断为垃圾小号 。

使用贝叶斯过滤的优点在于:

1、 贝叶斯过滤技术基于样本的内容进行分析,不仅仅是其中的某些关键词;

2、 贝叶斯过滤技术具备自适应功能――通过学习新的垃圾小号及正常用户样本,贝叶斯将能查杀最新的垃圾小号;

3、 贝叶斯过滤技术支持多语种或者说与编码无关。对于贝叶斯而言,他分析的是字串,无论他是字、词、符号、还是别的什么,当然更与语言无关。

如何才能训练出一个好的贝叶斯分类器呢?贝叶斯的样本数并不是越多越好,但一般需要超过一定的数量才能工作,只有达到一定的量级才具有一定的统计意义。要训练出一个比较好的贝叶斯,有如下建议:

1、  不要过多的重复某种分类或某一类特征,以免概率失真(失衡),最好是分批分时间多次进行,这样样本分布广泛和均匀。

2、  对会员的类别归类一定要认真,不能让分类器学习到错误的知识。

3、  如果存在有垃圾小号,但是跟正常会员很接近,最好不要分类。

4、在追求precision的应用需求上,应采用不同的决策规则。

Tagged with:  

Comments are closed.