也有些正则方法可以限制回归算法输出结果中系数的影响,其中最常用的两种正则方法是套索回归和岭回归。
套索回归和岭回归算法跟常规线性回归算法极其相似,有一点不同的是,在公式中增加正则项来限制斜率(或者净斜率)。这样做的主要原因是限制特征对因变量的影响,通过增加一个依赖斜率一个的损失函数实现。
对于套索回归算法,在损失函数上增加一项:斜率一个的某个给定倍数。我们使用TensorFlow的逻辑操作,但没有这些操作相关的梯度,而是使用阶跃函数的连续估计,也称作连续阶跃函数,其会在截止点跳跃扩大。一会就可以看到如何使用套索回归算法。
对于岭回归算法,增加一个L2范数,即斜率系数的L2正则。
#套索和岭回归 #套索回归和岭回归 # #这个函数显示了如何使用TensorFlow解决套索或 #岭回归的 # y=Ax + b # #我们将使用虹膜数据,特别是: # y=花萼长度 # x=花瓣宽度 #进口所需的库 进口matplotlib。pyplot作为plt 导入系统 进口numpy np 进口tensorflow特遣部队 从sklearn导入数据集 从tensorflow.python.framework进口操作 #指定“脊”或“套索” regression_type=疤姿鳌? #清除旧图 ops.reset_default_graph () #创建图 税=tf.Session () ### #虹膜数据加载 ### #虹膜。data=https://www.yisu.com/zixun/[(花萼长度,萼片宽,花瓣长度,花瓣宽度)) 虹膜=datasets.load_iris () x_vals=np。阵列([x [3] x iris.data)) y_vals=np。数组([y y iris.data] [0]) ### #模型参数 ### #申报批大小 batch_size=50 #初始化占位符 x_data=特遣部队。占位符(=[没有,1],形状dtype=tf.float32) y_target=特遣部队。占位符(=[没有,1],形状dtype=tf.float32) #让结果重现性好 种子=13 np.random.seed(种子) tf.set_random_seed(种子) #创建变量线性回归 一个=tf.Variable (tf.random_normal(形状=[1])) b=tf.Variable (tf.random_normal(形状=[1])) #申报模式操作 model_output=tf.add (tf。matmul (x_data), b) ### #损失函数 ### #选择合适的基于损失函数的alt="用TensorFlow实现套索回归和岭回归算法的示例”>,
通过在标准线性回归估计的基础上,增加一个连续的阶跃函数,实现套索回归算法。由于阶跃函数的坡度,我们需要注意步长,因为太大的步长会导致最终不收敛。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
用TensorFlow实现套索回归和岭回归算法的示例