统计学习方法 | 概论

news2024/12/23 13:51:32

一.简介

统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科

1.统计学习方法的步骤

得到一个有限的训练数据集合

确定学习模型的集合(模型)

确定模型选择的准则(策略)

实现求解最优模型的算法(算法)

通过学习方法选择最优模型

利用学习的最优模型对新数据进行预测或分析

2.统计学习方法的分类

基本分类:监督学习,无监督学习,强化学习

按模型分类:概率 / 非概率模型 ,线性 / 非线性模型,参数化 / 非参数化模型

按算法分类:在线学习,批量学习

按技巧分类:贝叶斯学习,核方法

3.监督学习

定义:指从标注数据中学习预测模型的机器学习问题,其本质是学习输入到输出的映射的统计规律

根据变量类型不同:

输入变量与输出变量均为连续变量的预测问题:回归问题

输出变量为有限个离散变量的预测问题:分类问题

输入变量与输出变量均为变量序列的预测问题:标注问题

4.无监督学习

定义:指从无标注数据中学习预测模型的机器学习问题,其本质是学习数据中的统计规律或潜在结构

二.统计学习方法的三要素

统计学习方法 = 模型 + 策略 + 算法

1.模型

假设空间:所有可能的条件概率分布或决策函数,用F表示

 

2.策略

3.算法

算法:如何求解最优模型的问题

若优化问题存在显式解析解,算法简易

通常不存在解析解,需要数值计算方法,比如梯度下降法

三.模型的评估与选择

过拟合:学习所得模型包含参数过多,出现对已知数据预测很好,但对未知数据预测很差的现象

四.正则化与交叉验证 

正则化:实现结构风险最小化策略

奥卡姆剃刀原理:在模型选择中,选择所有可能模型中,能很好解释已知数据并且十分简单的模型

数据充足的情况下,数据集分为:训练集,验证集,测试集

训练集(training set):用以训练模型

验证集(validation set):用以选择模型

测试集(test set):用以最终对学习方法的评估

数据不充足的情况下:

简单交叉验证:随机将数据分为两部分,即训练集和测试集

S折交叉验证:随机将数据分为S个互不相交,大小相同的子集,其中S-1个子集作为训练集,余下的子集作为测试集

留一交叉验证:S折交叉验证的特殊情形,S=N

五.泛化能力

1.泛化误差

2.泛化误差上界

定义

指泛化误差的概率上界。两种学习方法的优劣,通常通过它们的泛化误差上界进行比较

性质

样本容量的函数:当样本容量增加时,泛化上界趋于0

假设空间容量的函数:假设空间容量越大,模型就越难学,泛化误差上界就越大

考虑如下二分类问题

3.Hoeffding不等式

六.生成模型与判别模型 

1.生成模型

定义:由数据学习联合分布概率P(X,Y),然后求出P(Y|X)作为预测模型,即P(Y|X)=P(X,Y)/P(X)

例:朴素贝叶斯法,隐马尔可夫模型

注:输入和输出变量要求为随机变量

2.判别模型

定义:由数据直接学习决策函数f(X)或者条件概率分布P(Y|X)作为预测模型

例:k近邻法,感知机,决策树

注:不需要输入和输出变量均为随机变量

七.监督学习的应用 

1.分类问题

评价指标

分类准确率

方法

感知机,k近邻法,朴素贝叶斯,决策树,logistic回归

应用

银行业务,网络安全,图像处理,手写识别,互联网搜索

2.标注问题

方法

隐马尔可夫模型,条件随机场

应用

信息抽取,自然语言处理

3.回归问题

类型

按输入变量个数:一元回归,多元回归

按输入和输出变量之间关系:线性回归,非线性回归

损失函数

平方损失

应用

商务领域

八.Python实现

1.使用最小二乘法拟和曲线

# 目标函数
def real_func(x):
    return np.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

# 十个点
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):
    """
    M    为 多项式的次数
    """
    # 随机初始化多项式参数
    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=9
p_lsq_9 = fitting(M=9)

 

当M=9时,多项式曲线通过了每个数据点,但是造成了过拟合

2.正则化

regularization = 0.0001


def residuals_func_regularization(p, x, y):
    ret = fit_func(p, x) - y
    ret = np.append(ret,
                    np.sqrt(0.5 * regularization * np.square(p)))  # L2范数作为正则化项
    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()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python的安装与配置(图文教程)

安装Python 想要进行Python开发,首先需要下载和配置Python解释器。 下载Python 访问Python官网: https://www.python.org/点击downloads按钮,在下拉框中选择系统类型(windows/Mac OS/Linux等)选择下载最新版本的Python安装Python 双击下载好的Python…

五款几乎没人知道的小众软件,按需下载

分享是一种神奇的东西,它使快乐增大,它使悲伤减小,坚持分享一些好用的软件给大家。 1.开源分享工具——ShareX ShareX 是一款 Windows 上开源的截图、文件共享和生产力工具,它是一款功能非常强大的分享工具,只要是免…

【算法】可解释机器学习-ZFNet(Datawhale)

可解释机器学习-ZFNetZFNet算法介绍:AlexNet的提出使得大型卷积网络开始变得流行起来,但是人们对于CNN网络究竟为什么能表现这么好,以及怎么样能变得更好尚不清楚。 因此为了解决上述两个问题,ZFNet提出了一种可视化技术&#xff…

如何治理谐波问题?——有源滤波器

安科瑞 华楠 一、谐波的定义 任何一种周期性非正弦波形都可以看成是由若干种频率不同的正弦波合成的,其中频率为工频的波形我们称为基波,大于1 整数倍基波频率的正弦波分量称为谐波。 总谐波畸变由不同频率的分次谐波合成,各次谐波频率与基…

asp写的百度ocr识别文字-通用文字识别(高精度版)源码下载

今天接到一个客户需求,需要用ASP写一个百度OCR文字识别代码,他的程序都是用ASP写的,所以我们也需要用ASP给他实现百度OCR文字识别,我们在百度AI网站上启用了通用文字识别高精度版,利用高精度板来实现它的业务需求。在上…

【C++】泛型编程 _函数模板和类模板的基本使用

1.泛型编程 如何实现一个通用的交换函数?这在C语言中是无法实现的,但是C却可以。 C语言一次只能实现一个类型的交换: void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, …

计算机毕设Python+Vue学生信息管理系统 (程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

关于小程序订单中心页设置的公告

为进一步规范小程序交易生态、提升用户购物体验、满足用户在有交易的小程序中便捷查看订单信息的诉求,自2022年12月31日起,对于有“选择商品/服务-下单-支付”功能的小程序,需按照平台制定的规范,在小程序内设置订单中心页。 开发…

创建DataFrame()对象--Pandas

1. DataFrame DateFrame对象是Pandas最常用的数据结构,是由不同类型的列组成的二维数据表结构,类似于EXCEL表,语法格式如下: pandas.DataFrame(dataNone, indexNone, columnsNone, dtypeNone, copyNone)1.1 函数参数:data 参数…

计算机操作系统笔记总结:Part2 进程与线程

文章目录1 进程1.1 进程的概念、组成与特征1.2 进程的状态与转换1.3 进程的组织1.4 进程控制1.5 进程通信2 线程与多线程模型2.1 线程的概念2.2 线程的实现方式2.3 多线程模型2.4 线程的状态与转换3 处理机调度3.1 调度的三个层次3.2 进程的挂起态与七状态模型3.3 进程调度3.3.…

[附源码]Nodejs计算机毕业设计健身房预约平台Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

【浙工商期末报告】研一Python期末作业B题(思路分享+源代码分享+原报告分享)

目录:研一Python期末作业B题(思路分享)一、题目介绍1.1 A题1.2 B题二、B题思路讲解2.1 问题的引入2.2 不平衡数据集2.2.1 不平衡数据的实例2.2.2 不平衡数据集导致的问题2.2.3 不平衡数据集的主要处理方法2.2.4 不平衡(均衡&#…

数据结构实验大作业(将之前预测ACM获奖的模型搬到Vue和django上)

目录 前言 成品展示(UI写的确实有点糊弄,太懒了不想弄了) Vue部分 App.vue(中间感觉还行,不算难看) result组件: 路由: Django部分 view functionset(自己建的&am…

Java岗最全面试攻略,吃透这些技术栈Offer拿到手软

前言 我分享的这份 Java 后端开发面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 数据库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &数据结构与算法等 25 个专题技术点&#xff…

重学React之高阶函数(Higher Order Function)

高阶函数(Higher Order Function) “把函数传给一个函数,返回另一个函数”,就是高阶函数。 高阶函数是一个常见的函数,它接受其他函数作为参数,然后返回一个函数。听起来很绕,但是这是个很常见的模式,比如有一个ajax函数,可以传一个callback作为处理函数,然后调用的地…

设计模式原则 - 里氏替换原则(四)

一 背景: 里氏替换原则是针对继承的。介绍前先聊聊继承性的特点 继承优势 提高代码的复用性(每个子类有拥有父类的属性和方法)提高代码的可扩展性 继承劣势 继承是侵入性的(只要继承,就必须拥有父类的属性和方法&…

Linux中的Chrony时间同步服务

目录 一、时间同步 1.概念 2.时间同步在运维工作中的作用 3.时间同步完成方法 (1)NTP时间服务(centos 6 ) (2)Chrony时间服务 二、Chrony时间服务 1.Chrony介绍 2.Chrony的优点 三、Chrony安装 …

linux基础学习-基本命令

基本命令 拷贝和移动 tree[目录名]:以树状图列出文件目录结构 -d:只显示目录cp 源文件 目标文件:复制文件或者目录 -f:已存在的目标文件直接覆盖,不会提示-i:覆盖文件前提示-r:若给出的源文件是…

SQLMAP高级用法

目录 前言 一、语法 1.利用google浏览器进行批量扫描 2.针对http请求头进行扫描 3.写入shell的几种方法 4.挂代理的方式 二、演示 1.批量扫描谷歌代理 2.http请求ua扫描 3.写入shell(一) 4.写入shell(二) 三、小结 前…

[附源码]计算机毕业设计Python的花店售卖系统的设计与实现(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…