机器学习中的特征工程总结!
极市导读
特征工程是机器学习,甚至是深度学习中最为重要的一部分,是数据科学中最有创造力的一部分。本文列举了在机器学习中的特征工程相关知识点:将原始数据映射到特征、良好特征的特点以及两类特征的组合。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
特征工程
将原始数据映射到特征
映射数值
映射分类值
将 Charleston Road 映射到 0 将 North Shoreline Boulevard 映射到 1 将 Shorebird Way 映射到 2 将 Rengstorff Avenue 映射到 3 将所有其他街道 (OOV) 映射到 4
我们将学习适用于所有街道的单一权重。例如,如果我们学习到 street_name 的权重为 6,那么对于 Charleston Road,我们会将其乘以 0,对于 North Shoreline Boulevard 则乘以 1,对于 Shorebird Way 则乘以 2,依此类推。以某个使用 street_name 作为特征来预测房价的模型为例。根据街道名称对房价进行线性调整的可能性不大,此外,这会假设你已根据平均房价对街道排序。我们的模型需要灵活地为每条街道学习不同的权重,这些权重将添加到利用其他特征估算的房价中。
我们没有将 street_name 可能有多个值的情况考虑在内。例如,许多房屋位于两条街道的拐角处,因此如果模型包含单个索引,则无法在 street_name 值中对该信息进行编码。
对于适用于样本的值,将相应向量元素设为 1。 将所有其他元素设为 0。
稀疏表示法
良好特征的特点
避免很少使用的离散特征值
unique_house_id: 8SK982ZZ1242Z
最好具有清晰明确的含义
house_age: 27
house_age: 851472000
user_age
的来源没有检查值恰当与否:user_age: 277
实际数据内不要掺入特殊值
quality_rating: 0.82
quality_rating: 0.37
quality_rating
,则数据集可能使用如下特殊值来表示不存在该值:quality_rating: -1
一个特征只存储质量评分,不含特殊值。 一个特征存储布尔值,表示是否提供了 quality_rating。为该布尔值特征指定一个名称,例如 is_quality_rating_defined。
考虑上游不稳定性
br/sao_paulo
”这样的字符串转换为独热矢量。)city_id: "br/sao_paulo"
inferred_city_cluster: "219"
表示 (Representation):清理数据
缩放特征值
帮助梯度下降法更快速地收敛。 帮助避免“NaN 陷阱”。在这种陷阱中,模型中的一个数值变成 NaN(例如,当某个值在训练期间超出浮点精确率限制时),并且模型中的所有其他数值最终也会因数学运算而变成 NaN。 帮助模型为每个特征确定合适的权重。如果没有进行特征缩放,则模型会对范围较大的特征投入过多精力。
[最小值,最大值]
以线性方式映射到较小的范围,例如 [-1,+1]
。另一种热门的缩放策略是计算每个值的 Z 得分。Z 得分与距离均值的标准偏差相关。换言之:scaledvalue "=("value"-"mean")/"stddev.
均值 = 100 标准偏差 = 20 原始值 = 130
scaled_value = (130 - 100) / 20
scaled_value = 1.5
处理极端离群值
分箱
(LatitudeBin1、LatitudeBin2、…、LatitudeBin11)
,而不是一个浮点特征。拥有 11 个不同的特征有点不方便,因此我们将它们统一成一个 11 元素矢量。这样做之后,我们可以将纬度 37.4 表示为:[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
清查
缺失值。例如,有人忘记为某个房屋的年龄输入值。
重复样本。例如,服务器错误地将同一条记录上传了两次。
不良标签。例如,有人错误地将一颗橡树的图片标记为枫树。
不良特征值。例如,有人输入了多余的位数,或者温度计被遗落在太阳底下。
最大值和最小值
均值和中间值
标准偏差 考虑生成离散特征的最常见值列表。例如,
country:uk
的样本数是否符合你的预期?language:jp
是否真的应该作为你数据集中的最常用语言?
了解数据
记住你预期的数据状态。
确认数据是否满足这些预期(或者你可以解释为何数据不满足预期)。
仔细检查训练数据是否与其他来源(例如信息中心)的数据一致。
特征组合:对非线性规律进行编码
蓝点代表生病的树。
橙点代表健康的树。
cross product
(向量积)。我们通过将x1与 x2组合来创建一个名为 x3的特征组合:特征组合的种类
[A X B]:将两个特征的值相乘形成的特征组合。 [A x B x C x D x E]:将五个特征的值相乘形成的特征组合。 [A x A]:对单个特征的值求平方形成的特征组合。
特征组合:组合独热矢量
country=USA, country=France 或 language=English, language=Spanish
。然后,如果你对这些独热编码进行特征组合,则会得到可解读为逻辑连接的二元特征,如下所示:country:usa AND language:spanish
binned_latitude = [0, 0, 0, 1, 0] binned_longitude = [0, 1, 0, 0, 0]
binned_latitude X binned_longitude
binned_latitude(lat) = [
0 < lat <= 10
10 < lat <= 20
20 < lat <= 30
]
binned_longitude(lon) = [
0 < lon <= 15
15 < lon <= 30
]
针对这些粗略分箱创建特征组合会生成具有以下含义的合成特征:
binned_latitude_X_longitude(lat, lon) = [
0 < lat <= 10 AND 0 < lon <= 15
0 < lat <= 10 AND 15 < lon <= 30
10 < lat <= 20 AND 0 < lon <= 15
10 < lat <= 20 AND 15 < lon <= 30
20 < lat <= 30 AND 0 < lon <= 15
20 < lat <= 30 AND 15 < lon <= 30
]
行为类型behavior type(吠叫、啜泣、依偎等) 时段time of day
[behavior type X time of day]
首届珠港澳人工智能算法大赛即将开赛
赛题一:短袖短裤识别
赛题二:小摊贩占道识别
即将开赛 等你加入