CleverDATA正在开发一个处理大数据的平台。 特别是,在我们的平台上,可以处理来自在线购物支票的信息。 我们的任务是学习如何处理支票的文本数据,并在支票上建立有关消费者的结论,以在数据交换中创建相应的特征。 解决机器学习问题很自然。 在本文中,我们要讨论在线支票文本分类中遇到的问题。
来源我们公司开发用于数据货币化的解决方案。 1DMC数据交换是我们的产品之一,它使您可以从外部来源(超过9000个来源,每天的访问量约为1亿个个人资料)中充实数据。 1DMC帮助解决的任务对于营销人员来说是众所周知的:建立相似的细分市场,基础广泛的媒体公司,针对高度专业化受众的针对性广告活动等。 如果您的行为与商店的目标受众的行为接近,那么您很可能会陷入相似的细分市场。 如果记录了有关您对任何兴趣领域上瘾的信息,那么您可以进入专门针对性高的广告活动。 同时,有关个人数据的所有法律均得到实施,您收到的广告与您的利益更相关,并且公司有效地利用预算吸引了客户。
有关配置文件的信息以各种人类可以解释的属性形式存储在交换机上:
这可能是一个人拥有电机设备(例如,摩托车斩波器)的信息。 或者某个人对某种类型的食物感兴趣,例如,他是一名素食主义者。
问题陈述及其解决方法
最近,1DMC从一个财务数据运营商那里接收了数据。 为了以交换配置文件属性的形式显示它们,有必要使用原始形式的支票文本。 这是其中一个客户的典型支票文本:
因此,任务是使支票与属性匹配。 吸引机器学习来解决所描述的问题,首先,希望在
没有老师的情况下尝试
教学方法(无监督学习)。 老师会提供有关正确答案的信息,并且由于我们没有此信息,因此没有老师的教学方法很适合要解决的情况。 没有老师的典型教学方法是聚类,由于该类,训练样本被分为稳定的组或类。 在我们的情况下,根据单词将文本聚类后,我们将不得不将结果聚类与属性进行比较。 唯一属性的数量很大,因此最好避免手动标记。 在没有老师的情况下进行文本教学的另一种方法称为主题建模,它使您可以识别未放置文本中的主要主题。 使用主题建模后,有必要将获得的主题与属性进行比较,我也想避免这种情况。 另外,可以基于任何语言模型在支票的文本和属性的文本描述之间使用语义上的接近。 但是,实验表明,基于语义接近度的模型的质量不适合我们的任务。 从业务的角度来看,您需要确保一个人喜欢柔术,这就是为什么他购买体育用品。 不使用中间的,有争议的和可疑的结论会更有利可图。 因此,不幸的是,无监督的学习方法不适合该任务。
如果我们放弃无监督学习方法,则顺理成章地转向有监督学习方法,尤其是分类。 教师是有关真实班级的信息,一种典型的方法是进行多班级分类,但是在这种情况下,由于我们获得了太多的班级(通过唯一属性的数量),任务变得很复杂。 还有另一个功能:属性可以在多个组中的相同文本上工作,即 分类应为多标签。 例如,某人购买了智能手机保护套的信息可能包含以下属性:拥有一部拥有Galaxy手机的三星之类的设备,购买Deppa Sky Case的属性以及通常购买电话配件的人。 也就是说,给定人的几个属性应立即记录在配置文件中。
要将任务转换为“与老师一起训练”类别,您需要获得一个标记。 当人们遇到这样的问题时,他们会聘请评估员,以换取金钱和时间,以获得良好的标记并从标记中构建预测模型。 然后通常会发现标记是错误的,评估人员需要定期进行联系,因为 新属性和新数据提供者出现。 另一种方法是使用Yandex。 托洛基。” 它允许您减少评估者的成本,但不能保证质量。
总是可以找到一种新的方法,因此决定采用这种方法。 如果一个属性有一组文本,则有可能建立一个二进制分类模型。 可以从搜索查询中获取每个属性的文本,对于搜索,您可以使用分类法中的属性文本描述。 在此阶段,我们满足以下功能:输出文本不是那么多样化,无法根据它们构建一个强大的模型,而诉诸于文本增强来获取各种文本是有意义的。
文字扩充
对于文本扩充,使用语言模型是合乎逻辑的。 语言模型工作的结果是嵌入-这是从单词空间到特定固定长度向量空间的映射,并且含义相近的单词的向量将在新空间中彼此相邻,而含义却相距遥远。 对于文本增强任务,此属性是关键,因为在这种情况下,有必要查找同义词。 对于分类属性名称中的一组随机单词,我们从文本表示空间中抽取相似元素的随机子集。
让我们看一个例子的扩充。 一个人对电影的神秘风格很感兴趣。 我们对样本进行采样,获得了多种文本,可以将其发送到搜寻器并收集搜索结果。 这将是分类器训练的积极样本。
而且,我们更容易选择否定样本,我们对与电影主题无关的相同数量的属性进行了抽样:
模型训练
当使用TF-IDF(例如
here )方法(通过频率和逻辑回归进行过滤)时,您已经获得了出色的结果:最初将非常不同的文本发送给爬虫,并且模型可以很好地应对。 当然,有必要在真实数据上验证模型的操作,下面我们根据属性“购买AEG设备的兴趣”来介绍模型的操作结果。
每行包含单词AEG,该模型应对的情况没有误报。 但是,如果我们以更复杂的情况(例如GAZ汽车)为例,则会遇到一个问题:该模型专注于关键字,而不使用上下文。
错误处理
我们将建立对继续教育感兴趣的模型-职业再培训课程。
普通猫的魔术课程也是一个困难的案例,可能会误导人。
为了滤除误报,我们使用嵌入:我们在嵌入空间中计算正样本的中心,并测量每一行与该样本的距离。
魔术课程和摘要获取课程的距离差异是肉眼可见的。
另一个例子:奥迪品牌所有者。 在这种情况下,嵌入空间中的距离也可以避免误报。
可伸缩性问题
迄今为止,数据交换操作着约3万个属性,并且经常出现新属性。 培训新模型和标记新属性的自动化需求非常明显。 构造新属性模型的步骤顺序如下:
- 从分类法中获取属性名称;
- 使用文本扩充为搜索引擎创建查询列表;
- kraulim文本选择;
- 我们在获得的样本上训练分类模型;
- 假设一个经过训练的模型原始购买数据;
- 将word2vec的结果过滤到肯定类别的中心。
上述算法中存在许多弱点:
- 难以控制蹲伏的文本的语料;
- 难以控制训练样本的质量;
- 无法确定训练有素的模型是否正在发挥作用。
重要的是要了解经典指标不适合训练模型的质量控制,因为 在检查文本中缺少有关真实类的信息。 学习和预测是在不同的数据上进行的,可以在训练样本上测量模型的质量,并且主体正文上没有标记,这意味着您不能使用常规方法来评估质量。
模型质量评估
为了评估经过训练的模型的质量,我们采用了两个总体:一个是指低于模型响应阈值的对象,第二个是指对模型进行评估而高于阈值的对象。
对于每个人口,我们计算到正训练样本中心的word2vec距离。 我们得到两个看起来像这样的距离分布。
红色表示已超过阈值的对象的距离分布,蓝色表示根据模型评估,低于阈值的对象。 可以对分布进行划分,并估计分布之间的距离,首先要参考Kullback-Leibler Divergence(DKL)。 DCL是不对称函数;不满足三角不等式。 此限制使DCL用作度量变得复杂,但是如果它反映了必要的依赖性,则可以使用它。 在我们的情况下,DCL在所有模型上均假定为恒定值,而不管阈值如何,因此有必要寻找其他方法。
为了估计分布之间的距离,我们计算分布平均值之间的差。 由此产生的差异可以通过距离的初始分布的标准偏差来衡量。 类似于Z值,通过Z度量表示获得的值,并且Z度量的值将是预测模型的阈值的函数。 对于模型的每个固定阈值,Z度量函数都会返回初始距离分布的sigma分布之间的差。
在测试的许多方法中,正是Z度量为确定所构建模型的质量提供了必要的依赖性。
考虑一下Z度量的行为:Z度量越大,模型处理的越好,因为分布之间的距离越大,表示定性分类的特征。 但是,无法得出用于定义定性分类的明确定义的决策规则。 例如,在图的左下角具有Z度量的模型将获得等于10的常数。此模型确定前往泰国旅行的兴趣。 培训样本主要由各种水疗中心进行广告宣传,并且该模型是根据与泰国旅行没有直接关系的文字进行培训的。 也就是说,该模型运行良好,但是并没有反映出对泰国旅行的兴趣。
Z-metic适用于许多预测模型。 图片右半部分的模型很好,左半部分的五个模型不好。在搜索和实验过程中,根据“好/坏”标准,已累积了160个带有标记的模型。 基于z度量的符号,构建了基于梯度提升的元模型,该元模型确定了所构建模型的质量。 因此,可以配置以自动模式构建的模型的质量监控。
总结
目前,操作顺序如下:
- 从分类法中获取属性名称;
- 使用文本扩充为搜索引擎创建查询列表;
- kraulim文本选择;
- 我们在获得的样本上训练分类模型;
- 假设一个经过训练的模型原始购买数据;
- 我们通过word2vec过滤结果到正类中心的距离;
- 我们计算Z度量并为元模型构建符号;
- 我们使用元模型并评估生成模型的质量;
- 如果模型具有可接受的质量,则将其添加到使用的模型集中。 否则,模型将返回以进行修订。
根据在自动模式下对元模型的评估,决定将其引入生产或退回修订。 可以采用各种方法为分析人员提炼。
- 通常,模型会阻碍某些具有多种含义的单词。 欺骗性词黑名单使模型更易于使用。
- 另一种方法是创建从训练集中排除对象的规则。 如果第一种方法不起作用,则此方法会有所帮助。
- 对于复杂的文本和多值属性,会将特定的词典传输到模型,这限制了模型,但允许您控制错误。
但是神经网络呢?
首先,希望将神经网络用于所描述的任务。 例如,可以在大量文本上训练Transformer,然后在每个属性的一组小的训练样本上进行“学习转移”。 不幸的是,由于以下原因,不得不放弃使用这种神经网络。
- 如果一个属性的模型停止正常工作,则必须能够禁用它而不会丢失其余属性。
- 如果模型不能很好地用于一个属性,则有必要单独进行调整和调整,而不会破坏其他属性的结果。
- 当出现新属性时,您需要尽快为其获取模型,而无需长期训练所有模型(或一个大型模型)。
- 解决一个属性的质量控制问题比同时解决所有属性的质量控制问题更快,更容易。 如果大型模型不能满足其中一个属性,则您将不得不调整和调整整个大型模型,这需要更多的时间和专业人员的关注。
因此,用于解决问题的一组独立的小模型比大而复杂的模型更实用。 另外,语言模型和嵌入仍然用于质量控制和文本增强,因此不可能完全摆脱使用神经网络的局面,并且没有这样的目的。 神经网络的使用仅限于需要它们的任务。
待续
该项目的工作仍在继续:有必要组织监视,更新模型,处理异常等。 进一步发展的优先领域之一是收集和分析那些尚未通过集成模型进行分类的案例。 尽管如此,现在我们已经看到了工作的结果:应用模型后大约60%的检查收到了它们的属性。 显然,有很大一部分支票没有携带有关所有者利益的信息,因此无法达到独资的水平。 尽管如此,令人鼓舞的是,迄今为止取得的成果已经超出了我们的期望,我们将继续朝着这个方向努力。
本文与
samy1010共同撰写。