• Sklearn线性模型概述


    在各类比赛中经常出现预测回归问题,一般使用scikit-learn的模型,本文就对这些类库的使用做一个总结,总结时注重自己做比赛中的使用经验。

    1. Ordinary Least Squares(最小二乘法)

    最简单的线性模型,损失函数是平方差损失,常用梯度下降法求解参数。
    使用要点:这个模型不像其他模型都配有CV交叉验证,所以需要我们自己选择是算法自己默认参数还是Grid寻找最优参数。
    使用场景:模型容易受到异常点影响,性能无法保证,适合当做最基础的线性模型。

    2. Ridge regression and classification(岭回归)

    在最小二乘法的基础加入L2正则化,使大量参数权重变小。
    使用要点:惩罚系数alpha默认是1,需要自己调节alpha参数;可以做分类问题,分类时只有正类和负类,输出的是概率,类似Logistic算法
    使用场景:如果普通的线性函数效果不好的话,可以试试这个函数。Ridge函数可以特征之间存在相关性时保持稳定性和可靠性。但是因为需要自己指定参数,所以通常换成RidgeCV函数。关于稳定性和可靠性的分析在博客中有详细的解释。

    3. Lasso(拉索算法)

    在最小二乘法的基础上加入L1正则化,使大量参数为0,使用坐标下降法迭代求解参数。
    使用要点:惩罚系数alpha和Ridge默认系数一样,需要自己调节参数;没有提供分类问题的解决方案。
    使用场景:因为会使大量的特征失去作用,所以很少在比赛和科研中使用。同时网上也说可以做特征选择,但是通常会使留下的特征数量太少,所以也很少作为特征选择算法。

    4. Multi-task Lasso(多任务学习拉索算法)

    输入标签的形式是(n_samples,target), 使用同一批数据联合训练多个Lasso回归器。和Lasso唯一的区别是输入y不同。
    基本没有用到过,在网上也没有查到资料。

    5. Elastic-Net(弹性神经网络)

    函数形式:$$min {w} frac{1}{2 n{ ext {samples }}}|X w-y|{2}^{2}+alpha ho|w|{1}+frac{alpha(1- ho)}{2}|w|_{2}^{2}$$
    在线性函数中同时加入L1正则化和L2正则化,用参数alpha调节,如果alpha=1表示Lasso算法,如果alpha=0,表示Ridge算法。继承了Ridge在循环下的稳定性
    使用要点:需要自己调节参数,可以用Elastic_CV函数自动搜索最优参数。
    使用场景:在比赛过程中,相比Lasso和Ridge过多和过少的参数,Elastic算法往往能取得良好的效果。

    6. Multi-task Elastic-Net(多任务的弹性神经网络)

    MultiTaskElasticNet类和MultiTaskLasso类的模型是相同的。区别在于损失函数不同。具体没有使用过。

    7. Least Angle Regression(角回归算法)

    前向选择回归是按照投影和残差的方向走,前向梯度回归是按照最接近的变量方向走,最小角回归是按照新特征和原来特征的角平分线方向走,保留前向梯度的精确行,优化前行梯度一步一步迭代的过程。简介博客, 公式推导博客
    使用要点:计算速度前向选择算法一样;样本的噪声极为敏感
    使用场景:适合高维数据回归。

    8. LARS Lasso(角回归拉索算法)

    相关的理论较深,先放篇博客,以后在看

    9. Orthogonal Matching Pursuit(匹配追踪算法)

    MP算法是稀疏表征中用于稀疏求解的最基本方法之一.OMP是正交匹配追踪算法。每次用内积找到和残差最接近的向量作为贡献最大的向量,直到没有特征或者参数小于阈值。具体讲解可参考文章
    使用场景:适合稀疏回归问题。

    10. Bayesian Regression(贝叶斯回归)

    用训练数据得到似然函数likelihood,再加上一个先验分布prior,利用贝叶斯公式得到一个后验分布posterior。对于一个新的测试数据x,用之前得到的posterior作为权重在整个参数空间里计算一个加权积分,得到一个预测分布。贝叶斯回归对数据有自适应能力,可以重复的利用实验数据,并防止过拟合。
    使用要点:得到的参数接近0。
    使用场景:确定数据分布的情况,贝叶斯回归更能取得良好的效果。

    11. Logistic regression(逻辑斯蒂回归)

    将线性回归算法的结果放入sigmoid函数实现分类功能,如果输出大于0.5,结果被分为正类,如果输出小于0.5,结果被分为负类。
    使用要点:LR只能做分类问题!!默认的正则化项时L2,多分类的策略是OVR,求解参数算法:liblinear,sag,saga,newton-cg,lbfs算法。其中liblinear适合小数据,sag和saga适合大数据,sag和saga需要数据归一化。liblinear算法适合两类分类问题,其他优化算法适合多类分类问题。
    使用场景:做比赛预测广告点击次数,次数是正整数和0,LR算法把次数当作是类别,整体当作回归问题预测结果。预测的结果类别和训练数据的类别完全一致。这样做只能取得一般的效果。作为完全的分类问题模型,LR的效果不如SVM的分类效果。

    12. Stochastic Gradient Descent - (随机梯度下降算法)

    只在神经网络算法中用到过

    13. Perceptron(感知机)

    感觉用感知机不如直接使用神经网络,哪怕只有一层的神经网络效果也比感知机强。

    14. Passive Aggressive Algorithms(被动攻击算法)

    Passive Aggressive Algorithms指代一系列大规模在线学习算法。可以解决分类和回归问题。具体推导参考github
    使用场景:大规模流式在线学习

    15. Robustness regression: outliers and modeling errors(稳健回归算法)

    和一般回归分析方法相比,鲁棒回归(Robust Regression)不容易受离群值(outlier)和错误点(Error point)的影响。
    常用有两种文件回归算法:RANSAC随机采样一致性算法和Theil-Sen Regression泰尔森回归算法。
    使用场景:适合有异常数据的回归问题

    16. Polynomial regression: extending linear models with basis functions

    算法计算不同特征的组合的结果,比如只有两个特征(X_1)(X_2),组合交叉形成(X_1,X_2,X_1X_2,X_2X_1,X_1^{2},X^{2}_{1})
    使用要点:可以指定只要交叉特征
    使用场景:做推荐算法比赛时常用到这个函数,省去人工交叉特征的麻烦。

  • 相关阅读:
    为什么要使用 npm?
    scrapy框架使用.Request使用meta传递数据,以及deepcopy的使用,这种三层for循环,就会有deepcopy的问题,
    scrapy download delay, CONCURRENT_REQUESTS
    分布式爬虫部署,爬虫需要什么样的服务器配置,现在爬虫岗位都要会这个
    爬虫的难点不在爬虫,而在对抗
    scrapy框架使用-下载视频,使用you-get模块来下载视频
    scrapy框架使用-爬虫中间件
    4-06python语法基础-内置模块-urllib模块,以及第三方模块requests的使用,cookie字典生成式,切url的末尾字符串
    scrapy框架使用-下载图片,使用urllib,使用requests,使用imagepipeline,
    4-05python语法基础-内置模块-json模块
  • 原文地址:https://www.cnblogs.com/x739400043/p/12378430.html
Copyright © 2020-2023  润新知