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

来源:互联网 发布:winzip mac 6 注册码 编辑:程序博客网 时间:2024/05/23 01:13
day two习题答案:1.What types of features can have sparse classes? How would you check for them?Categorical features can have sparse classes, and you can check for them using bar plots.2.What does it mean if 'sqft' (size of property) has a correlation of 0.68 with 'baths' (# of bathrooms)?It means that ‘sqft’ and ‘baths’ have a fairly strong positive correlation.In other words, larger properties have more bathrooms, which makes sense.3.What are 3 quick checks you can make by displaying example observations from the dataset?Do the columns make sense?Do the values in those columns make sense?Are the values on the right scale?Is missing data going to be a big problem based on a quick eyeball test?

3. 数据清洗(Data Cleaning)

数据清洗是机器学习当中最基础的环节,就像烹饪前对食材进行处理的步骤一样,是一道菜成败的关键环节。专业的数据科学家通常会花费大量时间在这个环节,毕竟有句话说的好:

Better data beats fancier algorithms.

没有好的输入,哪来好的输出呢?
当然啦,不同的数据类型需要不同的清洗方式,接下来,就由我来给大家介绍数据清洗的内容吧。

3.1 不需要的样本(Unwanted observations)

第一步,移除数据集中不需要的样本。
不需要的样本分为两类:重复(duplicate)样本和不相关(irrelevant)样本。
重复样本
大部分在数据采集的时候出现,当你合并从不同地方来的数据集、爬虫爬取数据、从客户端或者其他途径获取数据时,都有可能得到重复的样本数据。
不相关样本
当你解决特定问题时,不适合的数据。例如:当你需要建立一个一房一厅户型的房子的数据模型时,两房一厅户型的房子就是不相关样本。移除不相关样本数据,可以在后续环节中避免很多不必要的麻烦。

3.2 结构误差(Structural errors)

结构误差
结构误差是指在数据测量(数据获取)、数据传输、数据存储室出现的错误。
例如:输入错误、大小写不一致在分类特征的数据中最常见,请看下图,检查分类命名:

从上图可以看出,
‘composition’ 跟 ‘Composition’ 相同,
‘asphalt’ 应该是 ‘Asphalt’,
‘shake-shingle’ 应该是 ‘Shake Shingle’,
‘asphalt,shake-shingle’ 跟 ‘Shake Shingle’ 有可能可以合并。
整理过后,数据就干净了一些。

最后,检查可以合并的分类标签,例如:

  • ‘N/A’ 和 ‘Not Applicable’ 这一类的标签应该合并,
  • ‘IT’ 和 ‘information_technology’ 这一类的标签应该被合并。

3.3 异常值处理(Unwanted outliers)

线性回归模型(linear regression models)对异常值的容忍程度没有决策树模型(decision tree models)高,所以,如果有充分的理由,移除异常值可以提高模型的性能。
但是,也不能因为他的值比较大,就移除一个样本,因为大的值,有时候也是一个有用的信息。
在数据清洗中,移除任何的样本数据,都要有充分的理由,例如:疑似测量错误、数据不真实等。

3.4 丢失的数据值(Missing data)

对待丢失的数据,不能粗暴的直接忽视,在使用数据前,需要对丢失的值进行一定处理,因为大部分的算法不接受丢失的数据。
不经过考虑,直接采用以下两种处理方式是不可取的:

  • 移除有丢失数据的样本
  • 根据其他样本的值补充丢失值。

之所以说以上两种处理方式不可取,是因为:

  1. 丢失数据的样本和丢失数据本身包含信息,直接移除样本或者填充一个值,会导致信息的丢失。无论你是基于很多考虑后,给出了一个“合理”的值来填充丢失的数据,还是设计一个模型来计算丢失数据的值,最后都会导致数据的污染,因为前者填充的值可能与原本数据相去甚远,后者会增强已有的特征值在模型中的比重。

  2. 在实际操作时,我们经常会需要基于有丢失特征值的数据来预测结果。

总而言之,如果一个数据丢失了,那么就应该直接想办法告诉算法,这个数据丢失了。

对于丢失数据的处理,应该视情况而定:

  • 如果是分类特征,最好的处理方式是单独分类为:”丢失的数据”;
  • 如果是数字型特征,最好的处理方式是增加一个标示变量(indicator variable),并将值填充为0。

通过以上的处理步骤,你得到的数据集就是一个强健的数据集,可以让你在后期训练模型的时候少很多坑。

3.5 课后习题

1)What are 2 types of unwanted observations to remove from the start?
2)What are 3 types of structural errors to look out for?
3)How should you handle missing data?
4)Why is it sub-optimal to drop observations with missing data or impute missing values?