【机器学习】【总结】机器学习

看到一个关于记录机器学习的pdf文档,感觉写的非常好,记录一下文档中的内容。以及自己通过搜索得到的好的答案。

题库

目录:

一. 机器学习基础

二. 数据预处理

三. 线性回归

四. 逻辑回归

五. 决策树

六. SVM

七. EM算法


一. 机器学习基础

  1. 介绍下欠拟合与过拟合?机器学习中用来防止过拟合的方法有哪些?
    参考:机器学习中用来防止过拟合的方法有哪些?第一个答案就解释的总结的很好了。

过度拟合训练样本,模型在训练集上效果好;在测试集上效果差。模型泛化能力弱。
欠拟合正好相反,训练样本不能很好的拟合,同样泛化能力差

过拟合产生的原因:数据量少+模型过于复杂
机器学习为了满足尽可能的复杂任务,其模型的拟合能力一般远远高于问题复杂度,也就是说机器学习算法有[拟合正确规则的前提下,进一步拟合噪声的能力]。

1.更多的训练数据,要给足够多的有效数据,让少数噪音数据得干扰达到最低。获得方式包括:从数据源头获取更多数据;数据增强。
2.合理处理模型,包括减少网络层数;限制训练时间;加入正则化;
3.集成的方法: bagging,boosting,stacking,dropout
4.贝叶斯的方法

  1. L1或L2是如何防止过拟合的?
    参考:L1,L2,L0区别,为什么可以防止过拟合
    辅助可以参考:L1,L2正则化为什么能解决过拟合问题思路解析的很好,但是公式写的不清晰,格式不对。

首先,需要理解的是,过拟合的一个原因是模型过于复杂了,远远高于问题的复杂度。所以通过正则化解决过拟合实际上就是在想办法让模型变得简单。参数值大小和模型复杂度是成正比的。
L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso(L1)在特征选择时候非常有用,而Ridge(L2)就只是一种规则化而已。在所有特征中只有少数特征起重要作用的情况下,选择Lasso比较合适,因为它能自动选择特征。而如果所有特征中,大部分特征都能起作用,而且起的作用很平均,那么使用Ridge也许更合适。

  1. L1和L2正则的区别和应用场景
    参考:L1正则和L2正则的比较分析

1. L1对异常点不太敏感,而L2则会对异常点存在放大效果。
2. L1的变动很大,而L2的则整体变动不大。也就是L2更加稳定
3. L1 nrom几乎没有比L2 norm表现好的时候,优先使用L2 norm是比较好的选择,数据特征比较多时,不乏相关性特征,用L1可以起到筛选特征的作用,消除一波共线性问题,使得参数稀疏。

假设我们的预测结果与两个特征相关,L2正则倾向于综合两者的影响,给影响大的特征赋予高的权重;而L1正则倾向于选择影响较大的参数,而舍弃掉影响较小的那个。实际应用中 L2正则表现往往会优于 L1正则,但 L1正则会大大降低我们的计算量。

  1. LR(L1,L2)正则化与数据先验分布有什么关系?
    参考:LR正则化与数据先验分布的关系?

从贝叶斯的角度来看,正则化等价于对模型参数引入 先验分布 。

1. L2对应高斯分布,L1对应拉普拉斯分布
2.如果在用概率推导线性回归的时候,参数 w 引入协方差为 的零均值高斯先验。推导的结果就是岭回归,也就是损失函数加上L2正则。
3.如果在用概率推导线性回归的时候,参数 w 引入协方差为 的拉普拉斯分布先验。推导的结果就是LASSO ,也就是损失函数加上L1正则.

目前对贝叶斯模型不是很了解,打算看完贝叶斯模型,在回头看这个吧。

  1. 介绍下偏差方差分解
    参考:对数学期望的理解
    理解误差期望值
    偏差方差分解 (误差分解)
    过拟合和欠拟合+方差和偏差
    方差偏差曲线

期望值的含义是指在同样的条件下重复多次随机试验,得到的所有可能状态的平均结果。对于机器学习来说,这种实验就是我们选择一种算法(并选定超参数),以及设置一个固定的训练集大小,这就是同样的条件,也就是上文所说的特定的模型。然后每次训练时从样本空间中选择一批样本作为训练集,但每次都随机抽取不同的样本,这样重复进行多次训练。每次训练会得到一个具体的模型,每个具体模型对同一个未见过的样本进行预测可以得到预测值。不断重复训练和预测,就能得到一系列预测值,根据样本和这些预测值计算出方差和偏差,就可以帮助我们考察该特定模型的预测误差的期望值,也就能衡量该特定模型的性能。对比多个特定模型的误差的期望值,可以帮助我们选择合适的模型。

1. 泛化误差(generalization error)可以分解为三个部分: 偏差(bias), 方差(variance) 和噪声(noise). 在估计学习算法性能的过程中, 我们主要关注偏差与方差. 因为噪声属于不可约减的误差 (irreducible error).
2.偏差bias:度量了模型的期望预测和真实结果的偏离程度,刻画了模型本身的拟合能力
解决:使用更复杂的模型,使用更多的特征。
3.方差variance:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响
衡量模型对不同数据集D的敏感程度,也可以认为是衡量模型的不稳定性。若方差大,则表示数据的微小变动就能导致学习出的模型产生较大差异。可能的情形是在训练集上拟合的很好,到了测试集上由于数据的改变致使准确率下降很多,这是典型的过拟合。
解决:使用交叉验证,简化模型,减少所用特征维数,使用正则化方法。
4.噪声:表达了当前任务上任何模型所能达到的期望泛化误差的下界,刻画了学习问题本身的难度。

我们训练模型是希望模型的拟合能力强,即偏差小,同时也希望模型能够稳定,即数据集改变并不会使得模型发生较大的变化,也就是方差variance较小。但是两者确实矛盾的,一个大另一个就小,所以需要我峨嵋你去平衡。希望偏差小,也就是模型的偏离程度低,即拟合效果好。同时也希望方差小,即数据变化时,模型的扰动小,不受数据影响。刚开始训练不充分的时候,拟合能力不够强,所以在训练数据集上,模型的期望预测和真实值的偏离程度较大,也就是偏差bias较高,但是此时,由于模型拟合能力较弱,就算训练数据扰乱一些,由于训练的不充分,模型拟合能力弱,模型也不会发生较大的变化,也就是说方差较小。所以说,bias偏差大,variance方差小,是欠拟合。
随着模型复杂度的提升, 模型的拟合能力越来越强了,模型的期望预测和真实值的偏离程度越来越小,也就是bias偏差小了,但是此时模型的拟合能力极强,训练数据集稍微变化一点,由于较强的拟合能力会使得,模型去拟合那一点点的变化,导致模型变化较大,也就是方差variance较大。 所以说,bias偏差小,variance方差大,是过拟合。

欠拟合会出现高偏差问题
过拟合会出现高方差问题

  1. 介绍一般分类的指标
    参考:分类算法常用的评价指标

数据不平衡时的解决方式:
1.在评价标准上需要考虑,用ROC,不用准确率
2.从数据上解决问题采样,主要包括随机欠采样,随机过采样,SMOTE过采样
,EasyEnsemble算法(随机森林相似,它将多数类样本随机划分为N份,分别与少数类组成一个训练集训练N个模型,以N个模型的平均作为结果)和混合采样
3. 调整class_weight以及sample_weight的样本权重,一般设置为“balanced”
4. 设计损失函数,设计一个损失函数来惩罚少数类的错误分类,比如FocalLoss,在目标检测领域取得了良好的处理类别不平衡效果和改善误分类的效果

  1. 生成模型和判别模型的区别
    参考:机器学习“判定模型”和“生成模型”有什么区别?

判别式模型举例:要确定一个羊是山羊还是绵羊,用判别模型的方法是从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。
生成式模型举例:利用生成模型是根据山羊的特征首先学习出一个山羊的模型,然后根据绵羊的特征学习出一个绵羊的模型,然后从这只羊中提取特征,放到山羊模型中看概率是多少,在放到绵羊模型中看概率是多少,哪个大就是哪个。

  1. 损失函数有几种?原理是什么?有什么特点?
    参考:常用的损失函数
    一文读懂机器学习常用损失函数:写的比较好。

1. 损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项 ;
2. 0-1损失函数是指;
预测值和目标值不相等为1,否则为0 ;
3.交叉熵损失函数,一般用于logistic逻辑回归分类模型;
4.平方损失函数,一般用于线性回归 ;
5.指数损失函数,AdaBoost就是一指数损失函数为损失函数的。 6. Hinge loss主要用于支持向量机
中。

  1. 分类与回归的区别
    参考:分类与回归的联系和区别学习笔记

1.浅层: 两者的的预测目标变量类型不同,回归问题是连续变量,分类问题连续变量。
2.中层:回归问题是定量问题,分类问题是定性问题。
3.高层: 回归与分类的根本区别在于输出空间是否为一个度量空间。

  1. 说下极大似然估计的原理:线性回归用到了,所以后面线性回归那里有详细的解释。
    极大似然估计的理解与应用

1.是概率论在统计学中的应用。极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。最终想要得到的是参数。
2.计算方式就是写出似然函数,对似然函数取对数,并求导得到最佳参数。
3.总结起来,最大似然估计的目的就是:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。

二. 数据预处理

  1. 介绍下常见的数据预处理的方法
    详细的数据预处理方法
    数据预处理的主要步骤分为:数据清理、数据集成、数据规约和数据变换
  • 数据清理
    通过填补缺失值、光滑噪声数据,平滑或删除离群点,并解决数据的不一致性来“清理“数据。
    主要需要处理:
    (1)缺失值的处理
    (2)离群点处理
    (3)噪声处理

  • 数据集成
    数据集成将多个数据源中的数据结合成、存放在一个一致的数据存储,如数据仓库中。

  • 数据规约
    更好的参考:数据规约
    在数据集成与清洗后,我们能够得到整合了多数据源同时数据质量完好的数据集。但是,集成与清洗无法改变数据集的规模。我们依然需通过技术手段降低数据规模,这就是数据规约。
    数据规约方法类似数据集的压缩,它通过维度的减少或者数据量的减少,来达到降低数据规模的目的。
    (1)维度规约(Dimensionality Reduction):减少所需自变量的个数。代表方法为WT、PCA与FSS以及SVD
    (2)数量规约(Numerosity Reducton):用较小的数据表示形式替换原始数据。代表方法为对数线性回归、聚类、抽样等。

主成分分析(Principal Component Analysis,PCA),是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。
PCA原理参考:PCA的数学原理

  • 数据变换
    数据变换包括对数据进行规范化,离散化,稀疏化处理,达到适用于挖掘的目的。
    特征处理可以参考这篇博客:机器学习中的特征工程
  1. 时间序列数据怎么构建训练集和验证集,要注意什么
    这种数据集,我是没有接触过,也没有用过,只能先附上链接,以后遇到再说了。
    关于时间序列训练集与验证集的构建

1.在划分训练集与测试集时不能够随机划分, 因为在构造样本时选取的时间步长一般很短,那么某些样本之间的差异会很小,如果随机划分会导致验证集的结果过于乐观。
2.如果时间序列数据存在明显的趋势或者周期性的话,一般采用forward chain方法,
3.如果时间序列数据沿着时间轴没有明显的周期和趋势的话,即该时间序列是稳态的,那么其实是可以使用hv交叉验证方法的

降维是最重要,最经常考的一部分,可以参考博客:降维的整体概念以及算法介绍
数据降维为什么要降维的简单总结

三. 线性回归

  1. 极大似然估计
    主要参考:一文搞懂极大似然估计

最大似然估计是利用已知的样本的结果,在使用某个模型的基础上,反推最有可能导致这样结果的模型参数值
换句话说,极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:模型已定,参数未知”。

似然和概率简单来讲,似然与概率分别是针对不同内容的估计和近似。概率(密度) 表达给定 θ \theta θ下样本随机向量 X = x X=x X=x的可能性,而似然表达了给定样本 X = x X=x X=x下参数 θ = θ 1 \theta=\theta_1 θ=θ1 (相对于另外的参数取值 θ 2 \theta_2 θ2)为真实值的可能性。

  • 如果 θ \theta θ是已知确定的, x x x是变量,这个函数叫做概率函数(probability function),它描述对于不同的样本点 x x x,其出现概率是多少。描述给定指定的 θ \theta θ,分别出现 X = x 1 , X = x 2 , X = x 3 X=x_1,X=x_2,X=x_3 X=x1X=x2X=x3的概率的值。
  • 如果 x x x是已知确定的, θ \theta θ是变量,这个函数叫做似然函数(likelihood function), 它描述对于不同的模型参数,出现 x x x这个样本点的概率是多少。描述不同的 θ \theta θ θ 1 , θ 2 , θ 3 \theta_1,\theta_2,\theta_3 θ1,θ2,θ3使得出现 X = x 1 X=x_1 X=x1的概率是多少。

求解最大似然估计的一般过程为:参考
1. 写出似然函数;
2. 如果无法直接求导的话,对似然函数取对数;
3. 求导数 ;让导数等于0,求出参数。
4. 求解模型中参数的最优值。

  1. 线性回归为什么用均方误差
    直观上看,均方差是表达的是欧几里得距离,表示的是预测点到原来点的距离,这个距离越小越好。然而,将均方差作为损失函数是通过推导得到的。

可以由概率推导出用均方误差的合理性,假设数据符合高斯分布,利
用极大似然推导之后,得到的最终目标函数即是均方误差

参考线性回归模型损失函数为什么是均方差
线性回归损失函数为什么要用平方形式

最终求出: μ = 1 n ∑ i = 1 n ϵ i = 1 n ∑ i = 1 n ( y i − y ^ i ) \mu= \frac{1} {n} \sum_{i=1}^n \epsilon_i= \frac{1} {n} \sum_{i=1}^n(y_i-\hat y_i) μ=n1i=1nϵi=n1i=1n(yiy^i)
σ = 1 n ∑ i = 1 n ( ϵ i − μ ) 2 = 1 n ∑ i = 1 n ( y i − y ^ i − μ ) 2 = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \sigma= \frac{1} {n} \sum_{i=1}^n(\epsilon_i - \mu)^2= \frac{1} {n} \sum_{i=1}^n (y_i-\hat y_i - \mu)^2 = \frac{1} {n} \sum_{i=1}^n (y_i-\hat y_i)^2 σ=n1i=1n(ϵiμ)2=n1i=1n(yiy^iμ)2=n1i=1n(yiy^i)2
让其等于0,或者越小越好,这样才能保证给定的参数使得输出的数据是我们想要的数据概率最大化。所以说直观上看,均方差是表达的是欧几里得距离,表示的是预测点到原来点的距离,这个距离越小越好。然而,将均方差作为损失函数是通过推导得到的。

  1. 梯度下降,随机,mini-batch
    参考:梯度下降(BGD)、随机梯度下降(SGD)、Mini-batch Gradient Descent、带Mini-batch的SGD
  2. 手推最小二乘
    参考:最小二乘法小结

从最简单的一个特征,到n个特征,以及矩阵的解法,推导了最小二乘法。

四. 逻辑回归

逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。

参考:自己以前写过关于逻辑回归和线性回归的知识点

简单说一下分类和回归之间的区别:
分类:给定一个数据,根据给出的训练集训练模型并推断出它所对应的类别(+1,-1),是一种定性的输出,也叫作离散变量预测。
回归:给定一个数据,根据给出的训练集训练模型并推断出该数据下的输出值是多少,此时输出的是一个真实的数值,是一种定量的输出,也叫作连续变量预测。
具体概念
LR模型其实仅在线性回归的基础上,套用了一个逻辑函数(sigmoid)。逻辑回归是一个非线性的二分类模型,主要是计算在某个样本特征下事件发生的概率,但是他本质上是一个线性回归模型,因为除去sigmoid映射函数外,其他步骤算法都是线性回归的。

  1. 手推LR
    参考:手推Logistic Regression(逻辑回归)模型
    手推LR(Logistic Regression)逻辑斯蒂回归及常见问题
    这个推导过程和线性回归均方误差那个推导差不多,都是用极大似然法,求出需要更新的参数。由于更新的参数,按理来说,应该是求出极大似然方程中的参数,通过解方程来求得,但是计算机并不能解方程。所以我们通过加一个负号,得到一个函数,然后变为求极小值,就可以使用梯度下降法来更新参数了。

极大似然法通常用于,模型已定,参数未知的时候,我们在更新权重的时候往往是让损失函数最小,更新权重,但是其实损失函数的定义都是通过极大似然法求出来的。所以我们可以直接考虑用极大似然法更新权重。
似然函数通常是想求出极大值,方法是:让倒数=0,然后解方程组。
但是计算机不会解方程组,所以发明了梯度下降法,但是梯度下降法是用来求极小值的,所以我们选择了将l函数前面加一个负号,作为目标函数,然后通过求目标函数的极小值来使用梯度下降法更新参数。因为加了负号,让目标函数极小,就是让似然函数极大了。

  1. 写一下softmax的公式
    参考:初探softmax
    S i = e V i ∑ i C e V I S_i = \frac{e^{V_i}} {\sum_i^C e^{V_I}} Si=iCeVIeVi

其中, V i V_i Vi是分类器前级输出单元的输出。 i i i表示类别索引,总的类别个数为 C C C S i S_i Si表示的是当前元素的指数与所有元素指数和的比值。(划重点)通过这个Softmax函数 就可以将多分类的输出数值转化为相对概率。

  1. LR(逻辑回归) 为什么使用sigmoid函数
    参考:指数分布族的通用公式以及伯努利分布变为指数分布族的推导

1.是由概率推出的,逻辑回归认为函数其概率服从伯努利分布,将其写成指数族分布,可以推出sigmoid函数的形式。
我们知道伯努利分布公式中的 φ φ φ是我们要求得参数,所以根据指数分布得到了φ的格式就是sigmoid,所以得到了sigmoid函数。
2.Sigmoid 函数自身的性质,也就是sigmoid 函数连续,单调递增,是非线性的,增强模型拟合能力,而且求导可以写为本身。

  1. 交叉熵函数的形式

交叉熵损失函数经常用于分类问题中,特别是在神经网络做分类问题时,也经常使用交叉熵作为损失函数,此外,由于交叉熵涉及到计算每个类别的概率,所以交叉熵几乎每次都和sigmoid(或softmax)函数一起出现。
那么两个函数的区别联系可以参考:Sigmoid 函数和 Softmax 函数的区别和关系
通常我们都是使用softmax,理由可以参考:Sigmoid vs Softmax 输出层选择

  • sigmoid:常用于二元分类(Binary Classification)问题,以及神经网络的激活函数(Activation Function)(把线性的输入转换为非线性的输出)。sigmoid作为最后一层输出的话,那就不能把最后一层的输出看作成一个分布了,因为加起来不为1。但是仍然可以看出是可能性的输出,只不过和不为1而已。
  • Softmax :Softmax 可以把它压缩为一个长度为 K 的、取值在 (0, 1) 区间的实数矢量,且矢量中各元素之和为 1。它在多元分类(Multiclass Classification)和神经网络中也有很多应用。

在二元分类的情况下,Softmax 退化为了 Sigmoid。但其实只是形式差不多,还是有区别的。sigmoid应该将最后一层的每个神经元看作一个分布,一个神经元得到一个概率,并不能保证最后的结果和为1,但是softmax是所有神经元一起计算的,所以可以保证和为1。因此,在计算损失的时候是有区别的。
Hinton认为当Sigmoid函数的某个输出接近1或者0的时候,就会产生梯度消失,严重影响优化速度,而Softmax没有这个问题。

知道了sigmoid函数和softmax函数的区别和联系以后,考虑到逻辑回归最后一层往往是这两个函数中的一个,实际上这两个函数的交叉熵损失函数是有区别的
参考:交叉熵损失函数:主要看的几点:

  • 通过极大似然法得到0-1分类的交叉熵损失的推导
  • softmax作为输出的交叉熵 以及 sigmoid作为输出的交叉熵 的损失的计算公式

sigmoid
L = − y l o g y ^ − ( 1 − y ) l o g ( 1 − y ^ ) = { − l o g ( y ^ ) y=1 − l o g ( 1 − y ^ ) y=0 L = -y log \hat{y}-(1-y)log(1-\hat{y})=\begin{cases} -log( \hat{y})& \text{y=1}\\ -log(1-\hat{y})& \text{y=0} \end{cases} L=ylogy^(1y)log(1y^)={log(y^)log(1y^)y=1y=0
其中 y ∈ 0 , 1 y∈{0,1} y0,1 是真实标签, y ^ \hat{y} y^是预测值。一个神经元计算一个神经元的误差,然后将所有神经元的误差求和。 L = ∑ i − y i l o g y i ^ − ( 1 − y i ) l o g ( 1 − y i ^ ) L = \sum_i -y_ilog \hat{y_i}-(1-y_i)log(1-\hat{y_i}) L=iyilogyi^(1yi)log(1yi^)
softmax:
在这里插入图片描述

  1. 交叉熵损失和均方误差对比
    参考:交叉熵的定义以及理解
    sigmoid激活函数反向传播更新参数角度理解
    损失函数角度考虑 以及 softmax反向传播角度考虑

逻辑回归最后一层可能是二分类的sigmoid也可能是多分类的softmax,虽然二分类的时候softmax退化成的形式和sigmoid差不多,但是还是有一定的区别,毕竟sigmoid不能保证概率和为1,所以计算损失的方式还是有区别的,所以要从两个角度考虑反向传播损失函数。可以参考上面问题中的:交叉熵损失函数

1.square mean在更新w,b时候,w,b的梯度跟激活函数的梯度成
正比,Simoid函数在值非常高时候,梯度是很小的,比较平缓。cross entropy在更新w,b时候,
预测值跟实际值差距越大,那么w,b调整就越快,收敛就越快。所以交叉熵的收敛速度应该更加
快。
参考:损失函数梯度对比-均方差和交叉熵sigmoid激活函数公式理解
2.二次代价函数存在很多局部最小点,而交叉熵就不会。

  1. 逻辑回归特征之间关联程度大会有什么问题
    参考:逻辑回归特征之间关联程度大会有什么问题(特征共线性问题)

逻辑回归在训练的过程当中,如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响

  • 先说结论,如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响分类器的效果。
  • 但是对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,你现在将它重复100遍。训练以后完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上将原来的特征分成了100份,每一个特征都是原来特征权重值的百分之一。
  • 如果在随机采样的情况下,其实训练收敛完以后,还是可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的值正负相消了。

为什么我们还是会在训练的过程当中将高度相关的特征去掉

  • 去掉高度相关的特征会让模型的可解释性更好
  • 可以大大提高训练的速度。如果模型当中有很多特征高度相关的话,就算损失函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。其次是特征多了,本身就会增大训练的时间。
  1. 代码实现LR的前向和反向传播
    参考:一步步用python实现Logistic回归

需要了解导入数据的过程;sigmoid函数;初始化函数;前向传播计算过程;反向传播的求导;优化器。

逻辑回归面试常问问题总结

五. 决策树

先学习基础知识:
参考:
自己总结的决策树博客
简单介绍决策树的基础
决策树基础知识的理解

  • 决策树是一种解决分类问题的算法。
  • 决策树算法的核心:从属性集中选择最优的划分属性。
  1. 介绍一下ID3和C4.5算法

决策树算法的核心:从属性集中选择最优的划分属性, 那么如何选择最优的划分属性?
是度量样本不纯度的指标,样本不纯度越大,熵越大,越无序。熵越小,样本的纯度越高,所以决策树的生长过程也是不断的将数据的不纯度降低的过程,希望最后得到的分类结果纯的很高,也就是准确性很高。

ID3指的是利用信息增益来作为分裂节点的标准。ID3对某个类别较多的特征有偏向 ,
c4.5指的利用信息增量率作为分裂节点的标准。
具体算法的介绍以及案例,可以继续参考上面的博客:决策树基础知识的理解

信息增益存在的问题:假如我们用“学号”作为特征,也就是每个人一个学号,将45个人分到45个桶里,此时的纯度最高,但是对新来的特征没有任何意义,即分叉越多,越肯定,纯度越高,所带来的增益很大,所以我们选用相对值来衡量信息的增益,也就是信息增益率。此时,分叉越多,分母会越大,会导致信息增量率减小,所以必须衡量不让分叉那么多,也就避免了ID3对类别较多的特征的偏向。

  1. 介绍CART(分类与回归树)算法
    参考:机器学习之分类与回归树(CART):讲述了具体的实例
  • 这是一类分类与回归树的总称,假设是一颗二叉树 ;
  • 分类是利用gini系数找分裂特征和分裂值;分类树种,使用 Gini 指数最小化准则来选择特征并进行划分;Gini 指数表示集合的不确定性,或者是不纯度。基尼指数越大,集合不确定性越高,不纯度也越大。这一点和熵类似。另一种理解基尼指数的思路是,基尼指数是为了最小化误分类的概率。
  • 回归是用最小二乘法找到最优化节点和分割值。回归树中,使用平方误差最小化准则来选择特征并进行划分。每一个叶子节点给出的预测值,是划分到该叶子节点的所有样本目标值的均值,这样只是在给定划分的情况下最小化了平方误差。

ID3和C4.5都是分类树,CART(Classification and regression tree)可以是分类/回归树。
3. 决策树是如何对对连续属性和对缺失属性的处理
参考:决策树处理连续值,缺失值
决策树(decision tree)(三)——连续值处理
决策树(decision tree)(四)——缺失值处理

  • 对于连续值,连续值a在D上出现了n个不同的取值,也就是连续值离散化处理。

C4.5 处理连续特征是先将特征取值排序,以连续两个值中间值作为划分标准。
CART:遍历所有输入变量j 和切分点s,根据最小化平方误差准则选取;

  • 对于缺失值,通过修改信息增益的公式,在原始计算前添加了占比系数作为权重,为每个样本赋予一个权重。
  1. 信息增益的定义是什么,公式是什么;熵的定义什么,公式是什么
    在介绍决策树的文章中都有记录公式。
    自己总结的决策树博客这个自己总结的博客中就有介绍各个公式。

六. SVM

参考:[三种SVM算法总结的很好](https://ryannng.github.io/2016/12/13/MLND%E5%9B%9E%E9%A1%BE-%E7%9B%91%E7%9D%A3%E5%AD%A6%E4%B9%A0(1%EF%BC%89%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%9C%BA/)
不知到为什么这个网址写不好///

先学习SVM基础知识:

  1. 简单介绍下SVM

1. SVM是一个二类分类器,主要分为线性最大硬间隔SVM, 软间隔SVM也就是,在硬间隔的基础上加一个松弛变量,以及核SVM,用于解决非线性的分类问题,将低维空间映射到高维空间中,在进行数据划分。
2.支持向量表示与超平面最近的点,假设约束函数间隔是1,所有点都大于等于1,那么支持向量就是刚好满足到超平面等于1的点
3. SVM的有两种解释,一个是决策函数sign(wx+b) ,学习策略是硬间隔最大化,算法是凸二次规划,一个是决策函数sign(wx+b),学习策略是最优化折页损失函数,算法可以是梯度下降等

  1. 函数间隔与几何间隔:

1. 几何间隔除以一个范数等于函数间隔
2.不用函数间隔,因为几何间隔不随w,b等比例变化而变化。(w,b等比例变化,但超平面不变)

  1. 说说SVM相对于LR有什么不同?

1.样本点对于模型的作用不同. SVM中只有支持向量对模型有影响,而LR中所有点都有影响.
2.损失函数不同. SVM采用的是合页损失函数, LR采用的是对数损失函数.
3.输出不同. LR输出的是对样本点是否属于给定分类的概率, SVM只能判断是否属于某一分类.
4.处理非线性问题的能力不同. SVM可以通过核函数灵活的将非线性问题转化为线性问题求解, 而LR一
般不能非线性分类,需要手动进行特征转换。

  1. svm的核函数有哪些,有什么区别和应用场景:

1. 线性核,只能解决线性可分问题,但简单容易理解,一般是m(数据量)比较小而n(特征数量)比较大的时候
2. 多项式核依靠升维使得原本线性不可分的数据线性可分,优点是可解决非线性问题,但是比较多的参数要选择
3. 高斯核,优点是可以映射到无限维,只有一个参数,相比多项式核容易选择,缺点是可解释性差(无限多维的转换,无法算w),计算速度比较慢和容易过拟合。且需要进行特征缩放, 因为高斯核需要两个点之间的欧式距离, 如果不进行特征缩放的话数量级较大的特征对核函数的结果有决定性影响, 而数量级小的特征会被忽略.
4. 总结就是一般在样本数量可观、特征少选择高斯核,特征维数高选择线性核。

  1. svm优缺点:
    参考:支持向量机(SVM)的优缺点
    高维映射 与 核方法

  2. SVM怎么进行多分类:

1. 将某一类归为正类,其余全部是负类。该方法的最大缺陷是数据集的不平衡,因为某一类的实例往往只占一小部分。当然解决不平衡的问题可以进行降采样或者上采样,但是上采样中数据集过多重合,易导致过拟合,而降采样使得数据利用率不足,不能学习整个模型的特性
2.k类的数据集中,单独为每两类的样本设计SVM,进行分类。最终必须设计k(k-1)/2个分
类器,最终用投票的方式进行选择。这也是libsvm采用的方法,但是当类别比较多的时候, 效率很
低。

  1. svm模型C参数越大,代表模型的偏差大还是方差大?

欠拟合会出现高偏差问题
过拟合会出现高方差问题
在这里插入图片描述
所以,C越大,越时不允许在训练集上分错,那么就可能造成过拟合,也就是高方差。

七. EM算法

参考:EM算法

  1. 极大似然法与EM算法
    极大似然估计,用现有对一个已知特定分布估计参数 。
    EM也是已知分布,但数据非完全观测,一种特殊的极大似然。

极大似然估计你可以把它看作是一个反推。多数情况下我们是根据已知条件来推算结果,而极大似然估计是已经知道了结果,然后寻求使该结果出现的可能性极大的条件,以此作为估计值。
EM算法和极大似然估计的前提是一样的,都要假设数据总体的分布,如果不知道数据分布,是无法使用EM算法的。当数据中有隐含参数得时候,也就是数据中有一种,你依赖我,我依赖你的循环依赖关系的时候,使用一种特殊得极大似然法EM算法。

  1. EM算法具体做法
    具体来说,猜想隐含参数代表EM 算法的 E 步,具体来说就是计算联合分布的条件概率期望。然后基于观察数据和猜测的隐含参数一起来极大化对数似然,求解我们的模型参数(EM算法的M步。之后重复迭代E步和M步,直到收敛。

在这里插入图片描述

  1. EM算法例子
    一个最直观了解EM 算法思路的是 K-Means 算法。在 K-Means 聚类时,每个聚类簇的质心是隐含数据。我们会假设 K 个初始化质心,即 EM 算法的 E 步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即 EM 算法的 M 步。重复这个 E 步和 M 步,直到质心不再变化为止,这样就完成了 K-Means 聚类。
    参考:K-Means 聚类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值