精华内容
下载资源
问答
  • 作为SVR模型优劣评价参数.ppt
  • 基于SVR模型的河流流量预报,张浩,,中长期水文预报在研究流域水文规律、水资源合理配置等方面具有重要的意义,本文研究了统计学习理论以及支持向量机学习方法,并将
  • 【SVR预测】基于混沌灰狼优化支持向量机回归预测SVR模型matlab源码.md
  • 支持向量机回归预测,包括模型的建立和保存
  • 基于PSO-SVR模型的温室智能补光系统研究.pdf
  • SVR模型完成对Boston房价的回归预测

    千次阅读 热门讨论 2020-06-03 20:29:31
    SVR模型完成对Boston房价的回归预测 文章目录用SVR模型完成对Boston房价的回归预测实验说明实验代码参数优化 实验说明 实验要求:使用SVR模型实现对波士顿房价的预测 (load_boston),并使用r2-score 对回归结果...

    用SVR模型完成对Boston房价的回归预测

    实验说明

    实验要求:使用SVR模型实现对波士顿房价的预测 (load_boston),并使用r2-score 对回归结果评测。

    • 实验环境:Pycharm
    • Python版本:3.6
    • 需要的第三方库:sklearn

    实验代码

    同样地,这里 SVR 模型采用的是高斯核函数 kernel=‘rbf’,惩罚系数 C=1,epsilon=0.2。

    我们采用以下四项指标来进行评价:

    • 平均绝对误差 MAE
    • 均方误差 MSE
    • 解释方差分 EVS
    • R2得分 R2_Score

    有关 SVR 模型的参数以及如何选择, 可以参考这篇博客 sklearn.svm.SVR的参数介绍

    from sklearn.datasets import load_boston
    from sklearn.svm import SVR
    from sklearn.preprocessing import StandardScaler
    from sklearn.metrics import mean_absolute_error,mean_squared_error,explained_variance_score,r2_score
    from sklearn.model_selection import train_test_split
    import numpy as np
    #加载数据集
    boston=load_boston()
    x=boston.data
    y=boston.target
    
    # 拆分数据集
    x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=10)
    # 预处理
    y_train = np.array(y_train).reshape(-1, 1)
    y_test = np.array(y_test).reshape(-1, 1)
    x_train = StandardScaler().fit_transform(x_train)
    x_test = StandardScaler().fit_transform(x_test)
    y_train = StandardScaler().fit_transform(y_train).ravel()
    y_test = StandardScaler().fit_transform(y_test).ravel()
    
    #创建svR实例
    svr=SVR(C=1, kernel='rbf', epsilon=0.2)
    svr=svr.fit(x_train,y_train)
    #预测
    svr_predict=svr.predict(x_test)
    #评价结果
    mae = mean_absolute_error(y_test, svr_predict)
    mse = mean_squared_error(y_test, svr_predict)
    evs = explained_variance_score(y_test, svr_predict)
    r2 = r2_score(y_test, svr_predict)
    print("MAE:", mae)
    print("MSE:", mse)
    print("EVS:", evs)
    print("R2:", r2)
    

    从结果中可以看到,R2得分还是比较可以的,达到了 0.80。
    m1

    参数优化

    同理,我们继续采用网格参数搜索的方式,核函数依然选择高斯核函数,我们针对 惩罚系数 C 和核函数系数 gamma ,以及 epsilon 进行调参。

    from sklearn.datasets import load_boston
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler
    from sklearn.model_selection import GridSearchCV
    from sklearn.svm import SVR
    from sklearn.metrics import mean_absolute_error, mean_squared_error, explained_variance_score, r2_score
    import numpy as np
    
    # 加载数据集
    boston_data = load_boston()
    # print(boston_data)
    
    # 拆分数据集
    x = boston_data.data
    y = boston_data.target
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=10)
    # 预处理
    y_train = np.array(y_train).reshape(-1, 1)
    y_test = np.array(y_test).reshape(-1, 1)
    x_train = StandardScaler().fit_transform(x_train)
    x_test = StandardScaler().fit_transform(x_test)
    y_train = StandardScaler().fit_transform(y_train).ravel()
    y_test = StandardScaler().fit_transform(y_test).ravel()
    
    # 设置超参数
    C = [0.1, 0.2, 0.5, 0.8, 0.9, 1, 2, 5, 10]
    kernel = 'rbf'
    gamma = [0.001, 0.01, 0.1, 0.2, 0.5, 0.8]
    epsilon = [0.01, 0.05, 0.1, 0.2, 0.5, 0.8]
    # 参数字典
    params_dict = {
        'C': C,
        'gamma': gamma,
        'epsilon': epsilon
    }
    
    # 创建SVR实例
    svr = SVR()
    
    # 网格参数搜索
    gsCV = GridSearchCV(
        estimator=svr,
        param_grid=params_dict,
        n_jobs=2,
        scoring='r2',
        cv=6
    )
    gsCV.fit(x_train, y_train)
    # 输出参数信息
    print("最佳度量值:", gsCV.best_score_)
    print("最佳参数:", gsCV.best_params_)
    print("最佳模型:", gsCV.best_estimator_)
    
    # 用最佳参数生成模型
    svr = SVR(C=gsCV.best_params_['C'], kernel=kernel, gamma=gsCV.best_params_['gamma'],
              epsilon=gsCV.best_params_['epsilon'])
    
    # 获取在训练集的模型
    svr.fit(x_train, y_train)
    
    # 预测结果
    svr_predict = svr.predict(x_test)
    
    # 模型评测
    mae = mean_absolute_error(y_test, svr_predict)
    mse = mean_squared_error(y_test, svr_predict)
    evs = explained_variance_score(y_test, svr_predict)
    r2 = r2_score(y_test, svr_predict)
    print("MAE:", mae)
    print("MSE:", mse)
    print("EVS:", evs)
    print("R2:", r2)
    

    从结果上可以看出,调优的参数还是起了一点作用,R2得分变为了 0.84。
    m2

    展开全文
  • 本文介绍了python 支持向量机非线性回归SVR模型,废话不多说,具体如下: import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model,svm from sklearn.model_selection ...
  • 采用FCM聚类与改进SVR模型的窃电行为检测.pdf
  • SVR模型&python应用

    千次阅读 2020-03-25 22:00:58
    1. SVR模型 在SVM分类模型中,我们的目标函数是让12∣∣w∣∣2\cfrac{1}{2}||w||^221​∣∣w∣∣2最小,同时让各个训练集中的点尽量远离自己类别一边的的支持向量,即yi(w⋅ϕ(xi)+b)≥1y_i(w \cdot \phi(x_i )+ b) ...

    1. SVR模型

    SVR应用链接,处理波士顿房价预测问题
    在SVM分类模型中,我们的目标函数是让 1 2 ∣ ∣ w ∣ ∣ 2 \cfrac{1}{2}||w||^2 21w2最小,同时让各个训练集中的点尽量远离自己类别一边的的支持向量,即 y i ( w ⋅ ϕ ( x i ) + b ) ≥ 1 y_i(w \cdot \phi(x_i )+ b) \geq 1 yi(wϕ(xi)+b)1。若加入一个松弛变量 ξ i ≥ 0 \xi_i \geq 0 ξi0,则目标函数为:
    1 2 ∣ ∣ w ∣ ∣ 2 2 + C ∑ i = 1 m ξ i (式1) \frac{1}{2}||w||_2^2 +C\sum\limits_{i=1}^{m}\xi_i\tag{式1} 21w22+Ci=1mξi(1)
    约束条件为:
    y i ( w ⋅ ϕ ( x i ) + b ) ≥ 1 − ξ i (式2) y_i(w \cdot \phi(x_i ) + b ) \geq 1 - \xi_i\tag{式2} yi(wϕ(xi)+b)1ξi(2)
    现在用于回归模型,优化目标函数可以继续和SVM分类模型保持一致为 1 2 ∣ ∣ w ∣ ∣ 2 2 \frac{1}{2}||w||_2^2 21w22,但是约束条件不可能是让各个训练集中的点尽量远离自己类别一边的的支持向量,因为我们是回归模型,没有类别。对于回归模型,我们的目标是让训练集中的每个点 ( x i , y i ) (x_i,y_i) (xi,yi),尽量拟合到一个线性模型 y i ≈ w ⋅ ϕ ( x i ) + b y_i \approx{ w \cdot \phi(x_i ) +b } yiwϕ(xi)+b。一般的回归模型,使用均方差作为损失函数,但是SVR不是这样定义损失函数的。

    SVR需要定义一个常量 ϵ > 0 \epsilon>0 ϵ>0,对于某一个点 ( x i , y i ) (x_i,y_i) (xi,yi),如果 ∣ y i − w ⋅ ϕ ( x i ) − b ∣ ≤ ϵ |y_i - w \cdot\phi(x_i ) -b| \leq \epsilon yiwϕ(xi)bϵ,则没有损失,如果 ∣ y i − w ⋅ ϕ ( x i ) − b ∣ > ϵ |y_i - w \cdot \phi(x_i ) -b| >\epsilon yiwϕ(xi)b>ϵ,则对应的损失为 ∣ y i − w ⋅ ϕ ( x i ) − b ∣ − ϵ |y_i - w \cdot \phi(x_i ) -b| - \epsilon yiwϕ(xi)bϵ,这和均方差损失函数不同,如果是均方差,那么只要 y i − w ⋅ ϕ ( x i ) − b ≠ 0 y_i - w \cdot\phi(x_i ) -b \neq{0} yiwϕ(xi)b=0,那么就会有损失。
    如图所示,在条带里面的点都是没有损失的,但是外面的点的是有损失的:
    在这里插入图片描述
    这样一来我们的SVR模型的损失函数度量为:
    e r r ( x i , y i ) = { 0 ∣ y i − w ⋅ ϕ ( x i ) − b ∣ ≤ ϵ ∣ y i − w ⋅ ϕ ( x i ) − b ∣ − ϵ ∣ y i − w ⋅ ϕ ( x i ) − b ∣ > ϵ (式3) err(x_i,y_i) = \begin{cases}{ 0\qquad\qquad\qquad\qquad\qquad\quad|y_i - w \cdot \phi(x_i ) -b| \leq\epsilon}\\ |y_i - w \cdot \phi(x_i ) -b| - \epsilon\qquad {|y_i - w \cdot \phi(x_i ) -b|>\epsilon} \tag{式3} \end{cases} err(xi,yi)={0yiwϕ(xi)bϵyiwϕ(xi)bϵyiwϕ(xi)b>ϵ(3)

    2. SVR模型目标函数的原始形式

    定义目标函数如下:
    m i n 1 2 ∣ ∣ w ∣ ∣ 2 2 s . t ∣ y i − w ⋅ ϕ ( x i ) − b ∣ ≤ ϵ ( i = 1 , 2 , . . . m ) (式4) \begin{aligned} &min\quad \cfrac{1}{2}||w||_2^2\\ &s.t \qquad |y_i - w \cdot \phi(x_i ) -b| \leq \epsilon(i =1,2,...m) \end{aligned}\tag{式4} min21w22s.tyiwϕ(xi)bϵ(i=1,2,...m)(4)
    和SVM模型相似,SVR模型也可以对每个样本 ( x i , y i ) (x_i,y_i) (xi,yi)加入松弛变量 ξ i ≥ 0 \xi_i \geq 0 ξi0, 但是由于我们这里用的是绝对值,实际上是两个不等式,也就是说两边都需要松弛变量,定义为 ξ i ∨ , ξ i ∧ \xi_i^{\lor}, \xi_i^{\land} ξi,ξi, 则SVR模型的损失函数度量在加入松弛变量之后变为:
    m i n 1 2 ∣ ∣ w ∣ ∣ 2 2 + C ∑ i = 1 m ( ξ i ∨ + ξ i ∧ ) s . t . − ϵ − ξ i ∨ ≤ y i − w ⋅ ϕ ( x i ) − b ≤ ϵ + ξ i ∧ ξ i ∨ ≥ 0 , ξ i ∧ ≥ 0 ( i = 1 , 2 , . . . , m ) (式5) \begin{aligned} min\quad &\cfrac{1}{2}||w||_2^2 + C\sum_{i=1}^{m}(\xi_i^{\lor}+ \xi_i^{\land}) \\ &s.t. \quad -\epsilon - \xi_i^{\lor} \leq {y_i - w \cdot \phi(x_i ) -b }\leq\epsilon +\xi_i^{\land}\\ &\xi_i^{\lor} \geq 0, \quad\xi_i^{\land} \geq 0 (i = 1,2,..., m) \end{aligned}\tag{式5} min21w22+Ci=1m(ξi+ξi)s.t.ϵξiyiwϕ(xi)bϵ+ξiξi0,ξi0(i=1,2,...,m)(5)
    依然和SVM分类模型相似,用拉格朗日函数将目标优化函数变成无约束的形式,如下:
    L ( w , b , α ∨ , α ∧ , ξ i ∨ , ξ i ∧ , μ ∨ , μ ∧ ) = 1 2 ∣ ∣ w ∣ ∣ 2 2 + C ∑ i = 1 m ( ξ i ∨ + ξ i ∧ ) + ∑ i = 1 m α ∨ ( − ϵ − ξ i ∨ − y i + w ⋅ ϕ ( x i ) + b ) + ∑ i = 1 m α ∧ ( y i − w ⋅ ϕ ( x i ) − b − ϵ − ξ i ∧ ) − ∑ i = 1 m μ ∨ ξ i ∨ − ∑ i = 1 m μ ∧ ξ i ∧ (式6) \begin{aligned} L(w,b,\alpha^{\lor}, \alpha^{\land},\xi_i^{\lor}, \xi_i^{\land}, \mu^{\lor},\mu^{\land}) &= \frac{1}{2}||w||_2^2 + C\sum_{i=1}^{m}(\xi_i^{\lor}+ \xi_i^{\land}) + \sum_{i=1}^{m}\alpha^{\lor}(-\epsilon - \xi_i^{\lor} -y_i +w \cdot\phi(x_i) + b) +\\ &\sum_{i=1}^{m} \alpha^{\land}(y_i -w \cdot \phi(x_i ) - b -\epsilon -\xi_i^{\land}) -\sum_{i=1}^{m}\mu^{\lor}\xi_i^{\lor} -\sum_{i=1}^{m}\mu^{\land}\xi_i^{\land} \end{aligned}\tag{式6} L(w,b,α,α,ξi,ξi,μ,μ)=21w22+Ci=1m(ξi+ξi)+i=1mα(ϵξiyi+wϕ(xi)+b)+i=1mα(yiwϕ(xi)bϵξi)i=1mμξii=1mμξi(6)
    其中 μ ∨ ≥ 0 , μ ∧ ≥ 0 , α i ∨ ≥ 0 , α i ∧ ≥ 0 \mu^{\lor} \geq 0, \mu^{\land}\geq 0, \alpha_i^{\lor} \geq 0, \alpha_i^{\land}\geq 0 μ0,μ0,αi0,αi0,均为拉格朗日乘子。

    3. SVR模型的目标函数的对偶形式

    根据SVR模型的目标函数的原始形式,我们的目标是:
    min ⁡ ( w , b , ξ i ∨ , ξ i ∧ ) max ⁡ ( μ ∨ ≥ 0 , μ ∧ ≥ 0 , α i ∨ ≥ 0 , α i ∧ ≥ 0 ) L ( w , b , α ∨ , α ∧ , ξ i ∨ , ξ i ∧ , μ ∨ , μ ∧ ) (式7) \min({w,b,\xi_i^{\lor}, \xi_i^{\land}})\qquad \max({\mu^{\lor}\geq 0, \mu^{\land}\geq 0,\alpha_i^{\lor}\geq 0,\alpha_i^{\land}\geq 0})\quad L(w,b,\alpha^{\lor}, \alpha^{\land},\xi_i^{\lor}, \xi_i^{\land}, \mu^{\lor},\mu^{\land})\tag{式7} min(w,b,ξi,ξi)max(μ0,μ0,αi0,αi0)L(w,b,α,α,ξi,ξi,μ,μ)(7)
    和SVM分类模型一样,这个优化目标也满足KKT条件,也就是说,我们可以通过拉格朗日将优化问题转化为等价的对偶问题来求解如下:
    max ⁡ ( μ ∨ ≥ 0 , μ ∧ ≥ 0 , α i ∨ ≥ 0 , α i ∧ ≥ 0 ) min ⁡ ( w , b , ξ i ∨ , ξ i ∧ ) L ( w , b , α ∨ , α ∧ , ξ i ∨ , ξ i ∧ , μ ∨ , μ ∧ ) (式8) \max({\mu^{\lor}\geq 0, \mu^{\land}\geq 0,\alpha_i^{\lor}\geq 0,\alpha_i^{\land}\geq 0})\qquad\min({w,b,\xi_i^{\lor}, \xi_i^{\land}})\qquad \quad L(w,b,\alpha^{\lor}, \alpha^{\land},\xi_i^{\lor}, \xi_i^{\land}, \mu^{\lor},\mu^{\land})\tag{式8} max(μ0,μ0,αi0,αi0)min(w,b,ξi,ξi)L(w,b,α,α,ξi,ξi,μ,μ)(8)    
    可以先求优化函数对于 w , b , ξ i ∨ , ξ i ∧ w,b,\xi_i^{\lor}, \xi_i^{\land} w,b,ξi,ξi的极小值, 接着再求拉格朗日乘子 α ∨ , α ∧ , μ ∨ μ ∧ \alpha^{\lor}, \alpha^{\land}, \mu^{\lor}\mu^{\land} α,α,μμ的极大值。
    首先我们来求优化函数对于 w , b , ξ i ∨ , ξ i ∧ w,b,\xi_i^{\lor}, \xi_i^{\land} w,b,ξi,ξi的极小值。
    这个可以通过求偏导数求得:
    ∂ L ∂ w = 0 ⇒ w = ∑ i = 1 m ( α i ∧ − α i ∨ ) ϕ ( x i ) (式9) \frac{\partial L}{\partial w} = 0 \Rightarrow w = \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor})\phi(x_i)\tag{式9} wL=0w=i=1m(αiαi)ϕ(xi)(9)
    ∂ L ∂ b = 0 ⇒ ∑ i = 1 m ( α i ∧ − α i ∨ ) = 0 (式10) \frac{\partial L}{\partial b} = 0 \Rightarrow \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor}) = 0\tag{式10} bL=0i=1m(αiαi)=0(10)
    ∂ L ∂ ξ i ∨ = 0 ⇒ C − α ∨ − μ ∨ = 0 (式11) \frac{\partial L}{\partial \xi_i^{\lor}} = 0 \Rightarrow C-\alpha^{\lor}-\mu^{\lor} = 0 \tag{式11} ξiL=0Cαμ=0(11)
    ∂ L ∂ ξ i ∧ = 0 ⇒ C − α ∧ μ ∧ = 0 (式12) \frac{\partial L}{\partial \xi_i^{\land}} = 0 \Rightarrow C-\alpha^{\land}\mu^{\land} = 0\tag{式12} ξiL=0Cαμ=0(12)   
    好了,把上面4个式子带入 L ( w , b , α ∨ , α ∧ , ξ i ∨ , ξ i ∧ , μ ∨ , μ ∧ ) L(w,b,\alpha^{\lor},\alpha^{\land},\xi_i^{\lor}, \xi_i^{\land}, \mu^{\lor},\mu^{\land}) L(w,b,α,α,ξi,ξi,μ,μ)消去 w , b , ξ i ∨ , ξ i ∧ w,b,\xi_i^{\lor}, \xi_i^{\land} w,b,ξi,ξi了。
    最终得到的对偶形式为:
    m a x ⏟ α ∨ , α ∧ − ∑ i = 1 m ( ϵ − y i ) α i ∧ + ( ϵ + y i ) α i ∨ ) − 1 2 ∑ i = 1 , j = 1 m ( α i ∧ − α i ∨ ) ( α j ∧ − α j ∨ ) K i j s . t . ∑ i = 1 m ( α i ∧ − α i ∨ ) = 0 0 < α i ∨ < C    ( i = 1 , 2 , . . . m ) 0 < α i ∧ < C ( i = 1 , 2 , . . . m (式13) \begin{aligned} \underbrace{ max }_{\alpha^{\lor}, \alpha^{\land}} -\sum\limits_{i=1}^{m}(\epsilon-y_i)\alpha_i^{\land}&+ (\epsilon+y_i)\alpha_i^{\lor}) - \frac{1}{2}\sum\limits_{i=1,j=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor})(\alpha_j^{\land} -\alpha_j^{\lor})K_{ij} \\ &s.t. \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor}) = 0\\ &0<\alpha_i^{\lor} <C \; (i =1,2,...m)\\ &0<\alpha_i^{\land} <C (i =1,2,...m\tag{式13} \end{aligned} α,α maxi=1m(ϵyi)αi+(ϵ+yi)αi)21i=1,j=1m(αiαi)(αjαj)Kijs.t.i=1m(αiαi)=00<αi<C(i=1,2,...m)0<αi<C(i=1,2,...m(13)

    取负号求最小值可以得到和SVM分类模型类似的求极小值的目标函数如下:
    m i n ⏟ α ∨ , α ∧ 1 2 ∑ i = 1 , j = 1 m ( α i ∧ − α i ∨ ) ( α j ∧ − α j ∨ ) K i j + ∑ i = 1 m ( ϵ − y i ) α i ∧ + ( ϵ + y i ) α i ∨ s . t . ∑ i = 1 m ( α i ∧ − α i ∨ ) = 0 0 < α i ∨ < C ( i = 1 , 2 , . . . m ) 0 < α i ∧ < C ( i = 1 , 2 , . . . m ) (式14) \underbrace{ min}_{\alpha^{\lor}, \alpha^{\land}}\frac{1}{2}\sum\limits_{i=1,j=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor})(\alpha_j^{\land} -\alpha_j^{\lor})K_{ij} + \sum\limits_{i=1}^{m}(\epsilon-y_i)\alpha_i^{\land}+ (\epsilon+y_i)\alpha_i^{\lor} \\ s.t. \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor}) = 0\\ 0 < \alpha_i^{\lor} <C (i =1,2,...m)\\ 0<\alpha_i^{\land} <C (i =1,2,...m)\tag{式14} α,α min21i=1,j=1m(αiαi)(αjαj)Kij+i=1m(ϵyi)αi+(ϵ+yi)αis.t.i=1m(αiαi)=00<αi<C(i=1,2,...m)0<αi<C(i=1,2,...m)(14)
    对于此目标函数,可以用SMO算法来求出对应的 α ∨ , α ∧ \alpha^{\lor}, \alpha^{\land} α,α,进而求出我们的回归模型系数 w , b w, b w,b

    4.SVR模型系数的稀疏性

    在SVM分类模型中,我们的KKT条件的对偶互补条件为: α i ∗ ( y i ( w ⋅ ϕ ( x i ) + b ) − 1 + ξ i ∗ ) = 0 \alpha_{i}^{*}(y_i(w \cdot \phi(x_i) + b) - 1+\xi_i^{*}) = 0 αi(yi(wϕ(xi)+b)1+ξi)=0,而在回归模型中,我们的对偶互补条件类似如下:
    α i ∨ ( ϵ + ξ i ∨ + y i − w ⋅ ϕ ( x i ) − b ) = 0 (式15) \alpha_i^{\lor}(\epsilon + \xi_i^{\lor} + y_i - w \cdot \phi(x_i ) - b) = 0 \tag{式15} αi(ϵ+ξi+yiwϕ(xi)b)=0(15)
    α i ∧ ( ϵ + ξ i ∧ − y i + w ⋅ ϕ ( x i ) + b ) = 0 (式16) \alpha_i^{\land}(\epsilon + \xi_i^{\land} -y_i + w \cdot \phi(x_i ) + b) = 0\tag{式16} αi(ϵ+ξiyi+wϕ(xi)+b)=0(16)
    根据松弛变量定义条件,如果 ∣ y i − w ⋅ ϕ ( x i ) − b ∣ < ϵ |y_i - w \cdot \phi(x_i ) -b| <\epsilon yiwϕ(xi)b<ϵ,我们有 ξ i ∨ = 0 , ξ i ∧ = 0 \xi_i^{\lor} = 0, \xi_i^{\land}= 0 ξi=0,ξi=0,此时 ϵ + ξ i ∨ + y i − w ⋅ ϕ ( x i ) − b ≠ 0 , ϵ + ξ i ∧ − y i + w ⋅ ϕ ( x i ) + b ≠ 0 \epsilon + \xi_i^{\lor} + y_i - w \cdot \phi(x_i ) - b \neq 0, \epsilon + \xi_i^{\land} -y_i + w \cdot \phi(x_i ) + b \neq 0 ϵ+ξi+yiwϕ(xi)b=0,ϵ+ξiyi+wϕ(xi)+b=0这样要满足对偶互补条件,只有 α i ∨ = 0 , α i ∧ = 0 \alpha_i^{\lor} = 0, \alpha_i^{\land} = 0 αi=0,αi=0。定义样本系数系数
    β i = α i ∧ − α i ∨ (式17) \beta_i =\alpha_i^{\land}-\alpha_i^{\lor} \tag{式17} βi=αiαi(17)
    根据上面 w w w的计算式 w = ∑ i = 1 m ( α i ∧ − α i ∨ ) ϕ ( x i ) w = \sum_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor})\phi(x_i) w=i=1m(αiαi)ϕ(xi),发现此时 β i = 0 \beta_i = 0 βi=0,也就是说 w w w不受这些在误差范围内的点的影响。对于在边界上或者在边界外的点, α i ∨ ≠ 0 , α i ∧ ≠ 0 \alpha_i^{\lor} \neq 0, \alpha_i^{\land} \neq 0 αi=0,αi=0,此时 β i ≠ 0 \beta_i \neq 0 βi=0
    推导参考链接

    5. SVM 算法小结

    SVM算法是一个很优秀的算法,在集成学习和神经网络之类的算法没有表现出优越性能前,SVM基本占据了分类模型的统治地位。目前则是在大数据时代的大样本背景下,SVM由于其在大样本时超级大的计算量,热度有所下降,但是仍然是一个常用的机器学习算法。SVM算法的主要优点有:

    • (1)高维特征的分类问题和回归问题很有效,在特征维度大于样本数时依然有很好的效果。
    • (2) 仅仅使用一部分支持向量来做超平面的决策,无需依赖全部数据。
    • (3) 有大量的核函数可以使用,从而可以很灵活的来解决各种非线性的分类回归问题。
    • (4)样本量不是海量数据的时候,分类准确率高,泛化能力强。
      SVM算法的主要缺点有:
    • (1) 如果特征维度远远大于样本数,则SVM表现一般。
    • (2) SVM在样本量非常大,核函数映射维度非常高时,计算量过大,不太适合使用。
    • (3)非线性问题的核函数的选择没有通用标准,难以选择一个合适的核函数。
    • (4)SVM对缺失数据敏感。

    6.SVR模型应用

    使用SVR处理波士顿房价预测问题
    链接:https://blog.csdn.net/AIHUBEI/article/details/105105688

    展开全文
  • 基于地图信息和循环SVR模型的纯电动汽车续驶里程预测.pdf
  • 针对非线性多输入多输出(MIMO)系统的黑箱辨识问题,提出...将多输出SVR模型应用于非线性MIMO系统的辨识,仿真结果表明,该模型克服了传统支持向量回归机必须为每个输出单独建模这一缺陷,并能提升系统的整体辨识能力.
  • 旅游客流量具有明显的非线性和季节性特征,所以采取季节调整方法对样本数据进行预处理,...结果显示:季节调整的PSO-SVR模型预测精度明显高于SVR、季节调整的SVR和PSO-SVR模型,该模型是进行旅游客流量预测的有效工具。
  • 行业分类-物理装置-一种基于SVR模型预测的环形RGV小车调度方法.zip
  • 在文件svr_test.m中运行示例SVR_SMO 使用 SMO 求解器创建 SVR 模型向量x(mx1),y(mx1)对应于y = f(x)的点集是x个实数值的实函数。 SMO求解器使用常数C,tol(公差),eps(ε),T(最大Iter)。 的选择内核以...
  • Sklearn SVR模型实践

    千次阅读 2019-10-28 14:27:01
    读取数据,划分训练测试数据集,生成模型实例(SVR),预测,计算其loss值。 训练数据集拟合data与label之间的关系。 代码示例如下所示: 导入相应的库函数 # from sklearn.model_selection import train_test_...

    线性回归模型:

    流程:

    读取数据,划分训练测试数据集,生成模型实例(SVR),预测,计算其loss值。

    训练数据集拟合data与label之间的关系。

    代码示例如下所示:

    导入相应的库函数

    # from sklearn.model_selection import train_test_split
    # from sklearn.preprocessing import StandardScaler
    from sklearn.svm import SVR
    from sklearn.metrics import mean_squared_error, mean_absolute_error
    import numpy as np
    import json

    读取数据、划分数据集等操作

    train_data = json.load(open('./train_file_name'))
    X = np.asarray(train_data)
    #label data
    test_data = json.load(open('test_file_name'))
    y = np.asarray(test_data)
    def mape(y_ture,y_label):
        return np.mean(np.abs((y_true - y_label) / y_label))
    
    x_train = x[:10000,:]
    x_test = x[10000:,:]
    y_train = y[:10000]
    y_test = y[10000:]
    
    linear_svr = SVR(kernel='linear')
    linear_svr.fit(x_train,y_train)
    linear_predict = linear_svr.predict(x_test)
    #calculate the different criterion
    mape(linear_predict,y_test)
    mean_squared_error(linear_predict,y_test)
    mean_absolute_error(linear_predict,y_test)

     

    展开全文
  • 参数的优化选择对支持向量回归机的预测精度和泛化能力影响显著, 鉴于此, 提出一种多智能体粒子群算法(MAPSO) 寻优其参数的方法, 并建立MAPSO支持向量回归模型, 用于非线性系统的模型预测控制, 推导出最优控制率....
  • (系列笔记)13.SVR模型

    万次阅读 多人点赞 2019-03-13 22:13:01
    SVR——一种“宽容的回归模型” 严格的线性回归 线性回归:在向量空间里用线性函数去拟合样本。该模型以所有样本实际位置到该线性函数的综合距离为损失,通过最小化损失来求取线性函数的参数。对于线性回归而言,一...

    SVR——一种“宽容的回归模型”

    严格的线性回归

    线性回归:在向量空间里用线性函数去拟合样本。该模型以所有样本实际位置到该线性函数的综合距离为损失,通过最小化损失来求取线性函数的参数。对于线性回归而言,一个样本只要不算正好落在作为模型的线性函数上,就要被计算损失。

    宽容的支持向量回归(SVR)

    介绍一种“宽容的”回归模型:支持向量回归(Support Vector Regression,SVR)

    模型函数

    支持向量回归模型的模型函数也是一个线性函数: y = w x + b y=wx+b y=wx+b但是和线性回归是两个不同的回归模型!
    不同点在于:计算损失的原则不同,目标函数和最优化算法也不同

    原理

    SVR在线性函数两侧制造了一个“间隔带”,对于所有落入到间隔带内的样本,都不计算损失;只有间隔带之外的,才计入损失函数。之后再通过最小化间隔带的宽度与总损失来最优化模型。如下图这样,只有那些圈了红圈的样本(或在隔离带边缘之外,或落在隔离带边缘上),才被计入最后的损失:
    在这里插入图片描述

    SVR的两个松弛变量

    有一点和SVM是正好相反的:SVR希望样本点都落在“隔离带”内,而SVM希望样本点都在“隔离带”外。这导致SVR要同时引入两个松弛变量: ξ \xi ξ ξ ∗ \xi^* ξ
    SVR的基本情况
    上图显示了SVR的基本情况:

    1. f ( x ) = w x + b f(x)=wx+b f(x)=wx+b是我们最终要求得的模型函数;
    2. w x + b + ϵ wx+b+\epsilon wx+b+ϵ w x + b − ϵ wx+b-\epsilon wx+bϵ(也就是 f ( x ) + ϵ f(x)+\epsilon f(x)+ϵ f ( x ) − ϵ f(x)-\epsilon f(x)ϵ)是隔离带的上下边缘;
    3. ξ ∗ \xi^* ξ是隔离带下边缘之下样本点,到隔离带下边缘上的投影,与该样本点 y y y值的差。

    公式表述:
    在这里插入图片描述
    对于任意样本 x i x_i xi,如果它在隔离带里面或者隔离带边缘上,则 ξ \xi ξ ξ ∗ \xi^* ξ都为0;如果它在隔离带上边缘上方,则 ξ &gt; 0 \xi&gt;0 ξ>0 , ξ ∗ \xi^* ξ=0;如果它在隔离带下边缘下方,则 ξ = 0 \xi=0 ξ=0 , ξ ∗ 0 \xi^*0 ξ0

    SVR的主问题和对偶问题

    SVR主问题的数学描述

    在这里插入图片描述

    SVR的拉格朗日函数和对偶问题

    我们针对上述主问题引入拉格朗日乘子:
    在这里插入图片描述
    构建拉格朗日函数:
    在这里插入图片描述
    它对应的对偶问题是:
    在这里插入图片描述

    求解SVR对偶问题

    按照前面讲的方法,首先要求最小化部分:
    在这里插入图片描述
    然后分别对 w , b , ξ i , ξ i ∗ w,b,\xi_i,\xi_i^* w,b,ξiξi求偏导,并令偏导为0:
    在这里插入图片描述

    用SMO算法求解SVR

    使用SMO算法前,还需将 α i \alpha_i αi α i ∗ \alpha_i^* αi转化为一个参数,因为SMO算法针对的是任意样本 x i x_i xi只对应一个参数 α i \alpha_i αi的情况。

    过程采用拉格朗日对偶法,对偶问题有解的充要条件是满足KKT条件,对于SVR的对偶问题,其KKT条件如下:
    在这里插入图片描述
    由KKT条件可见,当且仅当 f ( x i ) − y i − ϵ − ξ i = 0 f(x_i)-y_i-\epsilon-\xi_i=0 f(xi)yiϵξi=0时, α i \alpha_i αi才可以取非0值,当且仅当
    y i − f ( x i ) − ϵ − ξ i ∗ = 0 y_i-f(x_i)-\epsilon-\xi_i^*=0 yif(xi)ϵξi=0 α i ∗ \alpha_i^* αi才可以取非0值。

    f ( x i ) − y i − ϵ − ξ i = 0 = &gt; y i = f ( x i ) − ϵ − ξ i f(x_i)-y_i-\epsilon-\xi_i=0=&gt;y_i=f(x_i)-\epsilon-\xi_i f(xi)yiϵξi=0=>yi=f(xi)ϵξi对应的是在隔离带下边缘以下的样本;
    y i − f ( x i ) − ϵ − ξ i ∗ = 0 = &gt; y i = f ( x i ) + ϵ + ξ i ∗ y_i-f(x_i)-\epsilon-\xi_i^*=0=&gt;y_i=f(x_i)+\epsilon+\xi_i^* yif(xi)ϵξi=0=>yi=f(xi)+ϵ+ξi对应的是在隔离带上边缘以上的样本。

    一个样本不可能同时在上边缘上和上边缘下,所以这两个等式只有体格而成立,所以相应的 α i \alpha_i αi α i ∗ \alpha_i^* αi中至少有一个为0。

    假设: λ i = α i − α i ∗ \lambda_i=\alpha_i-\alpha_i^* λi=αiαi
    既然 α i \alpha_i αi α i ∗ \alpha_i^* αi中至少有一个为0,且 0 &lt; = α i , α i ∗ , &lt; = C 0&lt;=\alpha_i,\alpha_i^*,&lt;=C 0<=αi,αi,<=C,于是: ∣ λ i ∣ = α i + α i ∗ |\lambda_i|=\alpha_i+\alpha_i^* λi=αi+αi
    λ i \lambda_i λi ∣ λ i ∣ |\lambda_i| λi代入对偶问题,则有:
    在这里插入图片描述
    如此一来,即可以用SMO求解了(这个推导过程仅仅用于说明SMO也可以应用于SVR,具体的求解过程和SVM的SMO算法还是有所差异的)

    支持向量与求解线性模型参数

    因为 f ( x ) = w x + b f(x)=wx+b f(x)=wx+b,以及前面求出的 w = ∑ i = 1 m ( α i ∗ − α i ) x i w=\sum_{i=1}^{m}{(\alpha_i^*-\alpha_i)x_i} w=i=1m(αiαi)xi,因此:
    在这里插入图片描述
    由此可见,只有满足 α i ∗ − α i = ̸ 0 \alpha_i^*-\alpha_i=\not 0 αiαi≠0的样本才对 w w w取值有意义,才是SVR的支持向量。也就上,当样本满足下列条件之一时,才是支持向量:
    在这里插入图片描述
    换言之,这个样本要么在隔离带上边缘以上,要么在隔离带下边缘以下(含两个边缘本身),也就是说,落在 ϵ − \epsilon- ϵ隔离带之外的样本,才是SVR的支持向量。
    可见,无论是SVM还是SVR,它们的解都仅限于支持向量,即只是全部训练样本的一部分,因此SVM和SVR的解都具有稀疏性。

    通过最优化方法求解出了 w w w之后,我们还需要求b。
    f ( x i ) = w x i + b = &gt; b = f ( x i ) − w x i f(x_i)=wx_i+b=&gt;b=f(x_i)-wx_i f(xi)=wxi+b=>b=f(xi)wxi,而且对于那些落在隔离带边缘上的支持向量,有 f ( x i ) = y i + ϵ f(x_i)=y_i+\epsilon f(xi)=yi+ϵ,落在隔离带下边缘上的支持变量有 f ( x i ) = y i − ϵ f(x_i)=y_i-\epsilon f(xi)=yiϵ。因此,
    在这里插入图片描述
    其中 S u S_u Su是位于隔离带上边缘的支持向量集合,而 S d S_d Sd则是位于隔离带下边缘的支持向量集合。

    SVR的核技巧

    前面讲过的适用于SVM的核技巧也同样适用于SVR。SVR 核技巧的实施办法和 SVM 一样,也是将输入空间的 x x x通过映射函数 ϕ ( x ) \phi(x) ϕ(x)映射到更高维度的特征空间,然后再在特征空间内做本文前述的一系列操作。

    因此,在特征空间中的线性模型为: f ( x ) = w ϕ ( x ) + b f(x)=w\phi(x)+b f(x)=wϕ(x)+b
    其中:
    在这里插入图片描述
    对照SVM核函数的做法,我们也令:
    在这里插入图片描述
    具体核技巧的实施过程,对照SVM即可。

    展开全文
  • 本文介绍了python 支持向量机非线性回归SVR模型,废话不多说,具体如下:import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasets, linear_model,svmfrom sklearn.model_selection import ...
  • 贴一个自动生成数据,SVR进行数据拟合的代码,附带网格搜索(GridSearch, 帮助你选择合适的参数)以及模型保存、读取以及结果绘制。 from sklearn.svm import SVR from sklearn.externals import joblib from ...
  • 支持向量机线性回归SVR模型 def test_LinearSVR(* data): X_train,X_test,y_train,y_test = data regr = svm.LinearSVR() regr.fit(X_train,y_train) print ( ' Coefficients:%s, intercept %s ' % (regr....
  • 支持向量机非线性回归SVR模型 def test_SVR_linear(* data): X_train,X_test,y_train,y_test = data regr =svm.SVR(kernel= ' linear ' ) regr.fit(X_train,y_train) print ( ' Coefficients:%s, intercept ...
  • def test_SVR_poly(*data):'''测试 多项式核的 SVR 的预测性能随 degree、gamma、coef0 的影响.'''X_train,X_test,y_train,y_test=datafig=plt.figure()### 测试 degree ####degrees=range(1,20)train_scores=[]test...
  • 本文主要总结了解决非线性回归问题的机器学习方法,其中...回归树模型和SVR模型侧重于结构风险最小化,对异常值数据更不敏感,回归树模型可通过剪枝和压缩的方式去降低过拟合的风险,SVR模型具有较好的区间内鲁棒能力。
  • 该改进的组合预测模型把具有较好连续空间非线性寻优性能的磷虾群算法用于SVR模型的参数优化过程,对原始数据进行预测,然后用ARMA模型对SVR模型产生的线性残差进行预测,将两部分的预测值几何相加得到最终预测值。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,507
精华内容 3,002
关键字:

svr模型