n 重复记录:我们经常会看到相同的记录在数据集中重复出现。此问题可能发生在数据收集过程中,在此过程中,我们不止一次地记录了一个数据点,或者在数据准备过程中合并不同的数据集。拥有重复的记录可能会对我们的模型产生负面影响,在进行下一步之前,最好检查数据集中的是否存在重复记录。
n 缺失值:在数据中看到一些记录为空或缺失值也是很常见的。当我们在训练我们的ML模型时,这也会产生不利的影响。有很多种方法可以处理数据中缺失的值,但是我们必须非常小心并很好地理解我们的数据,因为这可能会极大地改变我们的模型性能。处理缺失值的一些方法包括用缺失值删除记录、用平均值或中位数替换缺失值、用常量替换缺失值等等方法。在处理缺失值之前,研究我们的数据将会是意见非常有用的事情。
数据分析:现在我们的数据已经准备好了,是时候实际查看数据了,看看我们是否能够识别任何模式并从数据中获得一些见解。摘要统计和图表是描述和理解数据的两种最佳方法。对于连续变量,从最小值、最大值、平均值、中值和四分位数开始比较好。对于分类变量,我们可以查看类别的计数和百分比。在查看这些汇总统计信息时,还可以开始绘制图形来可视化数据结构。下图显示了一些常用的数据分析图表。直方图常用来显示和检查变量、离散值和偏差的基本分布。箱形图经常用于可视化五位数摘要、离散值和偏差。散点图经常被用来检测变量之间明显的两两相关关系:
数据分析和可视化。左上:房屋销售价格直方图,右上:房屋销售价格直方图,左下:地下室、一层、二层建筑面积分布的箱形图,右下:一层与二层建筑面积的散点图。
构造特征:构造特征是应用ML中模型构建过程中最重要的部分,然而,这是许多教科书和ML课程中讨论最少的话题之一。构造特征是将原始输入数据转换为更有意义的数据,以供算法学习的过程。例如,对于我们将要构建的微博情绪预测模型,我们的原始输入数据可能仅在一列中包含文本列表,而在另一列中包含情绪目标列表。我们的ML模型可能不会学习如何用这些原始数据,来进行很好地预测每条博文的情绪。但是,如果我们转换这些数据,列出每条博文中每个单词出现的次数,那么我们的学习算法可以更容易地了解某些单词的存在与情绪之间的关系。我们还可以将每个单词与其相邻的单词(bigram)进行分组,并将每条博文中每个相邻的单词(bigram)的出现次数作为另一组特征。从这个例子中可以看出,构造特征是一种使原始数据更具有代表性和更能反映潜在问题的方法。构造特征是一门科学,也是一门艺术。构造特征需要良好的数据集领域知识,从原始输入数据构建新特征的创造力,以及多次迭代以获得更好的结果。在后面的文章中,我们将会学习一些具体的构造特征的方法。
训练/测试算法:一旦我们创建了自己的特性,就该训练和测试一些ML算法了。在开始训练模型之前,最好考虑一下性能指标。根据我们正在解决的问题,对性能度量的选择将会有所不同。例如,如果我们正在构建一个价格预测模型,我们可能希望最小化我们的预测与实际价格之间的差异,并选择均方根误差(RMSE)作为性能度量。如果我们正在构建一个信用模型来预测一个人是否能够获得贷款批准,那么我们可能希望使用精确度作为性能度量,因为错误的贷款批准(假阳性)比错误的贷款不批准(假阴性)具有更大的负面影响。
一旦我们的模型有了具体的性能度量,我们就可以训练和测试各种学习算法及其性能。根据我们的预测目标,我们对学习算法的选择也会有所不同。下图展示了一些常见的机器学习问题。如果我们正在解决分类问题,那么我们可能希望训练分类器,例如逻辑回归模型、朴素贝叶斯分类器或随机森林分类器。另一方面,如果我们有一个连续的目标变量,那么我们就需要训练回归量,比如线性回归模型,k近邻,或者支持向量机(SVM)。如果我们想通过无监督学习从数据中获得一些见解,你可以使用k-means聚类或mean shift算法: