第 5 章 机器学习技术的应用(中)
原文
机器学习技术的实施方法
特征处理
特征工程的重要性
需要同时掌握理论方法和业务逻辑才能提取有效的特征;
在特征方面拥有最大的自主性和探索性;
指征能力, 该特征的大小变化对最终结果的大小变化会在什么方向起到多大的作用;
用户ID类特征
ID特征, 指为每个用户分配一个唯一ID, 将这组唯一ID作为一组 One-Hot 特征, 每个用户在这组特征中只有一个特征; 具有个性化程度最强;
学习到一个用户整体的点击偏好, 承担学习全局偏置的功能;
将用户ID与物品侧的非ID类特征交叉组合, user_id+user_id×item_attribute;
历史记忆性强, 未来扩展能力差;
行为 ID 类特征
从根本上替换掉用户ID这个具有历史记忆属性的核心元素, 将其替换为可以代表一个用户, 同时还具有扩展性的其他信息, 降维;
有过某个行为的用户对于当前物品的点击概率;
对于用户有过行为的物品 hitory_item 和待预测的物品 current_item 组合特征;
ID 类特征的降维
大规模 ID 类特征, 非常细粒度的描述方法, 对于用户和物品之间的喜好关系有非常强的捕捉能力, 但也有局限性:
样本量要求大;
样本量是特征量的 10 倍;
数量庞大, 实现要求高;
数据稀疏性;
特征泛化能力差;
ID 类特征在 bias-variance(偏差-方差)的权衡中选择了偏差较低的一端;
模型信息总结提炼难度大;
将用户, 物品的 ID 用更低维, 更稠密的信息来表示;
例如: 用户ID => 属性(性别或年龄), 标签(喜好类别和标签)等;
高维特征(ID 类)用来增强行为丰富的用户的细致体验;
低维特征用来覆盖行为不足的用户和物品;
交叉特征的优选
构造交叉特征有两种方式:
笛卡尔积方式
用户特征A和物品特征B中各个特征相互组合成一个特征;
特征量大, 描述能力强; 但工程方面要求高, 压力大;
交集方式
用户特征A和物品特征B中通过设置条件进行组合特征;
特征量减少, 性价比更高;
- +: 特征不做交叉, 单独使用
- ×: 笛卡尔积特征交叉;
- =: 交集特征交叉;
常用特征工程方法
快速构建基线版本特征(指导原则)
机器学习系统的 **MVP(Minimal Viable Product, 最小可行产品, 可满足某一个功能的最简单产品形态)**原则: 首先构建整个系统的所有组件和 pipeline, 跑通流程, 然后在这个 pipeline 上进行细致的优化;
业务规则特征化
系统中存在的, 参与到与模型决策相同目标中的业务规则, 尽量将其特征化, 尤其是复杂的规则;
数值特征缩放(scaling)
取值范围差异较大的数值特征, 将它们的取值映射到同一个范围内([0,1]或[-1,1]);
缩放的好处:
- 提高计算稳定性
- 提高收敛速度
- 提高模型的可解释性
缩放的方法:
单位长度缩放
xscaled=x∣∣x∣∣2x_{scaled} = \frac{x}{||x||_2}xscaled=∣∣x∣∣2x, ∣∣x∣∣2||x||_2∣∣x∣∣2 表示特征向量的 L2 Norm;
整个向量长度为 1, 适合特征向量全部或大部分为数值类型
标准化
xscaled=x−x‾σx_{scaled} = \frac{x-\overline{x}}{\sigma}xscaled=σx−x, x‾\overline{x}x 特征的样本均值, σ\sigmaσ 特征的样本标准差;
特征值具有 0 的均值和单位方差;
最小最大缩放
xscaled=x−xminxmax−xminx_{scaled} = \frac{x-x_{min}}{x_{max}-x_{min}}xscaled=xmax−xminx−xmin,
将原始值映射到 0~1, 同时保持原始的线性关系;
百分比化
xscaled=ΣI(xi<x)Nx_{scaled} = \frac{\Sigma I(x_i<x)}{N}xscaled=NΣI(xi<x), N 为样本总量;
将原始取值变换为该取值在全局取值中的百分位取值;
缩放比前面几种更稳定, 不用特殊处理异常值; 但只保留了排序信息, 去除了具体的数值信息;
特征离散化
将一个数值特征根据取值映射到多个离散值上, 最常用的是 One-Hot 编码技术;
离散化的目的: 引入更多的非线性因素, 使模型具有更强的拟合能力;
最核心的问题: 如何决定离散化的映射区间:
离散化到多少个区间
经验值;
如何决定离散化的分界点
- 等宽, 将区间均匀划分
- 等频, 划分后每个区间的样本数量相等;
- 决策树, 将该特征作为决策树的唯一特征进行训练;
组合特征的使用
能够引入非组合特征无法描述的信息;
需要注意问题:
- 如果使用A和B的组合特征, A和B本身也要包含在模型中;
- 组合特征需要有可解释的意义;
特征稀疏性处理
某个特征只能覆盖少量样本的情况;
出现原因:
- 数据缺失导致;
- 引入类别特征以及大量组合特征导致;
关注特征的显著性和置信区间, 与特征对应的样本量有直接关系;
好特征的特点:
- 每个特征只适用于小部分数据, 但绝对数量不会特别少;
- 整体覆盖率较高, 例如超过90%;
特征的高纬度, 带来两个问题:
- 对模型效果的影响, 维度灾难(curse of dimensionality);
- 对训练性能, 预测性能, 存储量等的影响;
解决方法:
借助正则化等训练技术消除一些无用的特征, 减少整体特征量;
降维处理
基于业务的降维, 例如聚合类
缺点:
- 很多场景下没有明显可用于聚合特征的业务规则;
- 即使有, 聚合能力也有限或不灵活;
- 业务给出的聚合方法不一定能完全捕捉到数据中存在的关系信息, 比如两个不同类之间的关系;
基于算法的降维
- PCA
- LDA
- SVD, embeding
处理位置偏差(position bias)
点击率, 转化率等特征容易受影响;
常用做法: 计算出每个位置 i 上的平均点击率 ctrictr_ictri, 在统计点击数时, 将原本会被计算为 1 的每次点击统计为 1/ctri1/ctr_i1/ctri, 再计算对应的点击率;
对展现位置优越的物品进行惩罚, 对位置不好的物品进行补偿;
特征效果查看
在模型训练完成之后进行特征效果查看, 目的有三:
- 查看重要性最高的特征, 是否符合预期, 是否出现意料之外的特征;
- 业务判断的预期重要性高的特征, 是否真的得到了高的重要性;
- 哪些特征有用, 及其意义和目的;
深度学习模型中的特征工程
前向神经网络, 多层感知机(Multi Layer Perceptron, MLP), 重要点在于表征学习和特征降维, 可以提升模型的泛化能力;
特征工程的实现
特征系统要能够同时服务于探索开发, 例行训练和线上预测;
- 探索开发, 需要特征灵活, 快速生成;
- 例行训练, 特征取值正确;
- 线上预测, 特征取值与离线一致;
解决特征和样本的时间对齐问题;
- 长期相对保持固定的特征;
- 对时效比较敏感的短期特征;
解决方法:
- 样本产生时, 立刻计算时效性特征并记录到日志中, 采用 Spark 或 Flink 等实时计算框架;
- 构造服务, 例如用户浏览历史服务, 购买历史服务等;
- 与实时请求记录的日志相结合;
- 例行训练流程中, 尽量实时记录特征, 包括统计类特征和状态类特征, 解决时间对齐问题;
- 实验开发流程中, 定期保存特征的快照, 得到最高的迭代效率;
- 实验开发和例行训练, 采用同一套特征服务(特征生成器), 达到线上线下统一;
Netflix 特征系统的时间机器:
- 定期运行作业生成特征快照;
- 通过快照系统按需生成特征的 DeLorean 模块;
使用 DeLorean 模块进行实验开发;
使用 DeLorean 模块结合实时特征记录的方法进行模型部署和线上调用;
样本是通过指定上下文生成, 使用**分层抽样(stratified sampling)**保证样本具有代表性;
DeLorean 模块: 根据配置信息自动生成所需要的特征;
需要提供:
- 生成样本对应的上下文;
- 含特征编码器的特征模型;
- 库中未包含的新特征的生成方式;
共享特征编码器, 该编码器在离线开发和在线预测中共享;
模型选择与训练
搞清楚当前整个系统中投入产出比最高的事情;
第一版系统务必要快速且有效;
考虑系统的预期承载能力和性能要求;
系统上线后单位时间内需要处理的请求数; 实时处理的性能要求在100ms一下;
评估模型可解释性的重要性;
预测过程和原理可否向非专业人士用通俗语言进行解释;
评估可用的训练数据量和可承载的特征量;
训练工具选择:
- 单机工具, liblinear, XGBoost
- 分布式工具, SparkMLlib, 分布式 XGBoost
模型效果评估
- 模型本身评估
准确率(precision), 在召回的文档中应该召回的文档占到的比例;
召回率(recall), 召回的相关文档占全部相关文档的比例;
F值, 准确率和召回率的一个权衡融合;
AUC(Area Under Curve), ROC 曲线下面积;
AUC=∫01P(f(x+)>c)dP(f(x−)>c)AUC = \int^1_0 P(f(x^+)>c)dP(f(x^-)>c) AUC=∫01P(f(x+)>c)dP(f(x−)>c)
- f(x)f(x)f(x) 预测函数对于样本 x 计算出的它属于正样本的预测值;
- x+x^+x+, x−x^-x− 代表正负样本;
- c 代表分类阈值;
离散公式:
AUC=∑xi∈x+rankxi−M×(M+1)2M×NAUC = \frac{\sum_{x_i \in {x^+}} rank_{x_i} - \frac{M \times (M+1)}{2}}{M \times N} AUC=M×N∑xi∈x+rankxi−2M×(M+1)
- M, N 正样本和负样本的数量;
- rankxirank_{x_i}rankxi 将所有样本按照预测值从大到小排序后 xix_ixi 的排序位置;
- AUC 适合衡量模型排序的效果;
- 电商推荐 AUC 平均到 0.7-0.8, 外卖团购平均到 0.9;
NE(Normalized Entropy)
NE=−1N∑i=1N((1+yi)×log(pi)+(1−yi)×log(1−pi))−(p×log(p)+(1−p)×log(1−p))NE = \frac{-\frac{1}{N}\sum_{i=1}^{N}((1+y_i) \times log(p_i) + (1-y_i) \times log(1-p_i))}{-(p \times log(p) + (1-p) \times log(1-p))} NE=−(p×log(p)+(1−p)×log(1−p))−N1∑i=1N((1+yi)×log(pi)+(1−yi)×log(1−pi))
- 从损失函数优化本身对模型进行评估
- log loss 交叉熵损失
- N 样本数量, yiy_iyi 是预测值{+1, -1}, pip_ipi 是预测为 +1 的概率;
- 当 yi=1y_i=1yi=1 时, 即样本为正, pip_ipi 接近 1 越好; 当 yi=−1y_i=-1yi=−1 时, 样本为负, pip_ipi 接近 0 越好;
- 分母选择整体 CTR 的信息熵做归一化处理, 消除训练数据样本分布不均衡的影响;
校准度(Calibration)
衡量模型预测值与真实值之间在整体数值规模上的差异;
Calibration=1N×∑p(xi)SampleCTRCalibration = \frac{\frac{1}{N} \times \sum p(x_i)}{SampleCTR} Calibration=SampleCTRN1×∑p(xi)
- 模型对系统产生的影响的评估
- AB 实验
- 交叉实验
第 5 章 机器学习技术的应用(中)相关推荐
- 推荐系统中的对抗机器学习技术总结
近年来,随着硬件基础以及算法能力的显著提高,以深度学习模型为代表的机器学习技术得到了学术界和工业界的广泛关注.由于出色的特征表示能力和数据拟合能力,深度学习模型已经席卷机器学习应用的各个子领域,比如计 ...
- 人工智能与机器学习技术在医疗保健行业中的应用
人工智能与机器学习技术在医疗保健行业中的应用 lqfarmer深度学习与NLP3月25日 人工智能( AI ).机器学习和深度学习正在席卷医疗保健行业,本文全面总结了以深度学习为主导的AI技术正给医疗 ...
- 机器学习技术在植物病害识别中的对比分析(迁移学习做了基础实验)
Comparative Analysis of Machine Learning Techniques for Plant Disease Identification 1.摘要 本文阐述了利用转移学 ...
- 毛远丽教授谈机器学习技术在检验医学中的新应用|专家论坛
机器学习(Machine Learning, ML)是一门多领域交叉学科技术,通过算法使得机器从大量数据中学习和发现规律,从而对新的样本或数据进行分析和研究的方法.从1949年的赫布理论诞生,机器学习 ...
- 生物信息学|药物发现中的机器学习技术(2)
本篇推文引自:Advanced machine-learning techniques in drug discovery 1. 迁移学习 如果数据量比较少,那么有一些技术可以用来规避这个问题 ...
- 生物信息学|药物发现中的机器学习技术(1)
本篇推文引自:Advanced machine-learning techniques in drug discovery 1. 摘要: 机器学习(ML)在药物发现中的持续增长,产生了令人印象 ...
- 创造力的分类:机器学习技术在发散思维EEG数据中的应用
<本文同步发布于"脑之说"微信公众号,欢迎搜索关注~~> 有研究表明,更大的脑电α功率(8-13Hz)是更有创造力的个人和任务的特征.本研究调查了机器学习对不同大脑状态 ...
- 【清华大学王东老师】现代机器学习技术导论.pdf
今天向大家推荐一本书 清华大学王东老师的<现代机器学习技术导论> 本书的主体内容是基于该研讨班形成的总结性资料,从2016年8月开始整理,历经数次大规模修正,直到2019年1月定稿.全书共 ...
- 第二章 知识图谱——机器大脑中的知识库
原文: http://book.thunlp.org/knowledge_graph/ 第二章 知识图谱--机器大脑中的知识库 Published by liuzy on July 6, 2015 ...
最新文章
- nagios自写插件—check_file
- 饿了么多活利器:实时双向复制工具(DRC)
- 【译】Jumping into Solidity — The ERC721 Standard (Part 4)
- Spring Data REST的实际应用
- oracle安装后新建数据库实例及配置
- 入夏多吃这些“杀菌菜”
- 1个通用工具平台+多个热点场景工具套件,助力开发者快速构建应用
- Ubuntu的LAMP与相关软件安装设置
- Unity学习资料收集
- 股票软件开发搭建:准备与过程
- 上百种Python炫酷可视化案例珍藏版——看完掌握~一键三连~老板都想要给你升职加薪哟!
- matlab景深合成算法,关于景深合成,你想知道的都在这儿!
- linux内核协议栈 TCP数据发送之发送窗口
- c语言boy,cboy
- Android5.0直播不了,Android 5.0打开直播页面直接闪退
- 太阳能基站光照跟随追光逐日PLC控制系统
- 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包
- 【Java基础】包、类、接口、常量、方法、变量的命名规则
- platform驱动的probe过程
- 机器学习算法: 朴素贝叶斯(Naive Bayes)
热门文章
- 经常用电脑辐射大怎么办?这5个习惯可以防辐射
- carton num_Carton先生–世界上第一个卡通系列MadeWithUnity
- python socks代理 命令行_Python使用socks代理
- python unicode 标点范围_Unicode 编码 范围
- 用键盘打开计算机管理,windows10系统使用键盘打开设备管理器的三种方法
- 计算机类一级学术刊物、核心刊物列表及简介
- tiktok海外直播红人带货
- 求生之路2服务器搭建指南个人存档
- Android 7再带壁纸,Android7 添加壁纸系统或替换系统壁纸
- Qt基于QuaZIP实现文件压缩/解压(Linux下)