• LR和SVM等线性模型比较


    Logistic regression

    Sklearn中自带算法中两个特别的点:

    1. 梯度下降法实现相对简单,但是其收敛速度往往不尽人意。所以在sklearn中LR用到的是sag、saga(这两种是梯度下降法的改进)、liblinear、cg(共轭梯度法,最快的梯度下降法)和lbfgs(拟牛顿法的改进)
    2. 最大似然估计法没有考虑训练集以外的因素,很容易造成过拟合,为了解决过拟合问题,通过添加正则化项,控制模型的复杂程度。常用的有L1和L2正则化。

    优点

    1. 本身算法的计算代价不高,对时间和内存需求较小, 求解梯度的算法都非常成熟,整体需要的资源较小,所以适合简单的线性问题和在线推荐系统
    2. 使用梯度下降的优化算法可以用于在线算法实现和分布式系统
    3. LR对于数据中小噪声的鲁棒性很好,并且不会受到轻微的多重共线性的特别影响。

    缺点

    1. 本质是线性模型,模型准确性不高,对于复杂问题需要海量的数据。
    2. 容易受到严重的多重共线性特征影响,也就是说容易受到彼此相关性较高的特征的影响,使用时需要对数据进行相关性检测,处理掉耦合性较高的特征。
    3. 对于数值特征, 在海量数据下, 数值数据抖动非常大, 拟合困难,影响模型整体性能。所以比较适合离散特征

    常见的应用场景:

    LGB和LR的融合方案:有两种用法:1. 用离散特征训练树,用树的节点位置做特征 2. 建立非ID和ID树

    1. LGB适合处理连续数据,可以在模型内部将连续数据分桶,得到的离散特征具有良好的鲁棒性。LGB模型的predict_leaf_index可以直接输出样本在不同树上的位置,不同的位置表示不同的特征组合。基于树的方法避免人工特征的繁琐、低效率和低准确率。
    2. 商品ID或者广告ID数量庞大,如果直接训练树容易产生畸形树,所以只能是少量ID+大量特征或者大量ID+少量特征,保证整棵树的平衡有效。
      非ID树:针对所有广告,包括没有曝光的广告建立非ID树,利用大量广告本身的特征形成对长尾广告的预测
      ID树:针对不同的ID特征建立不同的ID树,以ID相关特征形成普通广告的预测。
      结合两种树的结果,精心调整不同树的权重,提高CTR的预估。
      关于ID树和非ID树的详细介绍,可以参考这篇文章

    QA

    • 为什么使用正则化?
        因为使用极大似然估计,模型会全力拟合数据,容易受到脏数据和异常点的影响
    • 为什么一般使用L2正则化?
        因为L2正则化只会使函数的某些参数缩小,降低这些参数的作用. 但是如果直接使用L1正则化会使参数直接为0, 会极大降低模型的效果. 所以一般我们选择更温和的L2正则化.
    • 为什么要使用集成的决策树模型,而不是单棵的决策树模型?
        一棵树的表达能力很弱,不足以表达多个有区分性的特征组合,多棵树的表达能力更强一些。可以更好的发现有效的特征和特征组合.
    • 除了GBDT+LR的方案,还有哪些思路可以挖掘有效的特征组合?
        类似地, 其他树+LR, 其他树+FM, 但是其他树+FM的效果在比赛中效果不好。
    • 通过GBDT映射得到的特征空间维度如何?
        GBDT树有多少个叶子节点,通过GBDT得到的特征空间就有多大。假设GBDT有n棵树,每颗树至少有m个叶子,得到的特征空间是大小是m*n,如果更多的树模型,特征空间将成指数上升。

    LR VS 最大熵模型

    最大熵原理:学习概率模型的时候,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型。简单粗暴的说:逻辑回归跟最大熵模型没有本质区别。逻辑回归是最大熵对应为二类时的特殊情况,也就是说,当逻辑回归扩展为多类别的时候,就是最大熵模型。


    SVM

    假设问题是二分类器,就是在特征空间中寻找使正类负类间隔最大的超平面的线性分类器。求解参数时用到了拉格朗日算法

    核函数

    1. 线性核 (K(x,x')=x^Tx') (sklearn的默认核函数)

    优点:因为线性核不需要额外的计算,所以速度很快,适合数据量较小的情况;
    缺点:因为只是简单的线性问题求解,所以只适合线性可分的数据分布;

    2. 高斯核 (K(x,x')=e^{(-frac{(x-x')^2}{gamma^2})})

    优点:适合线性不可分的情况,一般都能有好效果;只有一个grmma参数,非常好调整;适合特征<样本的情况。
    缺点:

    [k(x, z)=exp left(-frac{d(x, z)^{2}}{2 * sigma^{2}} ight)=exp left(-operatorname{gamma} cdot d(x, z)^{2} ight) Rightarrow operatorname{gamma}=frac{1}{2 cdot sigma^{2}} ]

    grmma和模型的关系,(gamma) 过大表示方差很小,数据整体分布又高又瘦,结果严重依赖支持向量,容易造成训练效果很好,但是测试效果很差的过拟合现象。同时如果过高维度,计算慢;(gamma) 选的很小,表示方差很小,造成整体效果很差。

    RBF核:分类结果非常依赖于参数。有很多人是通过训练数据的交叉验证来寻找合适的参数,不过这个过程比较耗时。我个人的体会是:使用libsvm,默认参数,RBF核比Linear核效果稍差。通过进行大量参数的尝试,一般能找到比linear核更好的效果。至于到底该采用哪种核,要根据具体问题,有的数据是线性可分的,有的不可分,需要多尝试不同核不同参数。如果特征的提取的好,包含的信息量足够大,很多问题都是线性可分的。当然,如果有足够的时间去寻找RBF核参数,应该能达到更好的效果。

    3.多项式核 (K(x,x')=(gammacdot x^Tx' + coef0)^{degree})

    优点:degree过大过拟合,过小没效果;时间快
    缺点:参数多

    4.sigmoid核 (K(x,x')=tanh(gammacdot x^Tx' + coef0))

    没有用过

    SMO算法

    只保留两个参数 -> 只保留一个参数 -> 求导 -> (new1+new2=old1+old2), (E(x_i)=f(x_i)-y_i) (v_j=sum_{j=3}^{N}{alpha_jy_jK(x_i,x_j)}) -> 式子整个只留下了(alpha_i)

    优点

    • SVM有多种核可以选择,在选对核函数的基础上,可以处理各种非线性问题,整体收益较高。
    • SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”
    • 强调支持向量样本,在一定程度上具有一定的鲁棒性
    • 支持不均衡数据的学习

    缺点

    • SVM算法对大规模训练样本时只能选择线性核,其他核函数耗时太长无法满足性能要求。但是线性核的准确率较低,无法满足准确性要求,所以只能运用在小规模机器学习问题上。
    • 用SVM解决多分类问题存在困难,经典的算法只给出了二分类的情况
  • 相关阅读:
    python爬虫 js逆向之取巧秒解webpack打包的加密参数
    程序员半夜泡奶粉,睡不着了
    擴展Membership建立中小型WEB權限框架(一)
    Gridview小技巧保存選擇狀態
    sql server 2005行列轉換
    一个简单的WEB流程图组件[demo]
    web效率14條規則(轉)
    常用javascript 表達式驗證[綜合轉載]
    SOA、反射+緩存
    数据表的设计原则(轉載)
  • 原文地址:https://www.cnblogs.com/x739400043/p/12382101.html
Copyright © 2020-2023  润新知