美文网首页
机器学习——多元自适应回归样条

机器学习——多元自适应回归样条

作者: Bioinfor生信云 | 来源:发表于2024-03-20 09:21 被阅读0次

    什么是多元自适应回归样条

    "多元自适应回归样条"(Multivariate Adaptive Regression Splines,简称MARS)是一种用于建模和预测的非线性回归方法。MARS基于样条函数的概念,可以自适应回归到数据中的非线性关系。

    1. 多元(Multivariate): 表示MARS可以处理多个自变量(特征)的情况。这使得MARS能够应对包含多个输入变量的复杂数据集。

    2. 自适应回归(Adaptive Regression): MARS能够自动地适应数据中的非线性关系。与线性回归模型不同,MARS可以在模型中引入非线性的拟合,从而更好地捕捉数据中的模式。

    3. 样条(Splines): 样条是一种数学函数,它在定义域的不同区间上有不同的形式。在MARS中,样条用于拟合数据中的非线性部分。MARS模型通过组合多个小段的样条来适应整个数据集。

    MARS的基本思想是通过构建一系列基函数来逼近输入特征的非线性关系,然后通过组合这些基函数来形成最终的模型。在建模过程中,MARS会选择哪些基函数要素,以及它们的位置,以最好地适应数据。

    基本思想

    • 多项式函数的形式如下:


    • 写成求和的形式:



    # one knot
    mars1 <- mda::mars(df$x, df$y, nk = 3, prune = FALSE)
    p1 <- df %>%
      mutate(predicted = as.vector(mars1$fitted.values)) %>%
      ggplot(aes(x, y)) +
      geom_point(size = 1, alpha = .2) +
      geom_line(aes(y = predicted), size = 1, color = "blue") +
      ggtitle("(A) One knot")
    
    # two knots
    mars2 <- mda::mars(df$x, df$y, nk = 5, prune = FALSE)
    p2 <- df %>%
      mutate(predicted = as.vector(mars2$fitted.values)) %>%
      ggplot(aes(x, y)) +
      geom_point(size = 1, alpha = .2) +
      geom_line(aes(y = predicted), size = 1, color = "blue") +
      ggtitle("(B) Two knots")
    
    mars3 <- mda::mars(df$x, df$y, nk = 7, prune = FALSE)
    p3 <- df %>%
      mutate(predicted = as.vector(mars3$fitted.values)) %>%
      ggplot(aes(x, y)) +
      geom_point(size = 1, alpha = .2) +
      geom_line(aes(y = predicted), size = 1, color = "blue") +
      ggtitle("(C) Three knots")
    
    mars4 <- mda::mars(df$x, df$y, nk = 9, prune = FALSE)
    p4 <- df %>%
      mutate(predicted = as.vector(mars4$fitted.values)) %>%
      ggplot(aes(x, y)) +
      geom_point(size = 1, alpha = .2) +
      geom_line(aes(y = predicted), size = 1, color = "blue") +
      ggtitle("(D) Four knots")
    
    

    拟合基本MARS 模型

    我们可以使用R包(earth)拟合直接引擎MARS 模型。

    # 拟合基本 MARS 模型
    mars1 <- earth(
      Sale_Price ~ .,  
      data = ames_train   
    )
    
    # 打印模型摘要
    print(mars1)
    summary(mars1) %>% .$coefficients %>% head(10)
    plot(mars1, which = 1)
    # Fit a basic MARS model
    mars2 <- earth(
      Sale_Price ~ .,  
      data = ames_train,
      degree = 2
    )
    
    

    参数调整

    有两个与我们的MARS 模型相关的重要调整参数:最大交互程度和保留在最终模型中的项数。

    最大交互程度

    在MARS(Multivariate Adaptive Regression Splines)中,"最大交互程度"通常是指模型中允许的最大交互阶数。MARS模型中的基本构建块是一阶基函数(一次项)和二阶基函数(二次项)。这些基函数可以用于捕捉输入特征之间的线性和二次交互关系。

    最大交互程度的概念影响模型对特征之间关系的建模能力。具体来说,如果最大交互程度被设定为1,那么模型将只考虑一阶基函数,即线性关系。如果最大交互程度被设定为2,那么模型将同时考虑一阶和二阶基函数,可以捕捉到特征之间的线性和二次交互关系。

    举个例子,考虑两个特征x1和x2。如果最大交互程度为1,模型可能包括类似于x1和x2的一阶基函数。如果最大交互程度为2,模型还可能包括类似于x1*x2的二阶基函数,表示x1和x2的交互关系。

    在实际使用中,通过调整最大交互程度,可以在灵活性和模型复杂度之间进行权衡。增加最大交互程度可以更好地适应数据中的非线性关系,但也可能导致过拟合,特别是在数据量较小的情况下。因此,选择最大交互程度需要根据具体问题和数据集进行调整。

    最终模型中的项数

    在MARS(Multivariate Adaptive Regression Splines)中,最终模型中的项数是指构建模型时所使用的基函数的总数量。这些基函数可以是线性项或非线性项,是通过对数据进行逐步回归过程中动态添加的。

    MARS的模型构建过程中,通过逐步添加和删除基函数,逐渐形成一个适应数据的复杂模型。每个基函数都对应于数据中的一个局部结构或关系。在这个过程中,模型的复杂性由添加的基函数数量来衡量。

    模型中的项数反映了模型的灵活性和复杂性。更多的项数意味着模型可以更灵活地适应训练数据,但也可能导致过度拟合(overfitting),即模型在训练数据上表现很好,但在新数据上的泛化能力较差。

    一般来说,为了避免过度拟合,可以使用一些模型选择的方法,如交叉验证,来选择适当数量的基函数。这样可以在模型复杂性和泛化性能之间取得平衡,得到更好的模型。

    有需要学习机器学习的朋友欢迎交流

    相关文章

      网友评论

          本文标题:机器学习——多元自适应回归样条

          本文链接:https://www.haomeiwen.com/subject/hwdindtx.html