Kernel ridge regression(KRR)
作者:桂。
时间:2017-05-23 15:52:51
链接:http://www.cnblogs.com/xingshansi/p/6895710.html
一、理论描述
Kernel ridge regression (KRR)是对Ridge regression的扩展,看一下Ridge回归的准则函数:

求解

一些文章利用矩阵求逆,其实求逆只是表达方便,也可以直接计算。看一下KRR的理论推导,注意到

左乘
,并右乘
,得到

利用Ridge回归中的最优解

对于xxT的形式可以利用kernel的思想:

可以看出只需要计算内积就可以,关于核函数的选择以及特性,参考另一篇文章。
先来验证一下理论的正确性,用MATLAB仿真一下:
clc;clear all;close all;
x = [-5:.1:5]';
y = 0.1*x.^3 + 0.3*x.^2 + randn(length(x),1);
subplot (2,2,1)
plot(x,y,'k');hold on;
title('原数据')
subplot (2,2,2)
w1 = inv(x'*x)*x'*y; %lsqr
plot(x,y,'k');hold on;
plot(x,w1*x,'r--');
title('最小二乘')
subplot (2,2,3)
w2 = inv(x'*x+0.5)*x'*y; %ridge lambda = 0.5
plot(x,y,'k');hold on;
plot(x,w2*x,'r--');
title('Ridge 回归')
subplot (2,2,4)
K = (1+x*x').^3;%kernel ridge regression ,lambda = 0.5
z = K*pinv(K + 0.5)*y;
plot(x,y,'k');hold on;
plot(x,z,'r--');
title('Kernel Ridge 回归')
结果图中可以看出,kernel 起到了效果:

二、Sklearn基本基本操作
基本用法(采用交叉验证):
kr = GridSearchCV(KernelRidge(kernel='rbf', gamma=0.1), cv=5,
param_grid={"alpha": [1e0, 0.1, 1e-2, 1e-3],
"gamma": np.logspace(-2, 2, 5)})
kr.fit(X[:train_size], y[:train_size])
y_kr = kr.predict(X_plot)
应用实例:
from __future__ import division
import time import numpy as np
from sklearn.model_selection import GridSearchCV
from sklearn.kernel_ridge import KernelRidge
import matplotlib.pyplot as plt rng = np.random.RandomState(0) #############################################################################
# Generate sample data
X = 5 * rng.rand(10000, 1)
y = np.sin(X).ravel() # Add noise to targets
y[::5] += 3 * (0.5 - rng.rand(int(X.shape[0]/5))) X_plot = np.linspace(0, 5, 100000)[:, None] #############################################################################
# Fit regression model
train_size = 100 kr = GridSearchCV(KernelRidge(kernel='rbf', gamma=0.1), cv=5,
param_grid={"alpha": [1e0, 0.1, 1e-2, 1e-3],
"gamma": np.logspace(-2, 2, 5)}) t0 = time.time()
kr.fit(X[:train_size], y[:train_size])
kr_fit = time.time() - t0
print("KRR complexity and bandwidth selected and model fitted in %.3f s"
% kr_fit) t0 = time.time()
y_kr = kr.predict(X_plot)
kr_predict = time.time() - t0
print("KRR prediction for %d inputs in %.3f s"
% (X_plot.shape[0], kr_predict)) #############################################################################
# look at the results
plt.scatter(X[:100], y[:100], c='k', label='data', zorder=1)
plt.hold('on')
plt.plot(X_plot, y_kr, c='g',
label='KRR (fit: %.3fs, predict: %.3fs)' % (kr_fit, kr_predict))
plt.xlabel('data')
plt.ylabel('target')
plt.title('Kernel Ridge')
plt.legend()

参考
- http://scikit-learn.org/stable/modules/generated/sklearn.kernel_ridge.KernelRidge.html#sklearn.kernel_ridge.KernelRidge
Kernel ridge regression(KRR)的更多相关文章
- Probabilistic SVM 与 Kernel Logistic Regression(KLR)
本篇讲的是SVM与logistic regression的关系. (一) SVM算法概论 首先我们从头梳理一下SVM(一般情况下,SVM指的是soft-margin SVM)这个算法. 这个算法要实现 ...
- support vector regression与 kernel ridge regression
前一篇,我们将SVM与logistic regression联系起来,这一次我们将SVM与ridge regression(之前的linear regression)联系起来. (一)kernel r ...
- 机器学习方法:回归(三):最小角回归Least Angle Regression(LARS),forward stagewise selection
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 希望与志同道合的朋友一起交流,我刚刚设立了了一个技术交流QQ群:433250724,欢迎对算法.技术.应用感 ...
- 【转】Robust regression(稳健回归)
Robust regression(稳健回归) 语法 b=robustfit(X,y) b=robustfit(X,y,wfun,tune) b=robustfit(X,y,wfun,tune,con ...
- ufldl学习笔记与编程作业:Linear Regression(线性回归)
ufldl学习笔记与编程作业:Linear Regression(线性回归) ufldl出了新教程,感觉比之前的好.从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听一些 ...
- NNs(Neural Networks,神经网络)和Polynomial Regression(多项式回归)等价性之思考,以及深度模型可解释性原理研究与案例
1. Main Point 0x1:行文框架 第二章:我们会分别介绍NNs神经网络和PR多项式回归各自的定义和应用场景. 第三章:讨论NNs和PR在数学公式上的等价性,NNs和PR是两个等价的理论方法 ...
- Linux kernel启动选项(参数)(转)
Linux kernel启动选项(参数) 转载链接https://www.cnblogs.com/linuxbo/p/4286227.html 在Linux中,给kernel传递参数以控制其行为总共 ...
- Linear Regression(一)——
Linear Regression(一)-- 机器学习 回归 定义 回归的定义 在平面上存在这些点我希望能用一条直线尽可能经过它们. 于是我们画了下面的一条直线 这样的过程就叫做回归. 这个过程中我们 ...
- 机器学习技法笔记:Homework #6 AdaBoost&Kernel Ridge Regression相关习题
原文地址:http://www.jianshu.com/p/9bf9e2add795 AdaBoost 问题描述 程序实现 # coding:utf-8 import math import nump ...
随机推荐
- 让linux history命令显示命令的运行时间、在哪个机器运行的这个命令
1.在/etc/profile的最后加入例如以下部分: USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g ...
- linux 环境下git 命令小结
转载自:http://blog.chinaunix.net/uid-28241959-id-3880025.html 本地建立仓库 先创建个文件夹,仓库的地点: mkdir cangkumkdir C ...
- [转载] 无所不能的“蚂蚁”--Ant
说他无所不能,好像有点夸张,但是用过Ant之后,感觉真的是只有想不到没有作不到.Ant,原作者选择他作为软件名字的意思是指"令一个简洁的工具"(Another Neat Tool) ...
- 【mybatis】mysql级联更新两个表或多张表的数据
例如 info表和relation表有关联,现在要在一个sql语句中同时级联更新两张表的数据 update security_code_info info LEFT JOIN security_cod ...
- crm使用soap分配记录
//样例 function demo() { //操作记录的id var targetId = "A8A46444-BA10-E411-8A04-00155D002F02&q ...
- LTE试题
D 如果出现eNB的告警1018007“小区退服,光口不可用”,不可能是以下哪种原因造成的?( ) 基带板上Ir接口光模块损坏 基带板上Ir接口光模块被拔出 基带板上Ir接口光模块型 ...
- Ubuntu12.04 挂载exFat格式U盘的方法(转)
原文链接:Ubuntu12.04 挂载exFat格式U盘的方法 首先关于exFAT ,这里就不多作解释了, 再介绍一个软件fuse-exfat, https://code.google.com ...
- Linux 查看当前时间和修改系统时间
一.查看和修改Linux的时区 1. 查看当前时区 命令: date -R 2. 修改设置Linux服务器时区 方法 A 命令 : tzselect 方法 B 仅限于RedHat Linux 和 Ce ...
- [AngularJS] Angular1.3 ngAria - 1
Accessibility is an often overlooked essential feature of a web application. a11y Is a critical comp ...
- 将应用发布到WasLiberty的两种方法
1.直接将War放到defaultserver(或其它自定义server)的dropin目录. 一放进去,war中的app就会随着server启动起来,这个war是会被解压的,用find / -nam ...