Skip to content

Latest commit

 

History

History
356 lines (324 loc) · 20.1 KB

通用知识点.md

File metadata and controls

356 lines (324 loc) · 20.1 KB

通用知识点

  • 切比雪夫不等式
    • 随机变量X的数学期望$E(X)=\mu$,方差$D(X)=\sigma^{2}$;对任意的$\varepsilon>0$,有 $$P(|X-\mu| >= \varepsilon) <= \frac{\sigma^{2}}{\varepsilon^{2}}$$
    • 例:已知随机变量X的数学期望E(X)=100,方差D(X)=10,试估计X落在(80,120)内的概率
    • 解:$$P(80<X<120)=P(|X-100|<20) >= 1-\frac{10}{20^{2}}=0.975$$
  • 概率与似然
    • 概率:给定参数$\theta$,随机变量X等于样本x的可能性
    • 似然:给定样本,参数$\theta$是真实的可能性
  • 频率学派与贝叶斯学派
    • 频率学派认为:参数固定,模型不存在先验
    • 贝叶斯学派认为:数据固定,参数不固定,模型存在先验
  • 独立与不相关
    • 不相关:两个随机变量之间不具有线性关系
    • 独立:两个随机变量之间没有关联
  • 归一化与标准化
    • 归一化:将特定特征缩放到0-1之间
    • 标准化:将特定特征缩放成均值为0,方差为1的状态
  • L1和L2
    • L1:各个参数绝对值之和
    • L2:各个参数平方和的开方值
  • 损失函数
    • 平方损失(回归问题)
    • 交叉熵(分类问题)
    • hinge损失(SVM支持向量机)
    • CART回归树的残差损失

  • 偏差(Bias):模型预测的期望值真实值之间的差距,模型的拟合能力
    • 高偏差的解决方案:boosting,复杂化模型,更多特征
      $$E_{D}\left[(\overline{f(x)}-y)^{2}\right]$$
  • 方差(Variance):模型预测的期望值预测值差的平方和,模型的稳定性
    • 高方差的解决方案:bagging,模型简化,降维更少特征
      $$E_{D}\left[(f(x, D)-\overline{f(x)})^{2}\right]$$
      方差与偏差

  • 判别模型直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型;不考虑样本的产生模型
    • 优缺点:能够反映同类数据本身的相似度。但它不关心到底划分各类的那个分类边界在哪
    • LR,SVM,CRF
  • 生成模型学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型;P(Y|X)= P(X,Y)/ P(X),其中P(x)是训练数据的概率分布
    • 优缺点:不能反映训练数据本身的特性。但它寻找不同类别之间的最优分类面
    • 朴素贝叶斯,HMM
  • 由生成模型可以得到判别模型,由判别模型得不到生成模型
  • 说明:生成算法尝试去找到底这个数据是怎么产生的,然后再对一个信号进行分类。基于你的生成假设,那么那个类别最有可能产生这个信号,这个信号就属于那个类别。判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后用差别来简单对给定的一个信号进行分类。

参考链接:特征工程
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已

  • 包括数据与特征处理特征选择降维三个部分

特征选择方法

  • Filter过滤法
    • 按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征
  • Wrapper:包装法
    • 根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征
  • Embedded:嵌入法
    • 先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣

特征选择方法详细介绍

Filter

  • 1、移除低方差的特征
    • 当特征值都是离散型变量的时候这种方法才能用,如果是连续型变量,就需要将连续变量离散化之后才能用;假设某特征的特征值只有0和1,并且在所有输入样本中,95%的实例的该特征取值都是1,可以认为这个特征作用不大。当100%都是1,那这个特征就没意义
  • 2、单变量特征选择(独立的衡量每个特征与响应变量之间的关系)
    • 2.1、卡方(Chi2)检验
    • 2.2、皮尔森相关系数
      • 衡量的是变量之间的线性相关性 结果的取值区间为[-1,1]
      • 缺陷:只对线性关系敏感。如果关系是非线性的,即便两个变量具有一一对应的关系,Pearson相关性也可能会接近0
    • 2.3、互信息和最大信息系数
    • 2.4、距离相关系数
      • 为了克服Pearson相关系数的弱点
      • 在x和x^2这个例子中,即便Pearson相关系数是0,我们也不能断定这两个变量是独立的(有可能是非线性相关);但如果距离相关系数是0,那么我们就可以说这两个变量是独立的。
    • 2.5、基于模型的特征排序
      • 这种方法的思路是直接使用你要用的机器学习算法针对每个单独的特征和响应变量建立预测模型。假如特征和响应变量之间的关系是非线性的,可以用基于树的方法(决策树、随机森林)、或者扩展的线性模型等。基于树的方法比较易于使用,因为他们对非线性关系的建模比较好,并且不需要太多的调试。但要注意过拟合问题,因此树的深度最好不要太大,再就是运用交叉验证。

Wrapper

  • 3、递归特征消除
    • 使用一个基模型来进行多轮训练,每轮训练后,移除若干权值系数(绝对值权重小)的特征,再基于新的特征集进行下一轮训练

Embedded

  • 4、使用SelectFromModel选择特征
    • 4.1、基于L1的特征选择
      • 使用L1范数作为惩罚项的线性模型(Linear models)会得到稀疏解:大部分特征对应的系数为0。当你希望减少特征的维度以用于其它分类器时,可以通过 feature_selection.SelectFromModel 来选择不为0的系数。特别指出,常用于此目的的稀疏预测模型有 linear_model.Lasso(回归), linear_model.LogisticRegression 和 svm.LinearSVC(分类)
    • 4.2、随机稀疏模型
      • 基于L1的稀疏模型的局限在于,当面对一组互相关的特征时,它们只会选择其中一项特征。为了减轻该问题的影响可以使用随机化技术,通过_多次重新估计稀疏模型来扰乱设计矩阵_,或通过_多次下采样数据来统计一个给定的回归量被选中的次数
    • 4.3、基于树的特征选择
      • 基于树的预测模型(见 sklearn.tree 模块,森林见 sklearn.ensemble 模块)能够用来计算特征的重要程度,因此能用来去除不相关的特征(结合 sklearn.feature_selection.SelectFromModel)
  • 5、将特征选择过程融入pipeline
    • 在此代码片段中,将 sklearn.svm.LinearSVC 和 sklearn.feature_selection.SelectFromModel 结合来评估特征的重要性,并选择最相关的特征。之后 sklearn.ensemble.RandomForestClassifier 模型使用转换后的输出训练,即只使用被选出的相关特征
    # sklearn.pipeline.Pipeline:
    
    clf = Pipeline([
      ('feature_selection', SelectFromeModel(LinearSVC(penalty="l1"))),
      ('classification', RandomForestClassifier())
    ])
    clf.fit(X, y)

特征编码

  • Onehot encoding:定类
    • 优点:解决了分类器不好处理分类数据的问题,在一定程度上也起到了扩充特征的作用。它的值只有0和1,不同的类型存储在垂直的空间。
    • 缺点:当类别的数量很多时,特征空间会变得非常大,容易造成维度灾难
    • 适用于:
      • 男、女
      • 各省市
        onehot
  • Label encoding:定序
    • 优点:解决了分类编码的问题,可以自由定义量化数字
    • 缺点:可解释性比较差。比如有[dog,cat,dog,mouse,cat],我们把其转换为[1,2,1,3,2],这里就产生了一个奇怪的现象:dog和mouse的平均值是cat。因此,Label encoding编码其实并没有很宽的应用场景。
    • 适用于:
      • 学历分小学,初中,高中,本科,研究生,存在逻辑关系

缺失值处理

  • 缺失值较多
    • 直接删除或者将特征分为两类
  • 缺失值较少-缺失在10%以内
    • 算法拟合填充(一般使用此方法)
    • 把NaN直接用0替代
    • 均值填充
    • 用上下数据进行填充
  • 决策树模型处理缺失值
    • 数值型:对应类别中的中位数替换
    • 描述型:类别中出现最多的数值替代
    • (效果更好)引入权重,把需要替换的数据与其他数据做相似度测量,在补全的时候相似度高的数据有更高的权重

举例
1.欺诈预测(欺诈的数量远远小于真实交易的数量)
2.自然灾害预测(不好的事情远远小于好的事情)
3.在图像分类中识别恶性肿瘤(训练样本中含有肿瘤的图像远比没有肿瘤的图像少)

不平衡类别会造成问题有两个主要原因:
1.对于不平衡类别,我们不能得到实时的最优结果,因为模型/算法从来没有充分地考察隐含类。
2.它对验证和测试样本的获取造成了一个问题,因为在一些类观测极少的情况下,很难在类中有代表性

  • 解决方法
    • 欠采样
      • 去除一些多数类中的样本使得正例、反例数目接近。虽然这种方法使用起来非常简单,但很有可能被我们删除了的数据包含着预测类的重要信息。
    • 过采样
      • 增加一些少数类样本使得正、反例数目接近。理想情况下这种方法给了我们足够的样本数,但过采样可能导致过拟合训练数据。
    • 合成采样(SMOTE)
      • 解决的问题:一个类别的观测数量极度稀少时该怎么做
      • 算法:对每个少数类样本x_i,从它的最近邻中随机选择一个样本x ̂_i(x ̂_i是少数类中的一个样本),然后在x_i和 x ̂_i之间的连线上随机选择一点作为新合成的少数类样本
      • 缺点:生成的少数类样本容易与周围的多数类样本产生重叠难以分类

下采样:

对于一个不均衡的数据,让目标值(如0和1分类)中的样本数据量相同,且以数据量少的一方的样本数量为准。

上采样:

以数据量多的一方的样本数量为标准,把样本数量较少的类的样本数量生成和样本数量多的一方相同,称为上采样。

  • 欠拟合:模型不能在训练集上获得足够低的训练误差
  • 过拟合:模型的训练误差与测试误差之间的差距较大,即泛化能力差

过拟合的解决办法

  • 增加训练数据,可以采用数据增强的方法
    • 图像:平移、旋转、缩放
    • NLP:利用机器翻译生成新数据
  • 正则化
    • (L1,L2正则化)
  • 交叉验证
  • 特征选择/特征降维
  • 早停early stopping
    • (比如交叉验证中,错误率最小泛化性能最好,此时如果训练集错误率还在继续下降,但也得提前终止训练)
  • 决策树的剪枝
  • SVM的松弛变量
  • 集成学习方法Bagging
  • 权重衰减(Weight Decay)
  • 神经网络的Dropout
    • (让神经元以超参数P的概率被激活)
  • batch normalization
    • (对该层的输出做批标准化,使下层的输入接近高斯分布)
  • 降低模型复杂度
    • 神经网络:减少网络层,神经元个数
    • 决策树:降低树的深度,进行剪枝

欠拟合的解决办法

  • 特征工程,添加更多的特征项
  • 增加模型复杂度,减小正则化系数
  • 集成学习方法Boosting

目的:使训练出来的模型对新的数据也具有很好的性能

k_fold

  • 训练数据平均切成k份
  • 每次用其中的一份进行测试效果,剩下的k-1份进行训练
  • 进行k次

leave_p_out

  • 在训练集中每次选p个数据用作测试,剩下的n-p进行训练
    leave_p_out

交叉验证防止过拟合的原因

  • 超参数:手动可调的参数,比如knn中的k; 不同的超参数会导致模型具有不同的效果
  • 交叉验证得到模型超参数,在全量数据上使用该超参数进行训练,解决过拟合
    • 解释:假设有[1, 10, 100, 1000]4个超参数,进行10折交叉验证,每次使用一个超参数训练,可以训练得到10个模型,这10个模型的平均效果就是这个超参数的效果。比较了这4个超参数的效果后,我们可以找到一个更加好的超参数在整个全量数据上进行训练,这个模型相对更优,在一定程度上可以避免过拟合

参考链接:距离度量公式

  • 欧式距离
    • $\sqrt{(x_{1}-x_{2})^{2}+(y_{1}-y_{2})^{2}}$
  • 曼哈顿距离
    • $|x_{1}-x_{2}|+|y_{1}-y_{2}|$
  • 余弦距离
    • $\frac{x_{1} * x_{2}+y_{1} * y_{2}}{\sqrt{x_{1}^{2}+y_{1}^{2}} \times \sqrt{x_{2}^{2}+y_{2}^{2}}}$
  • 切比雪夫距离
    • $\max \left(\left|x_{1}-x_{2}\right|,\left|y_{1}-y_{2}\right|\right)$

PCA:投影后的数据具有最大方差

参考链接:主成分分析(PCA)

  • 将数据从原始基(x,y,z)映射到新的特征空间(a,b,c)
    • 零均值化
    • 协方差矩阵
    • 求解协方差矩阵,特征向量(实际新的特征空间),特征值(用于保留方差百分比的计算)
  • 在新的特征空间中,数据可能在c维上投影的值接近0,所以就只需要考虑(a,b)
  • PCA选择维数的依据:方差百分比,这里选用0.99
    • 计算公式:
      pca_方差百分比

LDA:投影后的数据具有最大区分度

  • 有监督降维
  • 将数据集在低维度的空间进行投影,使得投影后
    • 同类别数据点间的距离尽可能的靠近
    • 不同类别数据点间的距离尽可能的远

LDA、PCA相同点:

  • 两者均可以对数据进行降维
  • 两者在降维时均使用了矩阵特征分解的思想
  • 两者都假设数据符合高斯分布

LDA、PCA不同点:

  • LDA是有监督的降维方法,而PCA是无监督的降维方法
  • LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。
  • LDA除了可以用于降维,还可以用于分类。
  • LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。

样本数量:n

回归问题

均方误差(MSE)
$$l(y,\hat{y}) = \frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y_i})^2$$
均方根误差(RMSE)
$$l(y,\hat{y}) = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y_i})^2}$$
平均绝对误差(MAE)
$$l(y,\hat{y}) =\frac{1}{n}\sum_{i=1}^{n}\mid y_i-\hat{y_i}\mid $$
交叉熵误差(Cross Entropy)
$$l(y, \hat{y}) = -\sum_{i=1}^{n} \widehat{y_{i}} \ln y_{i}$$

分类问题

准确率和错误率
$$acc(y,\hat{y})=\frac{1}{n}\sum_{i=1}^{n}I(y_i=\hat{y_i})$$
$$error(y,\hat{y})=1-acc(y,\hat{y})$$

$\overline{y}$:所有样本$y$的平均值
$\hat{y_i}$:样本$y_i$的估计值

  • $TSS$:样本总平方和
    $$T S S=\sum_{i}^{n}\left(y_{i}-\overline{y}\right)^{2}$$
  • $RSS$:残差平方和
    $$R S S=\sum_{i}^{n}\left(\hat{y}_ {i}-y_{i}\right)^{2}$$
  • $ESS$
    $$E S S=\sum_{i}^{n}\left(\hat{y}_ {i}-\overline{y}\right)^{2}$$
  • $R^2$
    $$R^{2}=1-\frac{R S S}{T S S}$$
    $R^2$越大,拟合效果越好;若预测值恒为样本期望,则$R^2$为0;
    只有在无偏估计时,$T S S=E S S+R S S$,否则,$T S S \geq E S S+R S S$

T/F:预测正确/预测错误;P/N:预测是正样本/预测是负样本

  • True Positives,TP:预测为正样本,实际也为正样本的特征数
  • False Positives,FP:预测为正样本,实际为负样本的特征数
  • True Negatives,TN:预测为负样本,实际也为负样本的特征数
  • False Negatives,FN:预测为负样本,实际为正样本的特征数
precision(P) $\frac{TP}{TP+FP}$
recall(R) $\frac{TP}{TP+FN}$
F1 $\frac{2PR}{P+R}$
TPR $\frac{TP}{TP+FN}$ 预测的正类中实际是正实例占所有正实例的比例
FPR $\frac{FP}{FP+TN}$ 预测的正类中实际是负实例占所有负实例的比例
  • (0,0):所有的预测都是负样本
  • (1,1):所有的预测都是正样本
  • (0,1):所有的预测都对了
  • (1,0):所有的预测都错了

参考链接:熵和基尼系数

    • 随机变量不确定性的度量;熵越大,变量的取值越不确定
      熵
  • 基尼系数
    基尼系数
  • 联合熵:$H(X,Y)$
  • 条件熵:$H(Y|X)=H(X,Y)-H(X)$
  • 互信息:I(X;Y)
    • $I(X, Y)=\sum_{x y} p(x, y) \log \frac{p(x, y)}{p(x) p(y)}$
    • X,Y的联合分布和各自独立分布乘积的相对熵,$I(X, Y)=D(P(X, Y) || P(X) P(Y))$
      venn
  • 相对熵与交叉熵:
    • X中取值的两个概率分布$p(x)$,$q(x)$
    • p对q的相对熵是: $$D(p || q)=\sum_{x} p(x) \log \frac{p(x)}{q(x)}=E_{p(x)} \log \frac{p(x)}{q(x)}$$
      • 在一定程度上,相对熵可以度量两个随机变量的“距离”
      • $\mathrm{D}(\mathrm{p} || \mathrm{q}) \neq \mathrm{D}(\mathrm{q} || \mathrm{p})$
      • $D(p \vert \vert q)&gt;=0$
    • 交叉熵:衡量两个分布相似性的一种度量方式
      $$CEH(p, q)=E_{p}[-\log q]=-\sum_{x \in \mathcal{X}} p(x) \log q(x)=H(p)+D_{K L}(p || q)$$
      • 相对熵:$D_{K L}(p || q)$
      • 当$p$已知时,可以把$H(p)$看作一个常数
  • 参考链接:相对熵与交叉熵

  • 模型初始化:简单来说,就是把一个任务训练好的参数,拿到另一个任务,作为神经网络的初始参数值
  • 举例:先需要训练一个CNN,用于人脸的年龄识别;当有新任务,人脸识别性别,此时就可以利用已经训练好的年龄CNN模型,去掉最后一层,然后其他层的网络参数直接复制过来,继续进行训练,输出性别即可