一、特征工程

特征工程是机器学习工作流程中重要的组成部分,他是将原始数据「翻译」成模型可理解的形式。
1.重要性
基于大量数据的简单模型优于基于少量数据的复杂模型
更多的数据优于聪明的算法,而好的数据优于多的数据。

2.是什么
特征工程是一个过程,这个过程将数据转换为能更好的表示业务逻辑的特征,从而提高机器学习的性能。
image.png
特征工程处在原始数据和特征之间。他的任务就是将原始数据「翻译」成特征的过程
(特征:是原始数据的数值表达方式,是机器学习算法模型可以直接使用的表达方式。)

image.png
食材就好像原始数据
清洗、切菜、烹饪的过程就好像特征工程
最后做出来的美味饭菜就是特征

原始数据不能直接交给机器学习,需要对数据进行清洗、组织、转换。最后才能得到模型可以消化的特征。

重点1:更好的表示业务逻辑
特征工程可以说是业务逻辑的一种数学表达。
我们使用机器学习的目的是为了解决业务中的特定问题。相同的原始数据有很多种转换为特征的方式,我们需要选择那些能够「更好的表示业务逻辑」,从而更好的解决问题。而不是那些更简单的方法。
重点2:提高机器学习性能
性能意味着更短时间和更低成本,哪怕相同的模型,也会因为特征工程的不同而性能不同。所以我们需要选择那些可以发挥更好性能的特征工程。

3.评论步骤
①在应用任何特征工程之前,得到机器学习模型的基准性能
②应用一种或多种特征工程
③对于每种特征工程,获取一个性能指标,并与基准性能进行对比
④如果性能的增量大于某个阈值,则认为特征工程是有益的,并在机器学习流水线上应用

二、监督学习

1.是什么——机器学习中的一种训练方式/学习方式

image.png
监督学习需要有明确的目标,很清楚自己想要什么结果。比如:按照“既定规则”来分类、预测某个具体的值…

监督并不是指人站在机器旁边看机器做的对不对,而是下面的流程:
①选择一个适合目标任务的数学模型
②先把一部分已知的“问题和答案”(训练集)给机器去学习
③机器总结出了自己的“方法论”
④人类把”新的问题”(测试集)给机器,让他去解答

image.png

2.监督学习的两个任务——回归、分类

回归:预测连续的、具体的数值。回归的目的是为了预测,比如预测明天的天气温度,预测股票的走势…
回归之所以能预测是因为他通过历史数据,摸透了“套路”,然后通过这个套路来预测未来的结果。
分类:对各种事物分门别类,用于离散型预测。

image.png

回归案例——个人信用评估FICO

步骤1:构建问题,选择模型
我们首先找出个人信用的影响因素,从逻辑上讲一个人的体重跟他的信用应该没有关系,比如我们身边很讲信用的人,有胖子也有瘦子。
而财富总额貌似跟信用有关,因为马云不讲信用的损失是非常巨大的,所以大家从来没有听说马云会不还信用卡!而一个乞丐不讲信用的损失是很小的,这条街混不下去了换一条街继续。
所以根据判断,找出了下面5个影响因素:

  • 付款记录
  • 账户总金额
  • 信用记录跨度(自开户以来的信用记录、特定类型账户开户以来的信用记录…)
  • 新账户(近期开户数目、特定类型账户的开户比例…)
  • 信用类别(各种账户的数目)

构建模型:
image.png
f 可以简单理解为一个特定的公式,这个公式可以将5个因素跟个人信用分形成关联。
我们的目标就是得到 f 这个公式具体是什么,这样我们只要有了一个人的这5种数据,就可以得到一个人的信用分数了。

步骤2:收集已知数据
为了找出这个公式 f,我们需要先收集大量的已知数据,这些数据必须包含一个人的5种数据和他/她的信用状态(把信用状态转化为分数)。
我们把数据分成几个部分,一部分用来训练,一部分用来测试和验证。
image.png
拟合:把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示,根据这个函数的不同有不同的拟合名字。
过拟合:过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

步骤3:训练出理想模型
有了这些数据,我们通过机器学习,就能”猜测”出这5种数据和信用分数的关系。这个关系就是公式 f。
然后我们再用验证数据和测试数据来验证一下这个公式是否 OK。
测试验证的具体方法是:

  1. 将5种数据套入公式,计算出信用分
  2. 用计算出来的信用分跟这个人实际的信用分(预先准备好的)进行比较
  3. 评估公式的准确度,如果问题很大再进行调整优化

步骤4:对新用户进行预测
当我们想知道一个新用户的信用状况时,只需要收集到他的这5种数据,套进公式 f 计算一遍就知道结果了!

分类案例——如何预测离婚

步骤1:构建问题,选择模型
戈特曼提出,对话能反映出夫妻之间潜在的问题,他们在对话中的争吵、欢笑、调侃和情感表露创造了某种情感关联。通过这些对话中的情绪关联可以将夫妻分为不同的类型,代表不同的离婚概率。
步骤2:收集已知数据
研究人员邀请了700对夫妻参与实验。他们单独在一间屋子里相对坐下,然后谈论一个有争论的话题,比如金钱和性,或是与姻亲的关系。默里和戈特曼让每一对夫妻持续谈论这个话题15分钟,并拍摄下这个过程。观察者看完这些视频之后,就根据丈夫和妻子之间的谈话给他们打分。

image.png
步骤3:训练出理想模型
戈特曼的方法并不是用机器学习来得到结果,不过原理都是类似的。他得到的结论如下:
首先,他们将夫妻双方的分数标绘在一个图表上,两条线的交叉点就可以说明婚姻能否长久稳定。如果丈夫或妻子持续得负分,两人很可能会走向离婚。重点在于定量谈话中正负作用的比率。理想中的比率是5∶1,如果低于这个比例,婚姻就遇到问题了。最后,将结果放在一个数学模型上,这个模型用差分方程式凸显出成功婚姻的潜在特点。
image.png

  1. 幸福的夫妻:冷静、亲密、相互扶持、关系友好。他们更喜欢分享经验。
  2. 无效的夫妻:他们尽最大努力避免冲突,只是通过积极回应对方的方式。
  3. 多变的夫妻:他们浪漫而热情,可争论异常激烈。他们时而稳定时而不稳定,可总的来说不怎么幸福。
  4. 敌对的夫妻:一方不想谈论某件事,另一方也同意,所以,两者之间没有交流。
  5. 彼此无感的夫妻:一方兴致勃勃地想要争论一番,可另一方对讨论的话题根本不感兴趣。

该数学模型呈现了两种稳定型夫妻(关系和谐的夫妻和关系不和谐的夫妻)和两种不稳定型夫妻(敌对夫妻和无感夫妻)之间的区别。而据预测,不稳定的夫妻可能会一直保持婚姻关系,尽管他们的婚姻不稳定。
步骤4:对新用户进行预测
12年以来,每隔一两年,默里和戈特曼都会与参与研究的那700对夫妻交流。两个人的公式对离婚率的预测达到了94%的准确率。

3.主流算法

image.png

线性回归

image.png
回归

image.png
什么是线性?
“越…,越…”符合这种说法的就可能是线性个关系:
「房子」越大,「租金」就越高
「汉堡」买的越多,花的「钱」就越多
杯子里的「水」越多,「重量」就越大
……
但是并非所有“越…,越…”都是线性的,比如“充电越久,电量越高”,他就类似下面的非线性曲线:
image.png
注:直接坐标系中,线性是直线,其中垂直于x轴的直线是非线性的
线性关系不仅仅只能存在 2 个变量(二维平面)。3 个变量时(三维空间),线性关系就是一个平面,4 个变量时(四维空间),线性关系就是一个体。以此类推…

image.png
什么是线性回归?
线性回归本来是是统计学里的概念,现在经常被用在机器学习中。
如果 2 个或者多个变量之间存在“线性关系”,那么我们就可以通过历史数据,摸清变量之间的“套路”,建立一个有效的模型,来预测未来的变量结果。
image.png
注:线性关系
image.png
优点:

  1. 建模速度快,不需要很复杂的计算,在数据量大的情况下依然运行速度很快。
  2. 可以根据系数给出每个变量的理解和解释

缺点:不能很好地拟合非线性数据。所以需要先判断变量之间是否是线性关系。

逻辑回归
logistic回归是一种广义线性回归(generalized linear model),因此与多重线性回归分析有很多相同之处。它们的模型形式基本上相同,都具有 w‘x+b,其中w和b是待求参数,其区别在于他们的因变量不同,多重线性回归直接将w‘x+b作为因变量,即y =w‘x+b,而logistic回归则通过函数L将w‘x+b对应一个隐状态p,p =L(w‘x+b),然后根据p 与1-p的大小决定因变量的值。如果L是logistic函数,就是logistic回归,如果L是多项式函数就是多项式回归。
logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释,多类可以使用softmax方法进行处理。实际中最为常用的就是二分类的logistic回归
image.png

决策树(分类问题)

决策树是一种逻辑简单的机器学习算法,它是一种树形结构,所以叫决策树。
决策树算法采用树形结构,使用层层推理来实现最终的分类。决策树由下面几种元素构成:
根节点:包含样本的全集
内部节点:对应特征属性测试
叶节点:代表决策的结果

image.png
预测时,在树的内部节点处用某一属性值进行判断,根据判断结果决定进入哪个分支节点,直到到达叶节点处,得到分类结果。
“ if-then-else ”的逻辑规则

举例:银行借款,判断用户收入
image.png
决策树学习的三个步骤:
image.png
特征选择
特征选择决定了使用哪些特征来做判断。在训练数据集中,每个样本的属性可能有很多个,不同属性的作用有大有小。因而特征选择的作用就是筛选出跟分类结果相关性较高的特征,也就是分类能力较强的特征。
在特征选择中通常使用的准则是:信息增益。
决策树生成
选择好特征后,就从根节点触发,对节点计算所有特征的信息增益,选择信息增益最大的特征作为节点特征,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以选择为止。
决策树剪枝
剪枝的主要目的是对抗「过拟合」,通过主动去掉部分分支来降低过拟合的风险。

三种决策树算法
ID3 算法
ID3 是最早提出的决策树算法,他就是利用信息增益来选择特征的。
C4.5 算法
他是 ID3 的改进版,他不是直接使用信息增益,而是引入“信息增益比”指标作为特征的选择依据。
CART(Classification and Regression Tree)
这种算法即可以用于分类,也可以用于回归问题。CART 算法使用了基尼系数取代了信息熵模型。

优点

  • 决策树易于理解和解释,可以可视化分析,容易提取出规则;
  • 可以同时处理标称型和数值型数据;
  • 比较适合处理有缺失属性的样本;
  • 能够处理不相关的特征;
  • 测试数据集时,运行速度比较快;
  • 在相对短的时间内能够对大型数据源做出可行且效果良好的结果。

缺点

  • 容易发生过拟合(随机森林可以很大程度上减少过拟合);
  • 容易忽略数据集中属性的相互关联;
  • 对于那些各类别样本数量不一致的数据,在决策树中,进行属性划分时,不同的判定准则会带来不同的属性选择倾向;信息增益准则对可取数目较多的属性有所偏好(典型代表ID3算法),而增益率准则(CART)则对可取数目较少的属性有所偏好,但CART进行属性划分时候不再简单地直接利用增益率尽心划分,而是采用一种启发式规则)(只要是使用了信息增益,都有这个缺点,如RF)。
  • ID3算法计算信息增益时结果偏向数值比较多的特征。

随机森林

随机森林是由很多决策树构成的,不同决策树之间没有关联。
当我们进行分类任务时,新的输入样本进入,就让森林中的每一棵决策树分别进行判断和分类,每个决策树会得到一个自己的分类结果,决策树的分类结果中哪一个分类最多,那么随机森林就会把这个结果当做最终的结果。
image.png

构造随机森林的四个步骤

  1. 一个样本容量为N的样本,有放回的抽取N次,每次抽取1个,最终形成了N个样本。这选择好了的N个样本用来训练一个决策树,作为决策树根节点处的样本。
  2. 当每个样本有M个属性时,在决策树的每个节点需要分裂时,随机从这M个属性中选取出m个属性,满足条件m << M。然后从这m个属性中采用某种策略(比如说信息增益)来选择1个属性作为该节点的分裂属性。
  3. 决策树形成过程中每个节点都要按照步骤2来分裂(很容易理解,如果下一次该节点选出来的那一个属性是刚刚其父节点分裂时用过的属性,则该节点已经达到了叶子节点,无须继续分裂了)。一直到不能够再分裂为止。注意整个决策树形成过程中没有进行剪枝。
  4. 按照步骤1~3建立大量的决策树,这样就构成了随机森林了。

image.png

优点

  1. 它可以出来很高维度(特征很多)的数据,并且不用降维,无需做特征选择
  2. 它可以判断特征的重要程度
  3. 可以判断出不同特征之间的相互影响
  4. 不容易过拟合
  5. 训练速度比较快,容易做成并行方法
  6. 实现起来比较简单
  7. 对于不平衡的数据集来说,它可以平衡误差。
  8. 如果有很大一部分的特征遗失,仍可以维持准确度。

缺点

  1. 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。
  2. 对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的

随机森林可以在很多地方使用:

  1. 对离散值的分类
  2. 对连续值的回归
  3. 无监督学习聚类
  4. 异常点检测

image.png

SVM 支持向量机

超平面是分割输入变量空间的线。在SVM中,选择超平面以最佳地将输入变量空间中的点与它们的类(0级或1级)分开。在二维中,您可以将其视为一条线,并假设我们的所有输入点都可以被这条线完全分开。SVM学习算法找到导致超平面最好地分离类的系数。

超平面与最近数据点之间的距离称为边距。可以将两个类分开的最佳或最佳超平面是具有最大边距的线。只有这些点与定义超平面和分类器的构造有关。这些点称为支持向量。它们支持或定义超平面。实际上,优化算法用于找到使裕度最大化的系数的值。

支持向量机的基础概念可以通过一个简单的例子来解释。让我们想象两个类别:红色和蓝色,我们的数据有两个特征:x 和 y。我们想要一个分类器,给定一对(x,y)坐标,输出仅限于红色或蓝色。我们将已标记的训练数据列在下图中:
image.png
支持向量机会接受这些数据点,并输出一个超平面(在二维的图中,就是一条线)以将两类分割开来。这条线就是判定边界:将红色和蓝色分割开。
image.png

但是,最好的超平面是什么样的?对于 SVM 来说,它是最大化两个类别边距的那种方式,换句话说:超平面(在本例中是一条线)对每个类别最近的元素距离最远。

image.png
优点

  • 可以解决高维问题,即大型特征空间;
  • 解决小样本下机器学习问题;
  • 能够处理非线性特征的相互作用;
  • 无局部极小值问题;(相对于神经网络等算法)
  • 无需依赖整个数据;
  • 泛化能力比较强;

缺点

  • 当观测样本很多时,效率并不是很高;
  • 对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数;
  • 对于核函数的高维映射解释力不强,尤其是径向基函数;
  • 常规SVM只支持二分类;
  • 对缺失数据敏感;

朴素贝叶斯

朴素贝叶斯是一种简单的预测建模算法。
该模型由两种类型的概率组成,可以直接根据训练数据计算:

  1. 每个班级?的概率
  2. 给出每个x值的每个类的条件概率。

一旦计算,概率模型可用于使用贝叶斯定理对新数据进行预测。当您的数据是实值时,通常假设高斯分布(钟形曲线),以便您可以轻松估计这些概率。

优点:

  • 朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。
  • 对大数量训练和查询时具有较高的速度。即使使用超大规模的训练集,针对每个项目通常也只会有相对较少的特征数,并且对项目的训练和分类也仅仅是特征概率的数学运算而已;
  • 对小规模的数据表现很好,能个处理多分类任务,适合增量式训练(即可以实时的对新增的样本进行训练);
  • 对缺失数据不太敏感,算法也比较简单,常用于文本分类;
  • 朴素贝叶斯对结果解释容易理解。

缺点:

  • 需要计算先验概率;
  • 分类决策存在错误率;
  • 对输入数据的表达形式很敏感;
  • 由于使用了样本属性独立性的假设,所以如果样本属性有关联时其效果不好。

    三、无监督学习

    1.是什么

    image.png
    下面通过跟监督学习的对比来理解无监督学习:
  1. 监督学习是一种目的明确的训练方式,你知道得到的是什么;而无监督学习则是没有明确目的的训练方式,你无法提前知道结果是什么
  2. 监督学习需要给数据打标签;而无监督学习不需要给数据打标签
  3. 监督学习由于目标明确,所以可以衡量效果;而无监督学习几乎无法量化效果如何

image.png
无监督学习是一种机器学习的训练方式,它本质上是一个统计手段,在没有标签的数据里可以发现潜在的一些结构的一种训练方式。
它主要具备3个特点:

  1. 无监督学习没有明确的目的
  2. 无监督学习不需要给数据打标签
  3. 无监督学习无法量化效果

具体举例:
image.png
案例1:发现异常
有很多违法行为都需要”洗钱”,这些洗钱行为跟普通用户的行为是不一样的,到底哪里不一样?
如果通过人为去分析是一件成本很高很复杂的事情,我们可以通过这些行为的特征对用户进行分类,就更容易找到那些行为异常的用户,然后再深入分析他们的行为到底哪里不一样,是否属于违法洗钱的范畴。
通过无监督学习,我们可以快速把行为进行分类,虽然我们不知道这些分类意味着什么,但是通过这种分类,可以快速排出正常的用户,更有针对性的对异常行为进行深入分析。

image.png

案例2:用户细分
这个对于广告平台很有意义,我们不仅把用户按照性别、年龄、地理位置等维度进行用户细分,还可以通过用户行为对用户进行分类。
通过很多维度的用户细分,广告投放可以更有针对性,效果也会更好。
image.png

案例3:推荐系统
大家都听过”啤酒+尿不湿”的故事,这个故事就是根据用户的购买行为来推荐相关的商品的一个例子。
比如大家在淘宝、天猫、京东上逛的时候,总会根据你的浏览行为推荐一些相关的商品,有些商品就是无监督学习通过聚类来推荐出来的。系统会发现一些购买行为相似的用户,推荐这类用户最”喜欢”的商品。

2.常见的2类算法是:聚类、降维

image.png
聚类:简单说就是一种自动分类的方法,在监督学习中,你很清楚每一个分类是什么,但是聚类则不是,你并不清楚聚类后的几个分类每个代表什么意思。
降维:降维看上去很像压缩。这是为了在尽可能保存相关的结构的同时降低数据的复杂度。

「聚类算法」K均值聚类

K均值聚类就是制定分组的数量为K,自动进行分组。
K 均值聚类的步骤如下:

  1. 定义 K 个重心。一开始这些重心是随机的(也有一些更加有效的用于初始化重心的算法)
  2. 寻找最近的重心并且更新聚类分配。将每个数据点都分配给这 K 个聚类中的一个。每个数据点都被分配给离它们最近的重心的聚类。这里的「接近程度」的度量是一个超参数——通常是欧几里得距离(Euclidean distance)。
  3. 将重心移动到它们的聚类的中心。每个聚类的重心的新位置是通过计算该聚类中所有数据点的平均位置得到的。

重复第 2 和 3 步,直到每次迭代时重心的位置不再显著变化(即直到该算法收敛)。
其过程如下面的动图:

机器学习 - 图33

「聚类算法」层次聚类

如果你不知道应该分为几类,那么层次聚类就比较适合了。层次聚类会构建一个多层嵌套的分类,类似一个树状结构。
机器学习 - 图34
层次聚类的步骤如下:

  1. 首先从 N 个聚类开始,每个数据点一个聚类。
  2. 将彼此靠得最近的两个聚类融合为一个。现在你有 N-1 个聚类。
  3. 重新计算这些聚类之间的距离。
  4. 重复第 2 和 3 步,直到你得到包含 N 个数据点的一个聚类。
  5. 选择一个聚类数量,然后在这个树状图中划一条水平线。

「降维算法」主成分分析 – PCA

主成分分析是把多指标转化为少数几个综合指标。
主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。
变换的步骤:

  1. 第一步计算矩阵 X 的样本的协方差矩阵 S(此为不标准PCA,标准PCA计算相关系数矩阵C)
  2. 第二步计算协方差矩阵S(或C)的特征向量 e1,e2,…,eN和特征值 , t = 1,2,…,N
  3. 第三步投影数据到特征向量张成的空间之中。利用下面公式,其中BV值是原样本中对应维度的值。机器学习 - 图35

    「降维算法」奇异值分解 – SVD

    奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解,奇异值分解则是特征分解在任意矩阵上的推广。在信号处理、统计学等领域有重要应用。
    了解更多奇异值分解的信息,可以查看维基百科

生成模型和GAN
无监督学习的最简单目标是训练算法生成自己的数据实例,但是模型不应该简单地重现之前训练的数据,否则就是简单的记忆行为。
它必须是建立一个从数据中的基础类模型。不是生成特定的马或彩虹照片,而是生成马和彩虹的图片集;不是来自特定发言者的特定话语,而是说出话语的一般分布。
生成模型的指导原则是,能够构建一个令人信服的数据示例是理解它的最有力证据。正如物理学家理查德·费曼所说:“我不能创造的东西,我就不能了解”(What I cannot create, I do not understand.)。
对于图像来说,迄今为止最成功的生成模型是生成对抗网络(GAN)。它由两个网络组成:一个生成器和一个鉴别器,分别负责伪造图片和识别真假。

image.png

生成器产生图像的目的是诱使鉴别者相信它们是真实的,同时,鉴别者会因为发现假图片而获得奖励。
GAN开始生成的图像是杂乱的和随机的,在许多次迭代中被细化,形成更加逼真的图像,甚至无法与真实照片区别开来。最近英伟达的GauGAN还能根据用户草图生成图片。