机器学习实用教程(译)-4

来源:互联网 发布:windows复制快捷键 编辑:程序博客网 时间:2024/06/05 16:36

day three习题答案:

  1. What are 2 types of unwanted observations to remove from the start?
    Duplicate observations that can sometimes arise during data collection.
    Irrelevant observations that don’t fit the specific problem you’re trying to solve.
  2. What are 3 types of structural errors to look out for?
    Typos
    Inconsistent capitalization
    Mislabeled classes
  3. How should you handle missing data?
    ​Missing categorical data should be labeled with a new class called ‘Missing’
    Missing numeric data should be flagged (with a new indicator variable) and filled with 0.
  4. Why is it sub-optimal to drop observations with missing data or impute missing values?
    ​If you drop observations, you’re dropping information.
    If you impute missing values, you’re obscuring the fact that the data was missing in the first place.
    Remember, “missingness” is often informative.

4.特征工程Feature Engineering

特征工程是从已有特征创造一个新特征的工作。
这是数据科学的5个核心环节中最有价值的一个环节,因为:

  1. 通过特征工程步骤,你可以把关键信息从已有的特征中提取出来,帮助算法更精准地关注到重要信息。
  2. 可以使用专业知识对特征信息进行处理。

特征工程这个步骤可以采用的方法是没有设限的,因此本课程也不会把所有的方法都一一列举。在这一课的教程中,我们将采用启发式教学的方式来讲解特征工程,帮助读者更好地发散思维。随着数据处理的经验增长,你特征功能的技能也会跟着增长。

4.1 专业领域知识(Domain knowledge)

在做特征工程的时候,我们可以根据自己的需要和专业知识,判断是否要从已有特征中提取特征。在这一点上,我们是有很大的自由发挥空间的。

就拿我们之前基于真实数据做的一个“楼市危机”的例子来说,如果你认为楼价在某一特定时间段可能会收到其他因素的影响,你可以新建一个变量来标示一个因素的影响,当这个因素的影响达到一个特定的值后,就用”1”来表示,否则用”0”表示。通过建立”0/1”变量来标示某一因素对楼价的影响,可以运用专业知识,来有效的提高模型的准确性。

4.2 交互特征(Interaction features)

交互特征是说通过结合已有的2个或多个特征,来创建一个新的、对于模型预测准确率提高更有用的特征。

在一些文章中,“交互作用项”被严格定义为两个变量结合后的产物。但是在本文,“交互特征”的定义可以是两个特征的产物、和、不同。

举个例子(不动产价值估计):(real-estate)

假设已经有一个特征“5公里内的学校数量”,命名 “num_schools” ;
假设已有一个特征“5公里内学校的平均质量分数”,命名 “median_school” ;
那么当我们想要踢去这两个特征的交互特征时,我们可以直接将这两个特征进行相乘,得到新特征 “school_score” =”num_schools” x “median_school”

4.3 稀疏分类(Sparse classes)

稀疏分类(分类特征)是样本很少的分类,在一些机器学习的算法计算时可能会成为隐患,导致过拟合的问题。

什么分类属于稀疏分类?这里我们要考虑以下几点:

  1. 对于一个分类是否属于稀疏分类,没有约定的原则。
  2. 取决于数据集的大小和其他已有的特征的数量。
  3. 如果非要有一个原则的话,建议每个分类至少有50个样本,少于50 的分类,都把它们合并起来作为一个分类。

看回不动产价值的例子:

如上面图标所示,我们相似的分类合并起来,比如’exterior_walls’ 这个分类特征,有很多分类都比较相似。

我们可以把’Wood Siding’, ‘Wood Shingle’, 和 ‘Wood’ 这三个分类合并,命名为’Wood’ 。

然后,将其他稀疏的分类与’Other’ 分类合并,我们可以把’Concrete Block’, ‘Stucco’, ‘Masonry’, ‘Other’, 和 ‘Asbestos shingle’ 合并成 ‘Other’ 分类。

合并过后,图表就变成了下面这样:

4.4 虚拟变量(Dummy Variables)

大部分机器学习算法都不可以直接学习分类特征,特别是对于字符型的变量值。因此,在处理分类特征时,我们需要创建虚拟变量。

我们这里针对分类特征创建的虚拟变量是一组二进制变量(0/1),组中的每一个变量都代表分类特征中的一个单独的分类。

呈现的信息时一样的,但经过这种数字化的处理后,机器学习的算法才可以识别分类数据。

沿用上面的例子,我们把剩余的8个分类特征通过创建虚拟变量,用数字化方式呈现:

4.5 移除无用变量(Remove unused)

最后,从数据集中移除无用或多余的特征。

无用特征是指那些对于机器学习算法没有意义的特征,例如:

  • “ID字段”
  • 在预测结果的时候无法使用的特征
  • 其他文字描述

多余特征是指那些在特征工程阶段你会创建新特征来代替的。

4.6 结论

完成了数据清洗和特征工程这两个步骤后,你就已经将原始数据集处理成了“可分析表”(analytical base table,ABT),后面的模型是在这个表的基础上建立起来的。

最后,不是每一个你建立的特征都必须对于模型训练有显著的效果,甚至你会发现很多是没有用的,但是没关系,只要有那么几个特征对于模型训练有效果就可以了,我们没办法一开始就知道这些特征是否真的有效。

关键是要用能够自动选择最佳特征来训练模型的算法(内置特征选择)。这样可以在避免提供很多特征的情况下,很好的避免过拟合。

4.7 测试

  • What are indicator variables and why are they useful?
  • What are two criteria you can use to group sparse classes?
  • In a set of dummy variables created from the same feature, would there ever be multiple variables with value 1 (per observation)?
  • In our real-estate example, what would be the values for the ‘exterior_walls’ dummy variables if a property had metal walls?