甜野猫 关于机器学习那些事儿:我们从企业学到哪些经验教训?( 二 )


3.脏数据!
是的 , 我最好告诉你一些你不知道的事情 , 可能怎么强调都不为过 。 数据很脏 , 在我们的大部分活动中 , 客户都很自豪和兴奋地谈论他们的数据湖 , 他们的数据湖是多么美丽 , 以及他们迫不及待地想要从中获得多少洞见 。 因此 , 作为数据科学家 , 这成为了我们脑海中的画面:
异常值检测:负时间、浮点邮政编码或信用评分为零只是无效数据的几个示例 。 在训练模型时 , 不纠正此值可能会引入高偏差 。 缺失/不正确的值估算:解决错误/缺失值的明显方法是简单地丢弃它们 。 替代方案是插补 , 即通过相应属性的均值、中值或模式替换缺失/不正确的值 。 另一种选择是插值 , 即构建模型以预测具有缺失值的属性 。 最后 , 领域知识也可用于估算 。 假设我们正在处理患者数据 , 并且有一个属性表明患者是否患有癌症 。 如果缺少此类信息 , 可以查看预约数据集并查明患者是否与肿瘤科医生有过预约 。 虚拟编码和特征哈希:这些对于将分类数据转换为数字非常有用 , 特别是对于基于系数的算法 。 假设存在指示美国状态的属性状态(例如 , FL , CA , AZ) 。 将FL映射到1 , 将CA映射到2 , 将AZ映射到3会引入秩序和大小 , 这意味着AZ将大于FL , CA将是FL的两倍 。 单热编码(也称为虚拟编码)通过将分类列映射到多个二进制列来解决此问题 , 每个列对应一个类别值 。 缩放:当特征处于不同尺度时 , 基于系数的算法会经历偏差 。 假设年龄在[0,100]内的年份给出 , 而工资在[0,1000]内以美元给出 。 优化算法可以为工资分配更多权重 , 因为它具有更高的绝对值 。 因此 , 通常建议标准化 , 常用方法包括z评分或标准化(当数据正常时)和最小-最大特征缩放 。 分箱:将实值列映射到不同的类别可能很有用 , 例如 , 将回归问题转换为分类问题 。 假设您有兴趣以分钟为单位预测航班的到达延误 。 另一种方法是预测航班是早到、准时还是晚 , 为每个类别都定义范围 。 4.这一切都与特征工程有关
定义您想要预测的内容 。 每个实例代表什么?一个客户?交易?病人?一张票?确保特征集的每一行对应一个实例 。 避免使用唯一ID 。 它们不仅在大多数情况下无关紧要 , 而且会导致严重的过度拟合 , 尤其是在应用XGBoost等算法时 。 使用领域知识来推导有助于衡量成功/失败的新特征 。 住院次数可能是患者风险的指标;过去一个月的外汇交易总额可能是欺诈的一个指标;所要求的申请贷款额与年收入之比可能是信贷风险的指标 。 使用自然语言处理技术从非结构化自由文本中派生特征 。 一些例子是LDA、TF-IDF、word2vec和doc2vec 。 如果存在非常多的特征 , 则使用降维 , 例如 , PCA和t-SNE 。 5.异常检测无处不在


推荐阅读