【Kaggle从入门到放弃】(04):机器学习框架

第一章 概述

机器学习的五个核心步骤:算法

步骤一:探索性分析

       首先,“了解”数据。这一步应该快速,有效和果断。网络

步骤二:数据清理

       而后,清理数据,以免许多常见的陷阱。更好的数据优于更高级的算法。dom

步骤三:特征工程

接下来,经过设计新特征,帮助你的算法“专一”重要事项。机器学习

步骤四:算法选择

       为你要解决的问题,选择合适的算法。工具

步骤五:训练模型

       最后,训练你的模型。性能

请记住:“更好的数据优于更高级的算法”。专业的数据科学家将大部分时间花在了解数据,清理数据和设计新特征上。也就是前三个核心步骤十分关键!

第二章 探索性分析

工具:数据可视化、统计学分析。学习

目的:了解咱们的数据集测试

数据分为数值型和类目型两种。数值型数据好比船票的价格,年龄等。类目型数据好比性别,登船点等。优化

1 数值型数据可视化:直方图

2 类目型数据可视化:条形图

研究相关性spa

相关性容许您查看数字要素与其余数字要素之间的关系。

相关性是介于-1和1之间的值,表示两个要素一致移动的程度。您无需记住数学计算它们。只要知道如下直觉:正相关意味着当一个特征增长时,另外一个特征增长。例如孩子的年龄和身高。负相关意味着当一个特征增长时,另外一个特征减小。例如,学习的时间和参加的人数。-1或1附近的相关性代表关系密切。

接近0的人表示关系薄弱。0表示没有关系。

3 热图:帮助您可视化此信息。

第三章 数据清理

数据清理的常见步骤:修复结构错误、缺省数据的处理和过滤特征。

更好的数据优于更高级的算法。数据清理是每一个人都作的事情,但少有人真正谈论过。正确的数据清理可能会影响您的项目。专业数据科学家一般将大部分时间花在这一步上。事实上,若是您有一个正确清理的数据集,即便是简单的算法也能够从数据中得到使人印象深入的看法!

1 删除不须要的数据

数据清理的第一步是从数据集中删除不须要的数据。这包括重复或不相关的数据。在数据收集过程当中最常出现重复数据,例如:合并来自多个地方的数据集

和从客户/其余部门接收数据。

不相关的观察结果是那些实际上不符合试图解决的具体问题的数据。例如,若是您只为单户住宅建造模型,那么您不但愿在那里观察公寓。这也是从探索性分析中查看图表的好时机。您能够查看分类功能的分布图,以查看是否存在不该存在的任何类。在特征工程以前检查不相关的观察能够为您节省许多麻烦。

2 修复结构错误

结构偏差是在测量,数据传输或其余类型的“错误管理”期间出现的结构偏差。

例如,您能够检查拼写错误或不一致的大小写。这主要是对分类功能的关注,您能够查看您的条形图以进行检查。

3 过滤不须要的异常值

异常值可能会致使某些类型的模型出现问题。例如,线性回归模型对异常值的鲁棒性低于决策树模型。

一般,若是您有合理的理由删除异常值,它将有助于您的模型的性能。

然而,在被证实有罪以前,异常值是无辜的。你永远不该该由于它是一个“大数字”而删除异常值。这个大数字能够为您的模型提供很是丰富的信息。

4 缺省数据的处理

在应用机器学习中,数据缺值是一个棘手的问题。

首先,不能简单地忽略数据集中的缺失值。由于大多数算法不接受缺失值,您必须以某种方式处理它们。

数据缺值的事实自己可能提供信息,应该告诉您的算法是否缺乏值。好比泰坦尼克中一我的缺值太多,很大几率他在灾难中没有存活下来。另外,在现实世界中,即便缺乏某些功能,您也常常须要对新数据进行预测!

类目型数据缺值:将它们标记为“丢失”!其实是为该功能添加了一个新类。这告诉算法该值丢失了。

数值型数据缺值:标记并填充值。用缺失指标变量标记观察结果。而后,用0填充原始缺失值,以知足完好失值的技术要求。经过使用这种标记和填充技术,您基本上容许算法估计缺失的最佳常量,而不是仅用均值填充它。

一个特征只有不多的缺失值时,能够考虑用统计方法填充,均值,中位数均可以。

缺省数据的处理方法不少,慢慢摸索和总结经验。

第四章 特征工程

请记住,在五个核心步骤中,数据科学家一般将大部分时间花在特征工程上。

 

探索性分析

数据清理

特征工程

选择算法

训练模型

其它

时间占比

10

20

25

10

15

20

1 什么是特征工程

特征工程是关于从现有的输入特征建立新的输入特征。

一般,您能够将数据清理视为减法,将特征工程做为加法。

这一般是数据科学家为提升模型性能而能够作的最有价值的任务之一,缘由有三个:

A 您能够突出显示关键信息,这有助于您的算法“专一”重要事项。

B 您能够引入本身的领域专业知识。

C 最重要的是,一旦你理解了特征工程的“词汇”,就能够引入其余人的领域专业知识!

好消息是,随着您得到更多经验,这项技能将天然获得改善。

1 引入专业领域知识

一般能够经过利用您(或其余人)关于该领域的专业知识来设计新的特征。

“专业领域知识”是很是普遍和开放的。在某些时候,你会陷入困境或用尽你的想法。

2 建立交互特征

检查您是否能够建立任何有意义的交互特征。即把两个或更多输入特征组合起来建立一个新的有意义的特征!组合方式能够是两个特征之间的乘积,求和或者做差等数学组合。

查看每对特征并问本身,“我能以任何可能更有用的方式组合这些信息吗?”

示例:假设咱们已经有一个名为'num_schools'的功能,即距离酒店5英里范围内的学校数量。假设咱们也有'median_school'这个功能,即这些学校的中位数质量得分。可是,咱们可能会怀疑,真正重要的是  拥有许多学校选择,但前提是它们是好的。那么咱们能够简单的建立一个新的功能  “school_score”  =  “num_schools”  *  “median_school”!新的有意义的输入特征建立成功!

3 组合稀疏类

稀疏类(在分类特征中)是具备很是少的数量的类。它们对于某些机器学习算法多是有问题的,致使模型过分拟合。

没有关于每一个类须要多少数量的正式规则。它还取决于数据集的大小和您拥有的其余特征的数量。根据经验,咱们建议组合类,直到每一个类至少有50个数量。与任何“经验法则”同样,使用此做为指导(实际上不做为规则)。

咱们能够将多个类似的稀疏类组合成一个单独的大类(大类的数量超过50个)。也能够将剩余的稀疏类归类为“其余”类,即便已经存在“其余”类。在组合稀疏类以后,咱们有更少的类别,但每一个类都有更多的数量。

一般,观察条形图足以决定是否要将某些类组合在一块儿。

4 添加虚拟变量Dummy Variables

大多数机器学习算法不能直接处理类目型特征。具体来讲,他们没法处理文本值。所以,咱们须要为类目型特征建立dummy 变量。虚拟变量是一组二进制(0或1)变量,每一个变量表明一个类目型特征中的单个类。

示例:性别中男女。咱们能够映射一下,“男性”变成0,“女性”变成1。

5 删除不须要的特征

最后,从数据集中删除未使用或冗余的特征。

未使用的特征是那些没法传递到咱们的机器学习算法中的特征。包括:ID列、预测时没法使用的特征、其余文字说明等

冗余特征一般是那些已被特征工程中添加的其余特征所取代的特征。

第五章 选择算法

吴恩达的课程《机器学习》上提到的机器学习算法,以下。

监督学习算法:线性回归、逻辑回归、神经网络、支持向量机

无监督学习算法:聚类、降维、异常检测

特殊算法:推荐算法

在实践中,现代机器学习算法有力的两个工具:正则化和ensembles

使用正则化技术来防止过拟合问题,吴恩达详细讲过。有关ensembles集成学习的理论和技术细节之后再说。

咱们一般在选择机器学习模型的过程当中使用如下算法:

分类问题:Random Forest、GBM、Logistic Regression、Naive Bayes、Support Vector Machines、k-Nearest Neighbors

回归问题:Random Forest、GBM、Linear Regression、Ridge、Lasso、SVR

我应该优化哪些参数?如何选择最接近最佳参数的参数?这些是人们在大多数时间提出的几个问题。

模型调参的经验,是指导不是法则!

第六章 训练模型

如何设置整个建模过程以最大限度地提升性能,同时防止过拟合

1 拆分数据集

您能够花一些时间来训练您的模型(即将数据喂给算法)。也能够花一些时间来评估(测试)模型。可是你不能为二者重复使用相同的数据!因此拆分数据集为两部分:训练集和测试集。

训练集用于训练和调整模型(交叉验证技术用来调整模型)。

测试集被放在一边做为“看不见的”数据来评估您的模型。

比较测试集与训练集的性能使咱们可以避免过分拟合。若是模型在训练集上表现很好但在测试集上表现不佳,那么表示模型过分拟合了。

2 交叉验证技术

       咱们使用交叉验证技术来调整模型参数。

交叉验证是一种仅使用您的训练数据得到模型性能可靠估计的方法。交叉验证技术有好几种。最多见的是10倍交叉验证(10-fold cross-validation),将训练集分红10个相等的部分,基本上能够建立10个训练集和交叉验证集的分割。

10倍交叉验证的步骤:

  1. 将数据拆分为10个相等的部分,一共10个fold。
  2. 用9个fold训练你的模型(例如前9个fold)。
  3. 用剩下的1个fold评估模型。
  4. 执行前两个步骤(2)和(3)10次,每次都使用不一样的fold来评估模型。
  5. 将10次获得的模型评估分数求平均

将10次获得的模型评估分数求平均做为最终的模型表现估计,也称为交叉验证得分。如何调整模型的参数?对于每种算法(即逻辑回归,随机森林等),对于要尝试的每组模型参数值,使用训练集执行交叉验证技术,计算交叉验证得分。选择具备最高得分的那组参数值。

       如今咱们仅仅经过训练集和交叉验证技术,每种算法都能获得1个“最佳”模型!而后使用测试集在其中选出最佳性能的模型。

3 用测试集选出最佳性能的模型

由于您已将测试集保存为真正看不见的数据集,因此如今可使用它来得到每一个模型性能的可靠估计。

能够选择各类性能指标。对于回归任务,建议使用均方偏差(MSE)或平均绝对偏差(MAE)。(值越低越好)对于分类任务,咱们建议使用ROC曲线下面积(AUROC)。(值越高越好)

这个过程很是简单:对于每一个模型,请对测试集进行预测。使用这些预测和测试集中的“基础事实”目标变量计算性能指标。

最后,使用这些问题来帮助您选择获胜的模型:

  1. 哪一个模型在测试集上表现最佳?(性能指标)
  2. 它在各类性能指标中表现良好吗?(鲁棒性)
  3. 它是否也具备(训练集)中最佳的交叉验证分数(其中之一)?(一致性)
  4. 它是否解决了原有的业务问题?(胜利条件)