zoukankan      html  css  js  c++  java
  • 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})
    使用要点:可以指定只要交叉特征
    使用场景:做推荐算法比赛时常用到这个函数,省去人工交叉特征的麻烦。

  • 相关阅读:
    最大子数组求和并进行条件组合覆盖测试
    Ubuntu 16.04 c++ Google框架单元测试
    The directory '/home/stone/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If execu
    Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi'
    个人博客作业三:微软小娜APP的案例分析
    补交 作业一
    补交 作业二:个人博客作业内容:需求分析
    嵌入式软件设计第12次实验报告
    嵌入式软件设计第11次实验报告
    嵌入式软件设计第10次实验报告
  • 原文地址:https://www.cnblogs.com/x739400043/p/12378430.html
Copyright © 2011-2022 走看看