第一章 统计学习-运用正则式解决过拟合问题

统计学习方法概论

提示:统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行分析与预测的一门学科。
统计学习包括:监督学习、非监督学习、半监督学习和强化学习



前言

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、统计学习方法三要素是什么?

模型、策略、算法,对理解统计学习方法起到提纲挈领的作用。

二、使用最小二乘法拟合曲线

1.拟合函数

代码如下(示例):我们用目标函数y=sin2Πx,加上一个正态分布的噪音干扰,用多项式去拟合

import numpy as np
import scipy as sp
from scipy.optimize import leastsq
import matplotlib.pyplot as plt
%matplotlib inline
# 目标函数
def real_funx(x):
	return bp.sin(2*np.pi*x)

# 多项式
def fit_func(p,x):
    f = np.poly1d(p)
    return f(x)
# 残差
def residuals_func(p,x,y):
    ret = fit_func(p,x)-y
    return ret

2.使用最小二乘法

代码如下(示例):此时L2范数(残差平方和)最小,h(x)和y相似度最高,更拟合
在这里插入图片描述

# 十个点
x = np.linspace(0,1,10)
x_points = np.linspace(0,1,1000)
# 加上正态分布噪音的目标函数的值
y_ = real_func(x)
y = [np.random.normal(0,0.1)+y1 for y1 in y_]

def fitting(M=0):
    # 随机初始化多项式参数
    p_init = np.random.rand(M+1)
    # 最小二乘法
    p_lsq = leastsq(residuals_func,p_init,args=(x,y))
    print('Fitting Parameters:',p_lsq[0])
    # 可视化
    plt.plot(x_points,real_func(x_points),label='real')
    plt.plot(x_points,fit_func(p_lsq[0],x_points),label='fitted curve')
    plt.plot(x,y,'bo',label='noise')
    plt.legend()
    return p_lsq

M为多项式的系数


3.在M不同条件下的结果

# M=0
p_lsq_1 = fitting(M=0)

在这里插入图片描述

p_lsq_9 = fitting(M=9)
#  Fitting Parameters: [-5.40825170e+03  2.78585706e+04 -6.00342111e+04  7.05196117e+04
#-4.92893560e+04  2.09650946e+04 -5.27104706e+03  6.88987412e+02
# -2.92533545e+01  4.05436782e-02]

在这里插入图片描述
当参数过多时,出现了过拟合现象

4.正则化

结果显示过拟合,引入正则化项,降低过拟合在这里插入图片描述

# 正则化,引入正则化项(regularizer),降低过拟合

regularization = 0.0001

def residuals_func_regularization(p,x,y):
    ret = fit_func(x,y)
    ret = np.append(ret,0.5*regularization*np.sqrt(np.square(p)))
    return ret

# 最小二乘法+正则式
p_init = np.random.rand(9+1)
p_lsq_regularization = leastsq(residuals_func_regularization,p_init,args=(x,y))

plt.plot(x_points,real_func(x_points),label='real')
plt.plot(x_points,fit_func(p_lsq_9[0],x_points),label='fitted curve')
plt.plot(x_points,fit_func(p_lsq_regularization[0],x_points),label='regularization')
plt.plot(x,y,'bo',label='noise')
plt.legend()

在这里插入图片描述

总结

在监督式学习中,主要是构建一个模型进行学习,给定输入预测相应的输出,当进行模型选择或者说提高学习的泛化能力是一个重要问题。如果只考虑减少训练误差,就可能产生过拟合现象。模型选择的方法有正则化与交叉验证。学习方法泛化能力的分析是统计学习理论研究的重要课题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值