决策树入门
本笔记根据此视频完成
在学习决策树之前,我们要先了解一些基本概念:
- 什么是分类问题
- 训练集和测试集
- 评估指标
逻辑回归入门
逻辑回归是用来解决二分类问题的。
什么是分类问题?几个例子:

那什么是二分类问题呢,其实就是分类问题的目标列只有两种情况:

回归和分类的区别
- 回归模型的输出是连续的
- 分类模型的输出是离散的
举个例子:


逻辑回归
上面我们已经说到过了,逻辑回归是用来解决二分类问题的。
那么逻辑回归究竟是什么呢?
1 | 逻辑回归 = 线性回归+sigmoid函数 |
我们先来简单回顾一下线性回归。
线性回归就是用一条直线来拟合自变量和因变量之间的关系

那我们如何把回归变成分类呢?

那sigmoid函数又是什么呢?sigmoid函数其实就是在回归问题中通过某种转换方式转换成分类问题的函数

那sigmoid函数又是怎么其作用的呢,下面简单分析一下:

综上,逻辑回归的公式是这样子的:
-
逻辑回归 = 线性回归 + sigmod函数
-
线性回归:z = w*x + b
-
Sigmod函数:
-
逻辑回归:将线性回归中的z = w*x + b带入到Sigmod函数,结果为:
那怎样才能求解出好的参数呢?
这就需要逻辑回归损失函数了:
- 损失函数是体现“预测值”和“实际值”相似程度的函数
- 损失函数越小,模型越好
当然求解不需要手算,代码可以搞定
在机器学习中逻辑回归很重要!
训练集和测试集
这里我们介绍一下3种数据集:训练集、验证集、测试集。
同时还会介绍如何更合理的讲数据划分为3种数据集。最后给大家介绍一种充分利用有限数据的方式:交叉验证法。
先用一个不恰当的比喻来说明3种数据集之间的关系:
- 训练集相当于上课学知识
- 验证集相当于课后的的练习题,用来纠正和强化学到的知识
- 测试集相当于期末考试,用来最终评估学习效果

什么是训练集?
训练集(Training Dataset)是用来训练模型使用的。
在机器学习的7个步骤中,训练集(Training Dataset)主要在训练阶段使用

什么是验证集?
当我们的模型训练好之后,我们并不知道他的表现如何。这个时候就可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。同时通过调整超参数,让模型处于最好的状态。

验证集有2个主要的作用:
- 评估模型效果,为了调整超参数而服务
- 调整超参数,使得模型在验证集上的效果最好
说明:
- 验证集不像训练集和测试集,它是非必需的。如果不需要调整超参数,就可以不使用验证集,直接用测试集来评估效果。
- 验证集评估出来的效果并非模型的最终效果,主要是用来调整超参数的,模型最终效果以测试集的评估结果为准。
什么是测试集?
当我们调好超参数后,就要开始“最终考试”了。我们通过测试集(Test Dataset)来做最终的评估。

通过测试集的评估,我们会得到一些最终的评估指标,例如:准确率、精确率、召回率、F1等
(扩展阅读:《分类模型评估指标 — — 准确率、精准率、召回率、F1、ROC曲线、AUC曲线》)
评价二分类模型的好坏
分类模型评估指标——准确率、精准率、召回率、F1、ROC曲线、AUC曲线
机器学习模型需要有量化的评估指标来评估哪些模型的效果更好。
这里我们用通俗易懂的方式讲解分类问题的混淆矩阵和各种评估指标的计算公式。将要给大家介绍的评估指标有:准确率、精准率、召回率、F1、ROC曲线、AUC曲线。
机器学习有很多评估的指标。有了这些指标我们就横向的比较哪些模型的表现更好。我们先从整体上来看看主流的评估指标都有哪些:

分类问题评估指标:
- 准确率:Accuracy
- 精确率(差准率):Precision
- 召回率(查全率):Recall
- F1分数
- ROC曲线
- AUC曲线
回归问题评估指标:
- MAE
- MSE
要评价二分类模型的好坏,混淆矩阵是必须要知道的。
举个例子:
我们有10张照片,5张男性、5张女性。
有一个判断性别的机器学习模型,当我们使用它来判断「是否为男性」时,会出现4种情况:
- 实际为男性,且判断为男性(正确)
- 实际为男性,但判断为女性(错误)
- 实际为女性,且判断为女性(正确)
- 实际为女性,但判断为男性(错误)
这4种情况就构成了经典的混淆矩阵:

- TP(True Positive):实际为男性,且判断为男性(正确)
- FN(False Negative):实际为男性,但判断为女性(错误)
- TN(True Negative):实际为女性,且判断为女性(正确)
- FP(False Positive):实际为女性,但判断为男性(错误)
这4个名词初看起来比较晕(尤其是缩写),但是当我们把英文拆分时就很容易理解了,如下图:

下面详细介绍一下分类分为种的各种评估指标详情和计算公式
准确率 – Accuracy
准确率:预测正确的结果占总样本的百分比
公式:准确率 =(TP+TN)/(TP+TN+FP+FN)

注意:虽然准确率可以判断总的正确率,但是在样本不平衡 的情况下,并不能作为很好的指标来衡量结果。举个简单的例子,比如在一个总样本中,正样本占 90%,负样本占 10%,样本是严重不平衡的。对于这种情况,我们只需要将全部样本预测为正样本即可得到 90% 的高准确率,但实际上我们并没有很用心的分类,只是随便无脑一分而已。这就说明了:由于样本不平衡的问题,导致了得到的高准确率结果含有很大的水分。即如果样本不平衡,准确率就会失效。
精确率(差准率)- Precision
精确率:所有被预测为正的样本中实际为正的样本的概率
公式:精准率 =TP/(TP+FP)

精准率和准确率看上去有些类似,但是完全不同的两个概念。精准率代表对正样本结果中的预测准确程度,而准确率则代表整体的预测准确程度,既包括正样本,也包括负样本。
召回率(查全率)- Recall
召回率:实际为正的样本中被预测为正样本的概率
公式:召回率=TP/(TP+FN)

召回率的应用场景: 比如拿网贷违约率为例,相对好用户,我们更关心坏用户,不能错放过任何一个坏用户。因为如果我们过多的将坏用户当成好用户,这样后续可能发生的违约金额会远超过好用户偿还的借贷利息金额,造成严重偿失。召回率越高,代表实际坏用户被预测出来的概率越高,它的含义类似:宁可错杀一千,绝不放过一个。
F1分数
F1分数就是为了让一个评价指标里,既能体现查准率,又能体现召回率而编的。
如果我们把精确率(Precision)和召回率(Recall)之间的关系用图来表达,就是下面的PR曲线:

可以发现他们俩的关系是“两难全”的关系。为了综合两者的表现,在两者之间找一个平衡点,就出现了一个 F1分数。
F1=(2×Precision×Recall)/(Precision+Recall)

初识决策树
什么是决策树?
决策树是一种解决分类问题的算法
决策树算法采用树形结构,使用层层推理来实现最终的分类。决策树由下面几种元素构成:
- 根节点:包含样本的全集
- 内部节点:对应特征属性测试
- 叶节点:代表决策的结果

预测时,在树的内部节点处用某一属性值进行判断,根据判断结果决定进入哪个分支节点,直到到达叶节点处,得到分类结果。
这是一种基于 if-then-else 规则的有监督学习算法,决策树的这些规则通过训练得到,而不是人工制定的。
决策树是最简单的机器学习算法,它易于实现,可解释性强,完全符合人类的直观思维,有着广泛的应用。
举个例子:
银行要用机器学习算法来确定是否给客户发放贷款,为此需要考察客户的年收入,是否有房产这两个指标。
首先判断客户的年收入指标。如果大于20万,可以贷款;否则继续判断。然后判断客户是否有房产。如果有房产,可以贷款;否则不能贷款。
这个例子的决策树如下图所示:
决策树学习的 3 个步骤

- 特征选择:特征选择决定了使用哪些特征来做判断。在训练数据集中,每个样本的属性可能有很多个,不同属性的作用有大有小。因而特征选择的作用就是筛选出跟分类结果相关性较高的特征,也就是分类能力较强的特征。在特征选择中通常使用的准则是:信息增益
- 决策树生成:选择好特征后,就从根节点触发,对节点计算所有特征的信息增益,选择信息增益最大的特征作为节点特征,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以选择为止。
- 决策树剪枝:剪枝的主要目的是对抗“过拟合”,通过主动去掉部分分支来降低过拟合的风险。
属性选择时用什么度量
上面我们了解了决策树学习的三个步骤,那么其中的特征选择(属性选择)该用什么度量呢?

选择属性时我们一般用熵和基尼系数来度量

基尼系数越小,纯度越高,越容易区分(基尼系数越小越好)
3 种典型的决策树算法

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






