您想要了解的有关营销AI内容生成应用程序的所有信息
Author Archive
使用机器学习,你只需要3个工具
要创建有效的机器学习工具箱,您实际上仅需要以下三个基本工具:Feature Store、Model Store、Evaluation Store
终端设备上的AI —到目前为止我所知道的
到2022年,出货的智能手机中80%将具有终端设备上AI功能,高于2017年的10%
分类特征
分类特征是重要的一类特征。分类特征是离散的,非连续的。
本文将针对小型分类和大型分类介绍5种主流的编码方式。以及各自的优缺点。
什么是分类(类别)特征?
分类特征是用来表示分类的,他不像数值类特征是连续的,分类特征是离散的。
比如:
- 性别
- 城市
- 颜色
- IP地址
- 用户的账号ID
有些分类特征也是数值,比如账号ID,IP地址。但是这些数值并不是连续的。
连续的数字是数值类特征,离散的数字是分类特征。
关于连续和离散的解释可以看看这篇文章:《关于连续和离散的理解》
小型分类特征的编码方式
自然数编码/序列编码-Ordinal Encoding
某些分类本来就有一定的排序,这种情况下就可以使用简单的自然数编码。
例如学位:
学士-0
硕士-1
博士-2
独热编码-One-Hot Encoding
对于城市、颜色、品牌、材质…这些特征就不适合用自然数编码,因为这些特征是没有排序关系的。
使用独热编码可以让不同的分类处在「平等的地位」,不会因为数值的大小而对分类造成影响。
例如颜色分类(假设只有3种颜色):
红色-100
黄色-010
蓝色-001
跟独热编码类似还有「虚拟编码-Dummy Encoding」和「效果编码-Effect Encoding」。
实现方式比较相似,不过有一些略微的差别,并且适用在不同的场景。
感兴趣的可以看看这篇文章:
大型分类特征的编码方式
目标编码-Target Encoding
目标编码是表示分类列的一种非常有效的方法,并且仅占用一个特征空间,也称为均值编码。该列中的每个值都被该类别的平均目标值替代。这可以更直接地表示分类变量和目标变量之间的关系。
目标编码的扩展阅读:《目标编码简介》
散列编码-Hash encoding
散列函数也是大家常听到的哈希函数。散列函数是一个确定性函数,它映射一个潜在的无界整数到有限整数范围[1,m]。
假如有一个分类有1万个值,如果使用独热编码,编码会非常长。而使用了散列编码,不管分类有多少不同的值,都会转换成长度固定的编码。
分箱计数-Bin-Counting
分箱计数的思维有点复杂:他不是用分类变量的值作为特征,而是使用目标变量取这个值的条件概率。
换句话说,我们不对分类变量的值进行编码,而是要计算分类变量值与要预测的目标变量之间的相关统计量。
不同编码的优缺点总结
独热编码-One-Hot Encoding
优点:
- 容易实现
- 分类很精确
- 可用于在线学习
缺点:
- 计算效率不高
- 不能适应可增长的类别
- 只适用于线性模型
- 对于大数据集,需要大规模的分布式优化
散列编码-Hash encoding
优点:
- 容易实现
- 模型训练成本更低
- 容易适应新类别
- 容易处理稀有类
- 可用于在线学习
缺点:
- 只适合线性模型或核方法
- 散列后的特征无法解释
- 精确度难以保证
分箱计数-Bin-Counting
优点:
- 训练阶段的计算负担最小
- 可用于基于树的模型
- 容易适应新的类别
- 可使用back-off方法或最小计数图处理稀有类
- 可解释
缺点:
- 需要历史数据
- 需要延迟更新,不完全适合在线学习
- 很可能导致数据泄露
上面内容摘自:《精通特征工程》
总结
分类特征是离散的特征,数值类特征是连续的。
对于小型分类,常用的编码方式有:
- 自然数编码/序列编码-Ordinal Encoding
- 独热编码-One-Hot Encoding
- 虚拟编码-Dummy Encoding
- 效果编码-Effect Encoding
对于大型分类,常用的编码方式有:
- 目标编码-Target Encoding
- 散列编码-Hash encoding
- 分箱计数-Bin-Counting
相关文章推荐:
数值类特征
数值类特征是最常见的一种特征类型,数值可以直接喂给算法。
为了提升效果,我们需要对数值特征做一些处理,本文介绍了4种常见的处理方式:缺失值处理、二值化、分桶、缩放。
什么是数值类特征?
数值类特征就是可以被实际测量的特征。例如:
- 人的身高、体重、三维
- 商品的访问次数、加入购物车次数、最终销量
- 登录用户中有多少新增用户、回访用户
数值类的特征可以直接喂给算法,为什么还要处理?
因为好的数值特征不仅能表示出数据隐藏的中的信息,而且还与模型的假设一致。通过合适的数值变换就可以带来很好的效果提升。
例如线性回归、逻辑回归对于数值的大小很敏感,所以需要进行缩放。
对于数值类特征,我们主要关注2个点:
- 大小
- 分布
下面提到的4种处理方式都是围绕大小和分布来优化的。
数值类特征常用的4种处理方式
- 缺失值处理
- 二值化
- 分桶 / 分箱
- 缩放
缺失值处理
在实际问题中,经常会遇到数据缺失的情况。缺失值对效果会产生较大的影响。所以需要根据实际情况来处理。
对于缺失值常用3种处理方式:
- 填充缺失值(均值、中位数、模型预测…)
- 删除带有缺失值的行
- 直接忽略,将缺失值作为特征的一部分喂给模型进行学习
二值化
这种处理方式通常用在计数的场景,例如:访问量、歌曲的收听次数…
举例:
根据用户的听音乐的数据来预测哪些歌曲更受欢迎。
假设大部分人听歌都很平均,会不停的听新的歌曲,但是有一个用户24小时的不停播放同一首歌曲,并且这个歌曲很偏门,导致这首歌的总收听次数特别高。如果用总收听次数来喂给模型,就会误导模型。这时候就需要使用「二值化」。
同一个用户,把同一首歌听了N遍,只计数1,这样就能找出大家都喜欢的歌曲来推荐。
分桶 / 分箱
拿每个人的收入举例,大部分人的收入都不高,极少数人的收入极其高,分布很不均匀。有些人月收入3000,有些人月收入30万,跨了好几个数量级。
这种特征对于模型很不友好。这种情况就可以使用分桶来处理。分桶就是将数值特征分成不同的区间,将每个区间看做一个整体。
常见的分桶:
- 年龄分布
- 商品价格分布
- 收入分布
常用的分桶方式:
- 固定数值的分桶(例如年龄分布:0-12岁、13-17岁、18-24岁…)、
- 分位数分桶(例如淘宝推荐的价格区间:30%用户选择最便宜的价格区间、60%用户选择的中等价格区间、9%的用户选择最贵的价格区间)
- 使用模型找到最佳分桶
缩放
线性回归、逻辑回归对于数值的大小很敏感、不同特征尺度相差很大的话会严重影响效果。所以需要将不同量级的数值进行归一化。将不同的数量级缩放到同一个静态范围中(例如:0~1,-1~1)。
常用的归一化方式:
- z分数标准化
- min-max标准化
- 行归一化
- 方差缩放
扩展阅读:
数据科学生命周期的7个步骤–在业务中应用AI
我们将更深入地探讨数据科学生命周期本身的七个步骤,以及非技术项目负责人应理解的过程方面
Lyft的Craig Martell访谈录:更少算法,更多应用
法变得越来越不重要了吗?随着算法的日趋商品化,算法可能会越来越少,而应用程序则越来越多。
除了Kaggle之外,还有哪些数据科学平台?
本文分为两个部分:竞争和协作平台可磨练您的技能,增强特定技能的新资源
探索性数据分析 | EDA
探索性数据分析是拿到原始数据后,通过技术手段帮助自己更好的理解数据、提取出「好特征」、建立初步模型的过程。
本文将介绍数据的分类方式,以及不同类型的数据如何可视化的具体方法。
什么是探索性数据分析?
说到篮球,大家都知道身高、臂展是运动员的关键特征。
那手球呢?相信大部分人都说不出来。
遇到自己不熟悉的领域,需要快速对陌生领域有一定的理解。
有2种方法来帮助我们理解陌生领域:
- 咨询业内人士。资深的业内人士会传授一些他们的经验。
- 去研究一下陌生领域的数据。我们可以把手球运动员的身体数据和成绩数据拿过来做分析,看看最优秀的手球运动员都有哪些特点。在没有任何行业经验的情况下,通过对数据的洞察,也能有一些发现。
上面的第二条路就是:探索性数据分析 | Exploratory Data Analysis | EDA
探索性数据分析就是利用各种技术手段(大部分都是利用数据可视化)探索数据内部结构和规律的一种数据分析方法和理念。
探索性数据分析的目的是尽可能是洞察数据集、发现数据的内部结构、提取重要的特征、检测异常值、检验基本假设、建立初步的模型。
探索性数据分析的3步方法
探索性数据分析的过程大致分为3步:
- 数据分类
- 数据可视化
- 洞察数据
第一步:数据分类
当我们拿到数据后,第一步就是把这些数据进行分类,然后用不同方法来处理不同类型的数据。
数据由粗到细可以按照下面的方式来分类:
结构化数据 VS 非结构化数据
结构化数据:能够用表格来组织的数据都算是结构化的数据。
例如:Excel里的数据、MySQL里的数据…
非结构化数据:非表格形式组织的都是。
例如:文本、图片、视频…
定量数据 VS 定性数据
定量数据:数值类型,衡量某样东西的数量。
例如:1985
定性数据:类别,描述某样东西的性质。
例如:80后
数据的4个等级
定类等级(norminal level):是数据的第一个等级,其结构最弱。只需要按照名称来分类。
例如:血型(A,B,AB,O)、姓名、颜色
定序等级(ordinal level):定序等级在定类等级的基础上加了自然排序,这样我们就可以对不同数据进行比较。
例如:餐厅的评星,公司的考核等级
定距等级(interval level):定距等级一定是数值类型的,并且这些数值不仅可以用来排序,还可以用来加减。
例如:华氏度、摄氏度(温度有负数,不可以进行乘除运算)
定比等级(ratio level):在定距等级的基础上,加入了绝对零点,不但可以做加减的运算,还可以做乘除的运算。
例如:金钱、重量
第二步:数据可视化
为了更好的洞察数据,我们可以将数据可视化,从而更好的观察数据的特点。
常用的数据可视化有下面几种:
上面的4个数据等级需要对应不同的可视化方法,下面整理了一个表格,可以帮助大家更好的选择可视化的方案。
下面是一些基础的可视化方案,在实际应用中,会有更复杂的,组合图表可以使用。
数据等级 | 属性 | 描述性统计 | 图表 |
---|---|---|---|
定类 | 离散、无序 | 频率占比、众数 | 条形图、饼图 |
定序 | 有序类别、比较 | 频率、众数、中位数、百分位数 | 条形图、饼图 |
定距 | 数字差别有意义 | 频率、众数、中位数、均值、标准差 | 条形图、饼图、箱线图 |
定比 | 连续 | 均值、标准差 | 条形图、曲线图、饼图、箱线图 |
第三步:洞察数据
数据的可视化可以帮助我们更好的洞察数据,我们可以更高效的发现哪些数据更重要,不同数据之间可能存在的关系,哪些数据会相互影响…
之所以叫探索性数据分析,就是没什么固定的套路,所以这一步没什么好讲的。
总结
探索性数据分析就是利用各种技术手段(大部分都是利用数据可视化)探索数据内部结构和规律的一种数据分析方法和理念。
探索性数据分析的过程大致分为3步:
- 数据分类
- 数据可视化
- 洞察数据
特征工程 – Feature Engineering
特征工程是机器学习工作流程中重要的组成部分,他是将原始数据「翻译」成模型可理解的形式。
本文将介绍特征工程的基本概念、重要性和性能评估的4个步骤。
特征工程的重要性
大家都听过美国计算机科学家 Peter Norvig 的2句经典名言:
基于大量数据的简单模型优于基于少量数据的复杂模型。
这句说明了数据量的重要性。
更多的数据优于聪明的算法,而好的数据优于多的数据。
这句则是说的特征工程的重要性。
所以,如何基于给定数据来发挥更大的数据价值就是特征工程要做的事情。
在16年的一项调查中发现,数据科学家的工作中,有80%的时间都在获取、清洗和组织数据。构造机器学习流水线的时间不到20%。详情如下:
- 设置训练集:3%
- 清洗和组织数据:60%
- 收集数据集:19%
- 挖掘数据模式:9%
- 调整算法:5%
- 其他:4%
PS:数据清洗和组织数据也是数据科学家「最讨厌」的工作。感兴趣的可以看这篇原始的文章:
数据来源:《Data Scientists Spend Most of Their Time Cleaning Data》
什么是特征工程
我们先来看看特征工程在机器学习流程中的位置:
从上图可以看出,特征工程处在原始数据和特征之间。他的任务就是将原始数据「翻译」成特征的过程。
特征:是原始数据的数值表达方式,是机器学习算法模型可以直接使用的表达方式。
特征工程是一个过程,这个过程将数据转换为能更好的表示业务逻辑的特征,从而提高机器学习的性能。
这么说可能不太好理解。其实特征工程跟做饭很像:
我们将食材购买回来,经过清洗、切菜,然后开始根据自己的喜好进行烹饪,做出美味的饭菜。
上面的例子中:
食材就好像原始数据
清洗、切菜、烹饪的过程就好像特征工程
最后做出来的美味饭菜就是特征
人类是需要吃加工过的食物才行,这样更安全也更美味。机器算法模型也是类似,原始数据不能直接喂给模型,也需要对数据进行清洗、组织、转换。最后才能得到模型可以消化的特征。
除了将原始数据转化为特征之外,还有2个容易被忽视的重点:
重点1:更好的表示业务逻辑
特征工程可以说是业务逻辑的一种数学表达。
我们使用机器学习的目的是为了解决业务中的特定问题。相同的原始数据有很多种转换为特征的方式,我们需要选择那些能够「更好的表示业务逻辑」,从而更好的解决问题。而不是那些更简单的方法。
重点2:提高机器学习性能
性能意味着更短时间和更低成本,哪怕相同的模型,也会因为特征工程的不同而性能不同。所以我们需要选择那些可以发挥更好性能的特征工程。
评估特征工程性能的4个步骤
特征工程的业务评估很重要,但是方法五花八门,不同业务有不同的评估方法。
这里只介绍性能的评估方式,相对通用一些。
- 在应用任何特征工程之前,得到机器学习模型的基准性能
- 应用一种或多种特征工程
- 对于每种特征工程,获取一个性能指标,并与基准性能进行对比
- 如果性能的增量大于某个阈值,则认为特征工程是有益的,并在机器学习流水线上应用
例如:基准性能的准确率是40%,应用某种特征工程后,准确率提升到76%,那么改变就是90%。
(76%-40%)/ 40%=90%
总结
特征工程是机器学习流程里最花时间的工作,也是最重要的工作内容之一。
特征工程定义:是一个过程,这个过程将数据转换为能更好的表示业务逻辑的特征,从而提高机器学习的性能。
特征工程容易被忽略的2个重点:
- 更好的表示业务逻辑
- 提高机器学习性能
特征工程性能评估的4个步骤:
- 在应用任何特征工程之前,得到机器学习模型的基准性能
- 应用一种或多种特征工程
- 对于每种特征工程,获取一个性能指标,并与基准性能进行对比
- 如果性能的增量大于某个阈值,则认为特征工程是有益的,并在机器学习流水线上应用