机器学习数据探索实战--方法论

来源:互联网 发布:数控编程用什么格式 编辑:程序博客网 时间:2024/05/18 08:42

机器学习数据探索实战过程–方法论

根据实践总结出在实践中数据科学的数据探索的流程。

机器学习任务工作阶段说明

完成一个机器学习任务,大概分为以下几个阶段,可以从《Data Science Solutions》中查看详细说明:

  1. 提出问题和定义问题
  2. 获取训练数据集和测试数据集
  3. 整合数据,准备和清理数据
  4. 分析数据,对数据进行特征识别,探索数据
    – 这一步可以有多种方法,比如可视化等
  5. 建立模型、预测和解决问题
  6. 可视化,报告和呈现问题解决步骤和最终解决方案
  7. 提供或提交结果

注意:以上只是一个顺序的工作流,在实际工作中,可能多个工作流之间交叉进行。

问题定义

做这个数据分析是为了达到一个什么目的?是对数据进行分类,还是对数据做回归分析,还是需要做一个预测模型。

任务目标

数据科学的整个流程,主要解决以下几个目标:

Classifying(分类或归类)

我们可能希望对我们的样本数据进行归类或分类。我们也可能想了解不同类别对我们的解决方案目标的影响或相关性。

Correlating(寻找关联性)

我们可以只基于训练数据集中的可用特征来解决问题。但我们需要探索数据,最好能找到以下问题的答案:

  • 数据集中的哪些特征,对我们的目标有重大贡献或影响?
  • 在统计学上,特征和目标之间是否存在相关性?
  • 当特征值变化时,目标状态也会改变吗,反之亦然?

这可以针对给定数据集中的数字和分类特征进行测试。我们也可能想要确定后续目标和工作流阶段的特征之间的相关性。关联某些特征,可能有助于创建,完善或更正特征。

Converting(转换特征值)

对于建模阶段,我们需要准备数据。根据模型算法的选择,可能需要将所有特征值转换为等效的数值类型的值。例如,将文本分类值转换为数值。

Completing(完善特征值)

数据准备也可能要求我们估计特征中的任何缺失值。当没有缺失值时,模型算法的效果可能更佳。

Correcting(纠正特征值)

我们还需要检查并修正训练数据集中的错误数据(不准确等),并排除含有错误数据的记录。一种方法是检测我们的样本数据或特征中的任何异常值。如果不符合分析要求,或者可能会歪曲结果,我们也可能会完全去除该特征。

Creating(创建新特征)

我们可能根据现有的特征或一组特征创建新特征,并使新特征遵循相关性,转换性和完整性目标。

Charting(特征可视化展示)

如何根据数据的性质和解决目标选择正确的可视化图表。

实战过程

获取数据

可以从数据库中获取数据,可以从文件中获取数据,可以从网络的url来获取数据。获取到原始数后,就可以进行后续的操作了。

通过数据描述来分析数据

可以通过python的panda包来对数据进行分析,主要进行一下一些分析:

  • 查看数据集中有哪些特征
    这一步主要了解给你的数据集中有哪些维度(属性列),了解每个维度的业务意义。

  • 查看数据集中哪些特征是类别(枚举值)特征
    类别特征一般是离散的枚举数值或文字,比如,性别:男,女;等级:高,中,低。
    顺序特征也分几种,一种是与顺序无关的,比如:男,女;一种是与顺序有关的,比如,等级:高中低。

  • 查看哪些特征是数值类型的特征
    数值特征是以离散,连续或时间序列为基础的值。

  • 混合类型的特征
    数字和字母混合类型。

  • 哪些特征值有错误
    这些特征的特征值中包含一些错误,包括拼写错误。

  • 哪些特征可能包含空白值,null或空值

  • 有哪些数据类型的特征
    比如:有些数据集有整数,小数,字符串,日期等等。

  • 样本中数值特征的分布情况如何?
    这有助于我们尽可能早的洞见数据,实际问题领域的培训数据集的代表性如何?
    若是使用panda,可以通过describe()函数可以查看该信息。这一步需要计算数据的:平均值,最大值,最小值,众数,标准差值,方差值等。可以看出,哪些值有重复,哪些值没有重复等等。

  • 哪些是类别特征?

基于数据分析的假设

根据以上的数据分析,我们就可以对数据和相关的任务进行一些假设。比如:那些变量可能和目标值相关性大,哪些变量的分布可能影响目标值。等等。
以下举例说明:

根据结果目标,我们提出以下假设:
我们根据迄今为止的数据分析得出以下假设。我们可以在采取适当行动之前进一步验证这些假设。

Correlating(关联性的假设)

我们想知道每个特征与目标特征(Survived)相关的程度。我们希望在项目的早期做到这一点,并将这些快速相关性与项目后期的模型相关性进行匹配。

Completing(数据的完善)

  • 1.我们可能希望完善Aage特征,因为它与Survived绝对相关。但Age特征有缺失,通过信息可以看出,它的数量是714。
  • 2.我还需要完善Embarked特征,它和目标特征有很大联系,并且可能影响其他特征。

Correcting(纠正数据的错误)

  • 1.Ticket 特征可能会从我们的分析中删除,因为它包含高比例的重复(22%),而且机票和生存之间可能没有相关性。
  • 2.Cabin 特征, 可能被删除,因为它是高度不完整的或在训练和测试数据集中包含许多空值。
  • 3.PassengerId可能会从训练数据集中删除,它与Survived没有关系。
  • 4.Name属性:是比较不规范的,可能不直接对生存有贡献,所以可能会被丢弃。

Creating(创建新的特征)

  • 1.我们可能想要创建一个名为“基于Parch”和“SibSp”的特征,以获得家庭成员的总数。
  • 2.我们可能需要处理Name特征,将标题(Title)提取为新特征。
  • 3.我们可能为年龄段创建一个新特征,它将一个连续的数值特征,变成离散的类别特征。
  • 4.如果对我们的分析有帮助,我们可能需要创建一个Fare范围的新特征。

Classifying(归类)

我们还可以根据前面提到的问题描述,增加我们的假设:
-1.女性(Sex=female)更有可能幸存下来。
-2.儿童(Age

进一步分析数据来验证假设

通过pivoting 特征来分析数据

为了验证我们的假设,我们可以通过pivoting 特征矩阵来进行验证。
在这个阶段,我们只能针对没有任何空值的特征做到这一点。或者在分类特征,无序的:如Sex属性,有序的如:PClass字段或离散的。来验证我们的假设。

通过可视化分析来验证假设的正确性

通过图形的方式来直观的分析和验证我们的假设。

数字特征的和目标的相关性

顺序数值特征的和目标的相关性

类别特征和目标的相关性

类别特征和数值特征的相关性

好了,到了这里我们基本上已经明确我们的数据需要进行那些处理:
* 那些维度需要转换
* 哪些维度需要进行数据清洗
* 哪些维度需要删除
* 哪些维度需要转换
* 还需要创建哪些新的维度,可以通过哪些维度来进行构建
* 选择哪种模型进行训练会效果比较好

数据预处理

但我们的数据探索已经进行得差不多的时候,我们就可以对数据进行预处理了。

模型选择和训练

剩下的就按照每种模型的训练方法来进行训练,就是比较规范的步骤了。

总结:数据探索的过程需要数据分析师对业务比较了解,才能根据经验来查看数据之间的关系,数据的分布好坏,维度和目标的相关性程度等等。

原创粉丝点击