在提直降代要求下,航空公司开始大量采用自有渠道进行分销,并视图通过降价、促销、发券等形式吸引或争夺互联网旅客流量。然而低价策略吸引来的除了部分直接客户,更多则是爬取票价的爬虫或者恶意占座的机器人。虽然一些“好”爬虫也可能产生订单,但更多的爬虫只会为了爬取航班计划和票价信息不断查询或者通过大量下单占用库存,造成航空公司服务器资源浪费、机票资源浪费、销售机会浪费,造成较大的收益损失。
本文介绍机器学习中的一种分类算法——朴素贝叶斯分类器,并尝试用此算法对航司直销渠道上的用户行为进行分类,甄别是否异常行为,这样航空公司就可以根据用户行为的危害程度不同采取相应的限制措施,并且不会影响正常用户的使用体验。
朴素贝叶斯分类器原理
理论上,朴素贝叶斯分类器是各种分类器中分类错误概率最小或者在预先给定代价情况下平均风险最小的分类器。另外,由于贝叶斯公式原理简单、朴素分类器实现简洁,因而我们在解决上述异常行为分类问题时,首选使用朴素贝叶斯分类器。
贝叶斯分类器是最基本的统计分类方法之一,其原理为基于某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类型的概率。这里,“先验概率”是根据以往经验与分析得到的分类概率,或者基于对训练数据集分析得出的分类概率;“后验概率”是我们要求解、要预测的分类概率,贝叶斯公式的基本形式如下:
从机器学习算法的视角看贝叶斯公式,其中x可理解为“某对象具有某特征”的概率,w可理解为该对象具有某“类别标签”的概率,在最简单的二分类问题中(只判断“是”或“否”)w表示该对象是否属于某类型。这样我们可以把贝叶斯公式改写为:
尝试用更口语化的方式描述上面的公式:
“P(属于某类型∣具有某特征) = 在已知某样本“具有某特征”的条件下,该样本“属于某类型”的概率。这个叫做该样本的‘后验概率’。
P(具有某特征∣属于某类型) = 在已知某样本“属于某类型”的条件下,该样本“具有某特征”的概率。
P(属于某类型) = (在未知某样本具有该“具有某特征”的条件下,)该样本“属于某类”的概率。所以叫做该样本的‘先验概率’。
P(具有某特征) = (在未知某样本“属于某类型”的条件下,)该样本“具有某特征”的概率。”
这样,求解二分类问题只需判断“P(属于某类型∣具有某特征)”是否大于1/2就够了。贝叶斯方法把计算,当某样本“具有某特征的条件下属于某类型”的概率问题,转换成计算“属于某类型的条件下具有某特征”的概率问题,而后者的计算方法简单很多——只需要找到一些包含已知特征标签的样本,即可进行模型训练。由于样本的类别标签都明确,因此贝叶斯方法在机器学习里属于有监督学习方法。
举一个例子。我们要对用户行为分类,区别正常行为和异常行为,如果使用朴素贝叶斯分类器,则只需判断P(异常行为|某特征)是否大于1/2。假设我们有正常行为和异常行为数据各1万条,要判断“只查不订”特征是否为异常行为,则只需计算:
就可以判断该特征是否导致“异常行为”。
另外,如果有多个特征我们需要假设各特征之间相互独立,这样在计算多特征概率时特别简单,即只需将各特征的概率相乘。例如P(只查不订,恶意占座,垃圾注册|异常行为)=P(只查不订|异常行为)*P(恶意占座|异常行为)*P(垃圾注册|异常行为)。这就是所谓“朴素”的含义,不过特征独立假设对特征工程提出了较高要求,必须对机票业务非常熟悉,才能提取独立的特征,并合理标记训练数据集。
另外,如果在行为数据中“只查不订”特征出现了多次,有两种处理方式,其一是多项式模型,即在计数时该特征出现多少次就计数多少次;另一种是伯努利模型,即把出现多次的特征当作一次处理。还有一种是混合模型,即在训练时考虑重复,在判断时不考虑重复。
还有一种情况需要处理:假设训练集中“垃圾注册”行为从来没出现过则其概率为0,这样贝叶斯公式右侧分子部分等于0,这会造成分类器失效!为了解决这个问题,通常采用“平滑技术”,即赋给P(垃圾注册|异常行为)一个较小的值代入公式计算。如果训练数据集足够大,平滑技术对结果的影响会足够小。
总结一下朴素贝叶斯分类器的优点:过程简单速度快;对于多分类问题同样有效(异常行为分类可以拓展成为多分类问题);如果特征独立假设成立,分类效果很好,需要的样本量也更少。理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。《黑客与画家》一书的作者Paul Graham先生自己做了一个简单的朴素贝叶斯分类器用于识别垃圾邮件,其结果就是“1000封垃圾邮件能够被过滤掉995封,并且没有一个误判”。但是实际情况并非总是如此,因为朴素贝叶斯模型假设特征之间相互独立,这个假设在实际应用中往往不成立,在特征数较多或特征间有较大相关性时,分类效果会不好。所以如果特征间相关性较大时,可考虑半朴素贝叶斯之类的算法做适度改进。
对直销渠道异常行为分类的基本思路
采用朴素贝叶斯分类器对直销渠道异常行为分类的基本思路大致为:
一、先在直销渠道所有网页上做数据埋点,采集用户行为数据(有很多工具可用)
二、对用户行为数据做特征工程,提取行为特征,如只查不订、恶意占座、垃圾注册等。
三、将数据分为训练集和验证集,用朴素贝叶斯分类器训练模型,用验证集验证效果;
四、调整模型参数,反复上述过程,直到模型分类准确性达到预定要求
五、由于朴素贝叶斯分类器的计算开销比较小,可根据硬件配置进行准线上计算,并对可疑用户行为分类。可以根据分类结果(分类标签)采取措施,例如动态给某账号加入“人机验证”,释放全部“恶意占座”,强制退出异常账号登录,禁止异常账号登录一段时间等等。
虽然朴素贝叶斯分类器原理简单、实现容易,不过在实际应用中仍然有许多问题有待解决,解决这些问题需要对航空分销业务流程以及电商运营有深刻理解。本文仅是朴素贝叶斯分类器应用的一次有效尝试,期望能为读者带来启发。
评论
未登录
游客
2019-06-26
复杂了