分类算法-classification

26 May 2019

前置概念 - Metric

TP 真阳性; FN 假阴性; FP 假阳性; TN 真阴性

TPR 阳性里边被预测到的比率; TNR 阴性里边被预测到的比率 FPR 假阳率, 把没病的人预测为有病的概率; FNR 假阴率, 把有病的人预测为没病的概率 P 预测为阳性的样本, 真正是阳性的概率; R 阳性样本中被召回,被找到的概率

Receiver Operating Characteristic Curve (ROC)

二分类模型返回一个概率值,通过调整阈值,即大于该阈值为正类,反之负类,可以得到多个 (FPR,TPR)点,描点画图得到的曲线即为ROC曲线
FPR = FP / (FP + TN)
TPR = TP / (TP + FN) 左下角的点, TPR=0,FPR=0, 可以通过把所有样本都认为是负样本得来
右上角的点, TPR=1,FPR=1, 可以通过把所有样本都认为是正样本得来

举个例子, 一个分类问题,用下图简单表示,上面的每个点代表一条样本数据, 红的代表正样本, 蓝的代表负样本, 而中间的直线则是我们训练得到的模型, 调整阀值就是让直线上下偏移, 直线的角度不能改变(角度就是我们训练的模型的权重),每次调整直线的偏移都会改变直线与点之间的距离(模型对数据的分类依据)

下面我们把坐标系转一下, 这样二维的数据就变成一维的数据, 与直线的距离就是样本点在这个模型上的预测值

现在调整阀值问题可以转化为调整直线的上下偏移, 下面的图可以和前面ROC曲线的左下角对应, 把所有样本都预测为负样本, 这个时候TP=0, FP=0, TPR=0,FPR=0

然后直线再继续往下偏移, 这个时候模型的分类效果比较好,TP=9, FP=1, TPR=0.9, FPR=0.1

再继续往下, TP=10, FP=10, TPR=1, FPR=1, 这对应了ROC曲线的的右上角

ROC曲线绘制的思路大致是这样的, 通过调整预测为正样本和负样本的阈值(这里是直线的偏移), 然后通过计算在每个位置的TPR和FPR来获得曲线

** Area Under Curve-(AUC) ** ROC曲线下面积,一般取值范围[0.5,1] AUC越大,分类模型效果越好

下面是一个分类效果很理想的模型, 它可以取到ROC曲线左上角的红点, 即TPR=1,FPR=0


图1

它的ROC图是这样的, 曲线包裹的面积 AUC=1.0

下面这个分类效果就很差, 不论这么移动直线, TPR和FPR基本相等


图2

它的ROC图是这样的, 曲线包裹的面积 AUC=0.5

Accuracy & AUC

只用精度评判模型的时候, 会被分布占多数的样本带偏
AUC可以客观的评判模型在正样本和负样本上表现
举个例子

上面的例子中, Accuracy=0.6, 而TPR = 0.75, FPR=1, AUC = ? 它的auc曲线可以是这样的, AUC可能会小于0.5, 这个模型的预测效果其实很差, 但是通过accuracy却无法体现

分类问题定义

分类算法

KNN(K-Nearest Neighbor)K最近邻

数据挖掘分类技术中最简单的方法之一,所谓K最近邻,就是K个最近的邻居,每个样本都可以用它最接近的K个邻居来代表 俗话说,“物以类聚, 人以群分”, 跟自己最接近的人是什么样的人, 自己也差不多是那类人

怎么定义接近? 通过距离

一个通用的定义

K的意义

上图中 蓝方块和红三角均是已有分类数据, 判断绿色圆块是属于蓝方块或者红三角?
如果K=3:红三角占比2/3,则判断为红三角;
如果K=9:蓝方块占比5/9,则判断为蓝方块。

算法步骤
  1. 计算已知类别数据集中的点与当前之间的距离
  2. 按照距离递增次序排序
  3. 选取与当前点距离最小的k个点
  4. 确定前k个点所在的类别的出现频率
  5. 返回前k个点出现频率最高的类别作为当前点的预测分类

Support Vector Machine(SVM)支持向量机

支持向量机(Support Vector Machine, SVM)的基本模型是在特征空间上找到最佳的分离超平面使得训练集上 正负样本间隔最大 下面的数据在平面上不可分 但是把它变成3维数据之后, 就可以有一个平面把它们分割出来

核函数

公式中x是参数, xi是元数据

因此,在选用核函数的时候,如果我们对我们的数据有一定的先验知识,就利用先验来选择符合数据分布的核函数;如果不知道的话,通常使用交叉验证的方法,来试用不同的核函数,误差最下的即为效果最好的核函数,或者也可以将多个核函数结合起来,形成混合核函数。

Tips:

Logistic Regression 逻辑回归

LR 是一种广义线性回归(generalized linear model) 它的损失函数, MSE, mean square error, 均方差

常见损失函数

  • 0-1损失函数 (0-1 loss function)
  • 绝对损失函数 (absolute loss function)
  • 平方损失函数 (quadratic loss function)
  • 对数损失函数 (logarithmic loss function) /对数似然损失函数 (loglikelihood loss function)
  • 极大似然估计方法(Maximum Likelihood Estimate,MLE)

    根据给定的训练集估计出参数𝑤

    Tips:

    𝐿1 范数会选择少量的特征,其他的特征都是0;
    𝐿2 范数会选择更多的特征,这些特征都会趋近于0。
    如果在所有特征中,只有少数特征起主要作用的情况下, 那么选择𝐿1 范数比较合适,因为它能自动选择特征; 如果在所有特征中,大部分特征都能起作用, 而且起的作用很平均,那么使用𝐿2范数也许更合适。

    如果模型的特征非常多,我们希望一些不重要特征的系数归零, 从而让模型的系数稀疏化,那么选择L1正则化。 如果我们需要相对精确的多元逻辑回归模型,那么L1正则化可能就不合适了。 在调参时,如果我们目的仅仅是为了解决过拟合问题,一般选择L2正则化就可以; 但是,如果选择L2正则化之后,发现还是存在过拟合的问题,就可以考虑L1正则化。

    lbfgs & gd

    reference:
    svm常用核函数