首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习是统计学旧汤换新药?非也

随着近些年来人工智能的兴起,作为很多人工智能算法内核的机器学习也成为了大家关注的焦点。通俗地讲,机器学习就是让计算机自己去学习解决问题的知识,而不是通过手动地将这些知识灌输给计算机。机器学习与人工智能相伴而生。早在1950年,现代计算机之父图灵就提出了一个问题,“机器能否思考”?

在图灵看来,将大量的知识和法则灌输给机器来实现人工智能是不现实的,这不仅是因为知识和法则本身就是无穷尽的,而且也因为随着外部环境的变化,原先的知识和法则就未必可用了。因此图灵提出了一个新的方法,就是让机器去学习知识。实现一个具有成年人智能的机器绝非易事,但是我们可以退而求其次,先设计一个具有婴幼儿智能的机器,然后让这个机器去主动学习。

在讨论机器学习之前,我们可以先回忆一下儿童是如何学习的。一个儿童首先要出生在这个世界上,然后才能够学习。类比到机器学习,我们首先要有一个基础的程序构架,而且这个基础构架要有可以学习的潜质。儿童学习的时候需要老师的指导,需要阅读大量的书籍来获取知识,还需要从日常生活中获取各种常识和经验。为了督促一个儿童学习,老师或者父母需要根据儿童的表现给予奖励或者惩罚。类比到机器学习,为了能让一个基础程序实现各种功能,例如可以帮我们识别人脸,做文本分析,实现自动驾驶,检测交易中的欺诈行为,等等,我们需要给这个程序各种相关的知识。例如,为了让一个程序可以帮我们自动检测欺诈交易,我们首先得喂给这个程序大量的交易数据。这些交易数据就好比一个儿童在学习过程中需要阅读的各种书籍。其次,我们要告诉这个程序,在我们喂过的数据中,哪些是欺诈交易,哪些是非欺诈交易。这些信息就好比一个儿童所需要的指导老师。而且我们还可以给这个程序一个奖励函数。如果程序能够正确识别一个欺诈交易,我们就提高奖励函数的值;反之则降低奖励函数的值。类比到儿童的学习,这就是根据儿童的学习表现,老师或者父母可以做出奖惩措施。

如上文所说的,为了实现机器学习,首先我们得有一个具有学习潜质的程序架构。针对不同的问题,人们设计出了不同的程序架构。一个简单的例子是根据一个学生花费在一门课程上的时间来判断该学生是否能够通过这门考试。假设这个考试的结果只有两种:通过和不通过。这是一个典型的二分类问题。针对这种问题,我们就可以用逻辑斯蒂回归的方法来处理。该方法假设学生通过考试的概率可以用逻辑斯蒂函数来描述,该函数可以带有很多模型参数,逻辑斯蒂回归的目的是通过已知的数据来找到这些参数的最优解。一旦找到了这些最优参数,我们就可以求出某个具体的考生通过考试的概率了。但是很显然,一个考生能否通过这门考试并不仅仅依赖于该生花费在这门课程的时间,而是还依赖于其他很多种因素。如果我们要综合考虑这些因素的话,那么我们可以用可以功能更为强大的决策树算法。一个决策树的结构就很像是一棵真实的树,只不过决策树的根在上面,枝枝叶叶则在下面。决策树是一个平衡的二叉树,也就是每一个主干要么没有分叉,而如果有,则一定有两个分叉。在决策树的每一个分叉处,我们需要一个判断条件,如果条件为真,我们就将数据导向分叉的一侧,如果条件为假,我们就将数据导向分叉的另一侧。如此反复,我们就可以从一个根创建出整个决策树。决策树的叶子表示数据的预测结果。在上面的这个例子中,决策树的分叉节点表示判断某一个条件是否为真,例如该考生学习时间是否超过每天六小时,而树叶则表示该考生是否通过了考试。在实际应用中,为了提高模型的预测性能,我们通常不会只用一个决策树,而是创建出很多棵彼此独立的决策树,然后让这些决策树共同对一个样本(考生)做预测,并且最终选择占多数的那个预测结果。这些彼此独立的决策树就构成了一个随机森林。

构建随机森林的方法有两种,一种是离线的随机森林,另一种是在线随机森林,或者叫做实时反馈的随机森林。构建离线随机森林时,我们需要先获得所有的经验数据,并且用这些经验数据来构建随机森林。为了能充分使用已有的数据,我们在构建决策树的时候采用了bagging算法。Bagging的意思就是,我们每次更新决策树的时候都随机地从整体样本中选取一个样本,记录下该样本的信息,然后将这个样本放回去。一旦随机森林构建完毕,或者叫训练完毕,我们就可以用这个随机森林来预测新的数据。随机森林算法在检测欺诈交易的过程中起了至关重要的作用。在实际使用时,如果使用离线随机森林算法,那么我们要么用数月前乃至数年前训练好的随机随机模型来预测当前的交易,要么我们定时(例如每个月)重新训练一次模型,以此来反映消费者消费趋势的变化。使用陈旧的数据来预测最新的交易自然不可行,而定时更新模型也有这自身的不足。首先,重新训练模型可能会丢失之前的经验信息;其次,定时重新训练模型会消耗大量的计算资源;第三,如果在两次训练的间隔有了突发情况,该模型无法处理。为了克服这些不足,我们在这里可以使用在线学习算法。因为该算法的具体实施依赖于系统的实时反馈信息,因此该算法又可以被称作实时反馈算法。

在具体使用实时反馈算法的过程中,我们不需要获取所有的经验数据来构建随机森林。我们首先用现有的数据来构建一个初步的模型。因为这个初步模型尚未学习过所有的数据,所以该模型的预测能力可能很有限。这就像前文所说的,首先我们有一个知识技能有限的儿童。初步模型不需要有很强的预测欺诈交易的能力,但是一定要有很强的学习能力。富兰克林最早捕获到天空中的雷电的时候,有人问他电有什么用处,富兰克林当即反问,一个刚刚出生的婴儿有什么用处?这里,我们的初步模型就相当于一个刚刚出生的婴儿。如果将检测欺诈交易比喻为上战场杀敌,那么如果我们用这个初步模型上阵杀敌,就应了《论语》里面的一句话,“以不教民战,是谓弃之”。为了让我们的模型可以预测欺诈交易,我们仍然需要训练我们的模型。与离线模型不同,随着时间的推移,我们不需要抛弃旧的模型再重新训练新的模型。相反,当我们使用在线模型的时候,我们不停地用新的数据来更新我们的模型。在线更新模型的时候我们需要使用在线bagging算法。在线bagging算法与离线bagging算法的区别在于,在线采样的时候,我们不知道样本总量。我们不妨假设样本总量为无穷大,于是每一个样本被选中的次数服从泊松分布,这是因为每一次抽样时,某个样本被抽中的概率都是, 所以 次采样过程中一个样本被抽中k次的概率是

我们可以得到每一个样本被抽中的次数服从参数为1的泊松分布。我们的模型可以一边做预测,一边做更新。这个过程就对我们的系统有了新的要求。之前的离线模型中,如果系统检测到了欺诈交易,我们只需要记录下这些数据就行了, 而不需要将检测结果实时反馈到模型中。但是在我们的在线随机森林模型中,一旦我们检测到了欺诈交易,那么我们就需要实时地将这些数据信息反馈到我们的系统中,并且用这些反馈到的信息及时更新我们的模型。因为有了这些及时反馈的信息,我们的模型可以一直处于更新状态。这种实时更新的优势是,如果遇到了突发性的大规模欺诈交易事件(这种时间通常会发生在每年的促销时期),那么我们的在线模型就可以及时地拦截这些欺诈交易,而不需要如离线学习模型那样,总是处于亡羊补牢的状态。

我们已经实现了在线随机森林算法,并且用真实数据做了测试。我们使用了有效数据总量为九百万,其中有大约两千个欺诈交易。这两千个欺诈交易中,其中有一半集中发生在时间窗口最后的几天。因此,这是一个非时间平稳的数据集。可以想象,如果仍然使用离线学习,那么由于欺诈交易发生的频次随着时间发生了很大的变化,所以如果用前一半的数据来训练模型,然后用这个模型来预测后半部分的交易,那么这个模型很难捕获到发生在后半部分的欺诈交易。 但是如果使用了在线学习模型,也就是我们在使用模型的过程中一直在不停地更新模型,那么由于我们的模型可以随着时间的推进也在不停地演化,所以我们的在线模型可以实时地反馈到欺诈频次的变化,并且可以更加有效地捕获到发生在后半部分的欺诈交易。测试结果很好地印证了我们的这个猜测。测试结果表明,如果交易数据中没有出现突发性事件,那么离线随机森林和在线随机森林的预测结果相差不大;如果交易数据中出现了突发性事件,这时离线模型就不能很好地捕获突然出现的大批量的欺诈交易了,而实时更新的在线模型却仍然可以很好地捕获这些欺诈交易,及时打击欺诈活动。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181009A163HV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券