zoukankan      html  css  js  c++  java
  • 机器学习基础

    机器学习基础

    判别模型与生成模型

    生成模型:由数据学习联合概率分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型。(朴素贝叶斯、Kmeans)
    生成模型可以还原联合概率分布p(X,Y),并且有较快的学习收敛速度,还可以用于隐变量的学习
    判别模型:由数据或者条件概率分布P(Y|X)或者学习决策函数Y=f(X)作为预测的模型。(k近邻、决策树、SVM)
    直接面对预测,往往准确率较高,直接对数据在各种程度上的抽象,所以可以简化模型

    归一化

    归一化化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。

    1)把有量纲表达式变为无量纲表达式, 有可能提高精度。一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)

    2)归一化后加快了梯度下降求最优解的速度。等高线变得显得圆滑,在梯度下降进行求解时能较快的收敛。如果不做归一化,梯度下降过程容易走之字,很难收敛甚至不能收敛

    哪些算法不需要归一化

    概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。而像Adaboost、GBDT、XGBoost、SVM、LR、KNN、KMeans之类的最优化问题就需要归一化。

    牛顿法与梯度下降法的比较
    从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。(牛顿法目光更加长远,所以少走弯路;相对而言,梯度下降法只考虑了局部的最优,没有全局思想。)

    牛顿法快于梯度下降法,且是梯度下降法的极限。

    什么是欠拟合,过拟合,如何防止过拟合

    泛化:模型对未知数据的预测能力

    欠拟合:在训练数据和未知数据上表现都差

    过拟合:在训练数据上表现好,在未知数据上表现差

    过拟合问题的根本原因:特征数目过多,解决办法有2个

    1. 减少特征维度; 可以人工选择保留的特征,或者模型选择算法选择主要特征
    2. 正则化; 保留所有的特征,通过降低参数θ的值,来影响模型

     正则化可以用来解决过拟合问题:

    正则化

    正则化等价于结构风险最小化,就是在经验风险后面加上了表示模型复杂度的正则化项或惩罚项。

    正则化的作用是:选择经验风险和模型复杂度都较小的模型,减低模型复杂度,防止过拟合,提高泛化能力

    正则化中我们将保留所有的特征变量,但是会减小特征变量的数量级(参数数值的大小θ(j))。这个方法非常有效,当我们有很多特征变量时,其中每一个变量都能对预测产生一点影响比如我们有很多特征变量,其中每一个变量都是有用的,因此我们不希望把它们删掉,这就导致了正则化概念的发生。

    正则化是针对过拟合而提出的,以为在求解模型最优的是一般优化最小的经验风险,现在在该经验风险上加入模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个rate比率来权衡模型复杂度与以往经验风险的权重,如果模型复杂度越高,结构化的经验风险会越大,现在的目标就变为了结构经验风险的最优化,可以防止模型训练过度复杂,有效的降低过拟合的风险。

    线性回归中使用正则化:

    逻辑回归中使用正则化:

    使用L1L2正则化,为什么可以降低模型的复杂度?

    模型越复杂,越容易过拟合,这大家都知道,加上L1正则化给了模型的拉普拉斯先验,加上L2正则化给了模型的高斯先验。从参数的角度来看,L1得到稀疏解,去掉一部分特征降低模型复杂度。L2得到较小的参数,如果参数很大,样本稍微变动一点,值就有很大偏差,这当然不是我们想看到的,相当于降低每个特征的权重。

    L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。L1在特征选择时候非常有用,而L2就只是一种规则化而已。

    L1正则 对应的是加入1范数,同样可以防止过拟合。它会产生更稀疏的解,即会使得部分权重变为0,达到特征选择的效果。相当于加入了一个laplacean prior。

    L2正则 对应的是加入2范数,使得对权重进行衰减,从而达到惩罚损失函数的目的,防止模型过拟合。保留显著减小损失函数方向上的权重,而对于那些对函数值影响不大的权重使其衰减接近于0。

    范数

    L0范数是指向量中非0的元素的个数。

    L1范数是指向量中各个元素绝对值之和

    L2范数是指向量各元素的平方和然后求平方根

    为什么朴素贝叶斯如此“朴素”?

    因为我们的假设在现实数据中几乎不会出现的:我们假设特征之间是相互独立,也就是我们计算条件概率时可以简化成它的组件的条件概率乘积。

    什么是朴素贝叶斯定理,如何使用在机器学习中

    贝叶斯定理会根据一件事发生的先验知识告诉你它后验概率。数学上,它表示为:一个条件样本发生的真正率占真正率和假正率之和的比例,即:

    公式:

    特征向量的缺失值处理

    1. 缺失值较多.直接将该特征舍弃掉,否则可能反倒会带入较大的noise,对结果造成不良影响。
    2. 缺失值较少,其余的特征缺失值都在10%以内,我们可以采取很多的方式来处理:

    1) 把NaN直接作为一个特征,假设用0表示;

    2) 用均值填充;

    3) 用随机森林等算法预测填充

    集成学习

    组合的学习模型是基于合并弱的学习模型来创造一个强大的学习模型的想法。但是,只有当各模型之间没有相关性的时候组合起来后才比较强大

    分类与回归

    分类会产生离散的数值,使得数据严格的分为不同类。回归会得到连续的值,使你更好的区分独立点之间的区别。

    什么是深度学习

    深度学习是机器学习的一个子领域,它使用神经网络学习数据的表示,使用反向传播对大量未标注或半结构化的数据进行建模

    KNN与K-means有什么不同

    k-NN是一种监督学习算法,而k-means 是非监督的。这两种算法都需要计算样本之间的距离。knn算法需要事先已有标注好的数据,当你需要对未标注的数据进行分类时,统计它附近最近的k个样本,将其划分为样本数最多的类别中。k-means聚类只需要一些未分类的数据点和阀值,算法会逐渐将样本点进行分成族类。

    SVM

     

  • 相关阅读:
    分布式事务 小结
    分布式事务的CAP理论 与BASE理论
    乐观锁与悲观锁
    CentOS7中DHCP配置
    pandas 学习(2): pandas 数据结构之DataFrame
    pandas 学习(1): pandas 数据结构之Series
    NumPy 学习(3): 通用函数
    NumPy 学习(2): 数组的操作
    NumPy 学习(1): ndarrays
    在Windows宿主机中连接虚拟机中的Docker容器
  • 原文地址:https://www.cnblogs.com/Aaron12/p/9199289.html
Copyright © 2011-2022 走看看