零碎知识——机器学习

1. SVM?

SVM的基本思想是求解能够正确划分训练数据集且几何间隔最大的分离超平面,几何间隔大意味着以充分大的确信度对训练数据进行分类。而这样的分离超平面存在且唯一。

软间隔最大化就是对每个样本点引入一个松弛变量,使得函数间隔加上松弛变量大于等于1。此时目标函数加入对松弛变量的惩罚,用C来控制。C越大,对误分类的惩罚越大,误分类点就越少,不过几何间隔可能就相对较小。

核技巧就是不显示的定义从输入空间到特征空间的映射函数,而是直接定义映射的内积当作核函数。有两个原因,一个是特征空间一般是高维或无穷维的,通过映射函数计算核函数比较困难;另一个原因是对偶问题的目标函数和决策函数只涉及实例与实例之间的内积,即x_i与x_j的内积,因此可以直接用核函数来代替,不需要映射函数。

常用的核函数为多项式核函数和高斯核函数。多项式:K(x, z) = (x*z + 1)^p。高斯:K(x, z) = exp(-||x-z||^2 / (2σ^2) )

为什么高斯核能映射到无穷维,根本原因是对e^x 泰勒展开,e^x=Σ_n x^n/n!

损失函数?
hinge损失函数表示如果被分类正确,损失为0,否则损失就为1-y*f(x) 。SVM就是使用这个损失函数。y为label,{-1,+1}。f(x)为预测值

在空间上线性可分的两类点,分别向SVM分类的超平面上做投影,这些点仍然是线性可分的吗?给出证明(反证法 假设线性可分 …… 可得出与最大间隔矛盾)

2. 孤立森林?

孤立森林是适用于连续数据的无监督异常检测方法,孤立森林是由许多颗孤立树组成的,每颗孤立树的生成方式是先随机选择一个特征p和特征值q将数据集分割为两部分,一部分是p小于等于q,一部分是p大于q。然后在左右两个分支中再分别随机选择特征和特征值将数据集分割为两部分,就这样一直下去,直到树的高度达到了最大限制或者节点上只有一个样本或者节点上样本的所有特征都相同。

由于异常点可认为是分布稀疏且离密度高的群体较远的点,所以密度很高的正常数据是需要被切很多次才能被孤立,但是那些密度很低的异常点很容易就可以被孤立,所以异常点通常具有更短的路径

孤立森林作为孤立树的总体,将具有较短路径长度的点识别为异常点

在孤立森林中,小数据集往往能取得更好的效果。样本数较多会降低孤立森林孤立异常点的能力,因为正常样本会干扰隔离的过程,降低隔离异常的能力。

3. 过拟合?

原因:模型太复杂;数据量太少;

解决:增加数据;交叉验证;早停法;重新筛选特征;增加正则项

4. 连续特征离散化?

等宽法:每个区间的宽度相同。缺点是容易受到极大极小值的影响;每个区间的数据数量可能相差较多

等频法:每个区间的样本数量近似相同。缺点是可能将相同的数据分到不同的区间

根据业务经验进行划分

5. 朴素贝叶斯?

朴素贝叶斯通过训练数据集学习Y的先验概率分布和特征X的条件概率分布,然后通过贝叶斯公式即可得到后验概率分布。但学习条件概率分布要估计的参数比较多,所以朴素贝叶斯做了一个条件独立性的假设,即在类别确定的条件下,用于分类的特征是条件独立的。这样就可以用极大既然估计来估计先验概率分布和条件概率分布,从而就能得出联合概率分布。得到联合概率分布后,对于给定的输入x,通过联合概率分布可以计算后验概率分布,将后验概率分布最大的类作为x的类别。

极大似然估计可能会导致要估计的概率值为0,所以引进拉普拉斯平滑,即分子加上1,分母加上特征值的个数。
拉普拉斯假定训练样本很大时,每个分量x的计数加1造成的估计概率变化可以忽略不计,但可以方便有效的避免零概率问题。

用0-1损失函数,此时最小化损失函数等价于最大化后验概率。

为什么属性独立性假设在实际情况中很难成立,但朴素贝叶斯仍能取得较好的效果?
1)对于分类任务来说,只要各类别的条件概率排序正确,无需精准概率值即可导致正确分类;
2)如果属性间依赖对所有类别影响相同,或依赖关系的影响能相互抵消,则属性条件独立性假设在降低计算开销的同时不会对性能产生负面影响。

6. AUC?

AUC是ROC曲线下的面积,ROC曲线的横坐标是FPR(假阳性),是将负例错分为正例的概率(所有的负类中,预测为正的比例),纵坐标是TPR(灵敏度,真阳性),是将正例分对的概率(所有的正类中,预测为正的比例)。

AUC也是一种概率,随机从正样本和负样本中各选一个,模型对于该正样本打分大于该负样本打分的概率。

AUC的优点:AUC衡量的是一种排序能力;即使样本不均衡,也能表征模型的分类能力;AUC也不需要手动指定阈值,是一种整体上的衡量方法。

AUC的缺点:AUC无法反应召回率、精确率等在实际业务中经常关心的指标;忽略了预测的概率值和模型的拟合优度,只是给出相对值,可能交叉熵会很大,比如对正样本的预测概率为0.3,为负样本的预测概率为0.2;AUC无法反映哪一类预测的错误多;对于两个AUC相同的模型,其在不同区域的预测能力是不同的

AUC的计算:假设正样本有m个,负样本有n个,那么共有m × \times ×n种比较的情况,设有p个是正样本得分比负样本得分高的,那么AUC=p/(m*n)。具体的,将m+n个样本的预测值按从小到大排序,假设概率最大的正样本的秩为r1,那么比它概率小的负样本个数为r1-m个,概率第二大的正样本的秩为r2,那么比它概率小的负样本个数为r2-(m-1)个,……,假设概率最小的正样本的秩为rm,那么比它概率小的负样本个数为rm-1,最后累加就是p。

PR曲线的纵坐标是精确率(P),横坐标是召回率(R)。精确率是预测为正的样本中,实际为正的比例。召回率是实际为正的样本中,预测为正的比例。F1-score是二者的加权平均,F1=2PR/(P+R)。当一个学习器A的PR曲线完全包住另一个学习器B的PR曲线时,可断言A的性能优于B。否则可通过平衡点F1判断,F1越大,性能越好。

PRC和ROC在面对不平衡数据时的表现是不同的。在数据不平衡时,PRC曲线是敏感的,随着正负样本比例的变化,PRC会发生强烈的变化。而ROC曲线是不敏感的,其曲线能够基本保持不变。ROC的面对不平衡数据的一致性表明其能够衡量一个模型本身的预测能力,而这个预测能力是与样本正负比例无关的。但是这个不敏感的特性使得其较难以看出一个模型在面临样本比例变化时模型的预测情况。而PRC因为对样本比例敏感,因此能够看出分类器随着样本比例变化的效果,而实际中的数据又是不平衡的,这样有助于了解分类器实际的效果和作用,也能够以此进行模型的改进。

在实际学习中,我们可以使用ROC来判断两个分类器的优良,然后进行分类器的选择,然后可以根据PR曲线表现出来的结果衡量一个分类器面对不平衡数据进行分类时的能力,从而进行模型的改进和优化。

7. XGBoost?

XGBoost是GBDT的升级和优化,GBDT是基于boosting思想的一种集成学习模型,GBDT每轮迭代的时候,都去拟合损失函数在当前模型下的负梯度。

而XGBoost对GBDT的主要优化有将损失函数进行二阶泰勒展开(二阶展开可以更精确的逼近真实的损失函数),在目标函数中加入了正则项,可自动处理缺失值,支持特征粒度上的并行等。

如何处理缺失值?

  1. 在寻找最佳分裂点时,只在该特征值为非空的样本集合中寻找。然后对于缺失的样本点,分别分配到左叶子结点和右叶子结点,两种情形都计算一遍后,选择分裂后增益最大的那个方向(左分支或是右分支),作为预测时特征值缺失样本的默认分支方向。
  2. 如果训练数据没有缺失,但预测数据有缺失,则默认放到右分支。

优点

  1. 速度和精度表现都可以
  2. 允许特征存在缺失值

缺点

  1. 在节点分裂过程中仍需要遍历数据集
  2. 空间复杂度高

为什么速度快?

  1. 训练前每个特征按特征值进行排序并存储为Block结构,后面查找特征分割点时重复使用,支持并行查找每个特征的分割点
  2. 寻找最优切分点时,可用贪心算法和近似算法。贪心算法就是遍历样本,寻找收益最大的点作为最优切分点。近似算法先根据特征分布的分位数提出候选划分点,然后将连续型特征映射到由这些候选点划分的桶中,接着对每个桶内的样本统计值G、H进行累加统计,最后在这些累计的统计量上寻找最佳分裂点。提出候选切分点时有两种策略:Global:学习每棵树前就提出候选切分点,并在每次分裂时都采用这种分割;Local:每次分裂前将重新提出候选切分点。全局算法需要一次提出较多的切分点,局部需要多次计算,但每次的切分点较少。

调参
通用参数
booster: gbtree和gblinear
silent:静默模式,为1时模型运行不输出
nthread: 使用线程数,一般我们设置成-1,使用所有线程

调优参数
learning_rate(0.1)n_estimators(CV)
min_child_weight:叶节点所需的最小样本权重和,如果一个结点分裂后,它的所有子节点的权重之和都大于该阈值,该叶子节点才可以划分。越小越容易过拟合,check from range(1,6,2)。
max_depth,check from range(3,10,2)一起调节
gamma(最小划分收益,check from 0.1 to 0.5)
subsample(子采样的比例)
colsample_bytree(每棵树随机采样的列数的占比)both check from 0.6 to 0.9
alpha(L1正则化项)、lambda(L2正则化项)try 1e-5, 1e-2, 0.1, 1, 100
最后再降低学习率:0.01~0.1

学习目标参数
objective:回归、分类、多分类
eval_metric:指标

和RF的区别?

  1. XGBoost是boosting算法,RF是bagging算法。
  2. XGBoost通过降低偏差减少过拟合的风险,RF通过降低方差减少过拟合的风险。
  3. XGBoost串行训练基学习器,RF并行训练基学习器。
  4. XGBoost将各个基学习器的结果累加作为最终结果输出,RF则是通过求平均或者投票作为最终结果输出。

损失函数
回归用平方损失函数,分类用对数损失函数。

为什么Adaboost用指数损失函数?
一方面,Adaboost是模型为加法模型,损失函数为指数函数,学习算法为前向分布算法时的二类分类学习方法。所以,不用指数损失函数的话,就不叫Adaboost了。
另一方面,AdaBoost的训练误差是以指数速率下降的。
决策函数为sign(f(x)),所以Adaboost最后输出的并不是概率。

8. 聚类算法?

基于层次的聚类:每个样本点为一类,计算每类与其它各类的距离,把距离最短的两类合并为一类,然后再计算每类与其它各类的距离,再把距离最短的两类合并为一类,直至只剩一个类。
优点:原理简单,能够展现数据层次结构
缺点:时间复杂度高

基于划分的聚类:k-means,k-means++,mini batch k-means(每次随机抽取一部分数据做k-means,可以重复多次采样,再对计算到的类簇坐标计算均值,直到簇中心趋于稳定为止,或者人工设置一个迭代次数)
优点:原理简单,容易实现,需要调节的参数较少,可处理的数据规模比层次聚类大
缺点:对非凸聚类(例如U型、带状(环绕)等)情况下也会变得很差;对异常点敏感

基于密度的聚类:DBSCAN。需要事先指定一个点的最小半径,记为r,以及最少样本点,记为m。如果一个数据点,有超过m个样本点与它的距离均小于r,那么这个点就称作核心点。如果A是一个核心点,B和A的距离小于r,而且B也是一个核心点,C和B的距离小于r,而且C也是一个核心点,以此类推,直到H,而H不是一个核心点,那么就说H可由A密度可达。对于点A和点B,如果存在点C,使得A和B均由点C密度可达,则称点A和点B密度相连。而DBSCAN就是把最大密度相连的样本定义为一个类。
优点:可以对任意形状的稠密数据集进行聚类;对数据集中的异常点不敏感;
缺点:如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差;对参数敏感

基于模型的聚类:GMM。假设数据符合混合的高斯分布,根据数据,用EM算法推断出GMM的概率分布,然后GMM的k个成分就是要聚的k个类,每个成分前的系数就是一个样本属于该类的概率。
EM算法:EM算法就是含有隐变量的极大似然估计。EM算法通过迭代求解极大似然估计,主要分为两步,E步是计算Q函数,即完全数据的对数似然函数关于在给定观测数据和当前参数下对未观测数据的条件概率分布的期望。M步就是最大化E步中的Q函数,得到参数的迭代值。
对于GMM,定义隐变量γ_jk=0或1,表示第j个样本来自k个模型,然后利用上述的EM算法,就可得到GMM的参数。
优点:可以给出样本属于每一类的概率;
缺点:受初始值的影响较大;需要手动指定K;局部最优解

距离衡量?
归一化的欧式距离和余弦相似度等价。余弦距离等于1-余弦值。
余弦距离使用两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比欧氏距离,余弦距离更加注重两个向量在方向上的差异。
当我们对高维数据向量的大小不关注时,可以使用余弦相似度,否则可用欧式距离。

高维空间中所有样本的距离都是趋于相等的,所以维度很高时,欧式距离会失效。大数定律?

评价指标?

  1. 邓恩指标:类间距离的最小值除以类内距离的最大值。越大,说明类间距离越大,类内距离越小,效果越好。
  2. 轮廓系数:越大,效果越好。
  3. CH指标:分离度与紧密度的比值。分离度由各类中心与数据集中心点距离平方和度量,紧密度由类中各点到类中心的距离平方和度量。越大,效果越好。

多分类评价指标?
4. Kappa系数,越大越好
5. 海明距离,简单来说就是衡量预测标签与真实标签之间的距离,取值在0~1之间
6. 杰卡德相似系数

9. 数据预处理?

数据清洗:缺失、异常

数据转换:连续特征离散化、类别型特征(有序:可以用label encoding;无序:One-hot encoding或者哑变量)、标准归一化(提高模型精度、提升收敛速度)

数据降维:PCA和LDA

类别不平衡

10. 线性回归和逻辑回归的区别?

  1. 线性回归是回归,逻辑回归是分类。
  2. 线性回归假设因变量服从正态分布,逻辑回归假设因变量服从伯努利分布。
  3. 线性回归假设因变量与自变量之间是线性关系,逻辑回归则是假设对数几率与自变量之间是线性关系。
  4. 线性回归的损失函数是平方损失函数,逻辑回归的损失函数是对数损失函数
  5. 线性回归的参数估计是最小二乘法,逻辑回归的参数估计是梯度下降法
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值