统计学习及监督学习概论

文章目录

    • 1. 统计学习
    • 2. 统计学习分类
      • 2.1 基本分类
        • 2.1.1 监督学习 supervised learning
        • 2.1.2 无监督学习 unsupervised learning
        • 2.1.3 强化学习 reinforcement learning
        • 2.1.4 半监督学习 semi-supervised learning、主动学习 active learning
      • 2.2 按模型分类
      • 2.3 按算法分类
      • 2.4 按技巧分类
    • 3. 统计学习方法三要素
    • 4. 模型评估与选择
      • 过拟合Python代码
    • 5. 正则化与交叉验证
    • 6. 泛化能力
    • 7. 生成模型与判别模型
    • 8. 监督学习应用
      • 8.1 分类问题
      • 8.2 标注问题
      • 8.3 回归问题

1. 统计学习

统计学习(statistical learning)是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。统计学习也称为统计机器学习(statistical machine learning)。

  • 研究对象:数据 Data
  • 目的:构建模型,学习数据中的规律,预测未知的新数据
  • 方法:监督学习、无监督学习,半监督学习、强化学习、主动学习等

2. 统计学习分类

2.1 基本分类

2.1.1 监督学习 supervised learning

  • 数据都是带有标注的
  • 本质: 学习输入到输出的映射的统计规律。

在这里插入图片描述

2.1.2 无监督学习 unsupervised learning

  • 是指从无标注数据中学习预测模型。
  • 本质: 学习数据中的统计规律或潜在结构。

在这里插入图片描述

2.1.3 强化学习 reinforcement learning

  • 是指智能系统在与环境的连续互动中学习最优行为策略的机器学习问题。
  • 本质: 学习最优的序贯决策,从一个策略开始,不断的搜索更优的策略。

2.1.4 半监督学习 semi-supervised learning、主动学习 active learning

  • 半监督学习(semi-supervised learning)是指利用标注数据和未标注数据学习预测模型的机器学习问题。通常有少量标注数据大量未标注数据。
    半监督学习旨在利用未标注数据中的信息,辅助标注数据,进行监督学习,以较低的成本达到较好的学习效果。
  • 主动学习(active learning)是指机器不断主动给出实例让教师进行标注,然后利用标注数据学习预测模型的机器学习问题。
    通常的监督学习使用给定的标注数据,往往是随机得到的,可以看作是“被动学习”,主动学习的目标是找出对学习最有帮助的实例让教师标注,以较小的标注代价,达到较好的学习效果。

半监督学习和主动学习更接近监督学习。

2.2 按模型分类

  • 概率模型 :决策树、朴素贝叶斯、隐马尔可夫模型、条件随机场、概率潜在语义分析、潜在狄利克雷分配、高斯混合模型
  • 非概率模型:感知机、支持向量机、k近邻、AdaBoost、k均值、潜在语义分析,以及神经网络
  • 基本概率公式:
    加法规则: P(x)=∑yP(x,y)P(x) = \sum\limits_y P(x,y)P(x)=yP(x,y)
    乘法规则: P(x,y)=P(x)P(y∣x)P(x,y) = P(x)P(y|x)P(x,y)=P(x)P(yx)

  • 线性模型:感知机、线性支持向量机、k近邻、k均值、潜在语义分析
  • 非线性: 核函数支持向量机、AdaBoost、神经网络、深度学习

  • 参数化模型:模型由优先维参数描述(感知机、朴素贝叶斯、逻辑斯谛回归、k均值、高斯混合模型)
  • 非参数化模型:模型参数不固定,随着训练数据增加而增大(决策树、支持向量机、AdaBoost、k近邻、潜在语义分析、概率潜在语义分析、潜在狄利克雷分配)

参数化模型适合问题简单的情况;现实问题比较复杂非参数化模型更有效。

2.3 按算法分类

  • 在线学习(online learning):是指每次接受一个样本,进行预测,之后学习模型,并不断重复该操作。
  • 批量学习(batch learning):批量学习一次接受所有数据,学习模型,之后进行预测。

有些场景要求必须是在线的。比如,数据依次达到无法存储,系统需要及时做出处理;数据规模很大,不可能一次处理所有数据;数据的模式随时间动态变化,需要算法快速适应新的模式(不满足独立同分布假设)。
在这里插入图片描述

利用随机梯度下降感知机学习算法就是在线学习算法。

在线学习通常更难,很难学到预测准确率更高的模型,因为每次模型更新中,可利用的数据有限。

2.4 按技巧分类

  • 贝叶斯学习(Bayesian learning):后验概率
  • 核方法(kernel method):是使用核函数表示和学习非线性模型的一种机器学习方法

核方法可以把线性模型扩展到非线性模型,直接的做法是显式地定义从输入空间(低维空间)到特征空间(高维空间)的映射,在特征空间中进行内积计算。
比如,支持向量机,把输入空间的线性不可分问题转化为特征空间的线性可分问题
在这里插入图片描述

3. 统计学习方法三要素

方法=模型+策略+算法方法 = 模型+策略+算法=++

  • 模型:输入空间,输出空间,决策函数集合
  • 策略:按什么准则选择最优模型
  1. 损失函数(代价函数):度量预测错误程度,损失越小,模型越好
    0-1损失、平方损失、绝对损失、对数损失

  2. 风险函数:损失函数的期望

  3. 经验风险最小化:损失最小,样本足够大时,效果好;样本小时,易产生过拟合

  4. 结构化风险最小化:为防止过拟合,加入正则化项

  • 算法:最优化问题的高效迭代求解

4. 模型评估与选择

  • 训练误差 & 测试误差
  • 过拟合与模型选择
    一味追求对训练数据的预测能力,模型的复杂度则往往会比真模型更高。这种现象称为过拟合(over-fitting)。
    过拟合是指学习时选择的模型所包含的参数过多,模型对已知数据预测得很好,但对未知数据预测得很差的现象。
    模型选择旨在避免过拟合并提高模型的预测能力。
    在这里插入图片描述

过拟合Python代码

# -*- coding:utf-8 -*-
# Python 3.7
# @Time: 2020/2/26 23:58
# @Author: Michael Ming
# @Website: https://michael.blog.csdn.net/
# @File: 1.introduction_ploy_fitting.py
# 参考代码:https://github.com/wzyonggege/statistical-learning-method'''
目标函数 𝑦=𝑠𝑖𝑛2𝜋𝑥 , 加上一个正态分布的噪音干扰,用M次多项式去拟合
'''
import numpy as np
import scipy as sp
from scipy.optimize import leastsq
import matplotlib.pyplot as plt# 真实函数
def real_func(x):return np.sin(2 * np.pi * x)  # 𝑠𝑖𝑛2𝜋𝑥# 多项式拟合函数
def fit_func(p, x):f = np.poly1d(p)return f(x)# 残差
def residuals_func(p, x, y):ret = fit_func(p, x) - yreturn retdef fitting(x, x_points, y_, y, 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.title("多项式次数 M=%d" % (M))plt.rcParams['font.sans-serif'] = 'SimHei'  # 消除中文乱码plt.legend()plt.show()return p_lsqif __name__ == '__main__':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_]  # 加入噪声扰动p_lsq_0 = fitting(x, x_points, y_, y, 0)p_lsq_1 = fitting(x, x_points, y_, y, 1)p_lsq_3 = fitting(x, x_points, y_, y, 3)p_lsq_9 = fitting(x, x_points, y_, y, 9)
多项式拟合结果M=0M=1M=3M=9
曲线在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 9次多项式,完全拟合了所有点,过拟合了
  • 加入L2正则项
def residuals_func_regularization(p,x,y,lambd=0.0001):ret = fit_func(p,x)-yret = np.append(ret, np.sqrt(0.5*lambd*np.square(p)))# 加入L2正则表达式, L1: lambd*abs(p)return ret
if __name__ == '__main__':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_]  # 加入噪声扰动p_init = np.random.rand(9+1)p_lsq_9_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_9_regularization[0],x_points),label='L2regular')plt.rcParams['font.sans-serif'] = 'SimHei'  # 消除中文乱码plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号plt.plot(x,y,'bo',label='noise')plt.title("展示L2正则下的9次多项式拟合结果")plt.legend()plt.show()

在这里插入图片描述

5. 正则化与交叉验证

  • 正则化是结构化风险最小化策略的实现;在经验风险上+正则化
  • 一般,模型越复杂,正则化值就越大;正则化可以是模型参数向量的范数
  • L1、L2 范数介绍

  • 交叉验证:在许多实际应用中数据是不充足的。为了选择好的模型,可以采用交叉验证方法。
  • 交叉验证的基本想法是重复地使用数据;把给定的数据进行切分,将切分的数据集组合为训练集与测试集,在此基础上反复地进行训练、测试以及模型选择。
  1. 简单交叉验证
    首先随机地将已给数据分为两部分,训练集,测试集(如,70%训练集,30%测试集);
    然后用训练集在各种条件下(例如,不同的参数个数)训练模型,得到不同的模型;
    在测试集上评价各个模型的测试误差,选出测试误差最小的模型。
  2. S 折交叉验证
    应用最多的是S折交叉验证(S-fold cross validation)
    方法如下:
    首先随机地将已给数据切分为 S 个互不相交大小相同的子集;
    然后利用 S-1 个子集的数据训练模型,利用余下的子集测试模型;
    将这一过程对可能的 S 种选择重复进行;
    最后选出 S 次评测中平均测试误差最小的模型。
  3. 留一交叉验证
    S 折交叉验证的特殊情形是 S=N,称为留一交叉验证(leave-one-out cross validation),往往在数据缺乏的情况下使用。这里,N是给定数据集的容量。

6. 泛化能力

学习方法的泛化能力(generalization ability)是指由该方法学习到的模型对未知数据的预测能力,是学习方法本质上重要的性质。

通过测试误差来评价泛化能力。这种评价是依赖于测试数据集。因为测试数据集是有限的,很有可能由此得到的评价结果是不可靠的。

  • 泛化误差:模型对未知数据预测的误差
  • 泛化误差上界:
    学习方法的泛化能力分析往往是通过研究泛化误差的概率上界进行的,简称为泛化误差上界(generalization error bound)。
    通过比较两种学习方法的泛化误差上界的大小来比较它们的优劣。
    泛化误差上界通常具有以下性质:
  1. 它是样本容量的函数,当样本容量增加时,泛化上界趋于0;
  2. 它是假设空间容量(capacity)的函数,假设空间容量越大,模型就越难学,泛化误差上界就越大。

7. 生成模型与判别模型

  • 生成方法:由数据学习联合概率分布 P(X,Y) ,然后求出条件概率分布 P(Y|X) 作为预测的模型,即生成模型
  • 典型的生成模型:有朴素贝叶斯法、隐马尔可夫模型
  • 判别方法:由数据直接学习决策函数 f(X) 或者条件概率分布 P(Y|X) 作为预测的模型,即判别模型。
  • 判别方法关心的是对给定的输入 X,应该预测什么样的输出 Y。
  • 典型的判别模型:k近邻法、感知机、决策树、逻辑斯谛回归模型、最大熵模型、支持向量机、提升方法和条件随机场等

  • 生成方法的特点:可以还原出联合概率分布 P(X,Y),而判别方法则不能
  • 生成方法的学习收敛速度更快,当样本容量增加的时候,学到的模型可以更快地收敛于真实模型;当存在隐变量时,仍可以用生成方法学习,此时判别方法就不能用
  • 判别方法的特点:直接学习条件概率 P(Y|X) 或决策函数 f(X),直接面对预测,往往学习的准确率更高;由于直接学习 P(Y|X) 或 f(x),可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题

8. 监督学习应用

8.1 分类问题

  • 从数据中学习一个分类模型或分类决策函数,称为分类器(classifier)
  • 分类器对新的输入进行输出的预测,称为分类(classification)
  • 可能的输出称为类别(class)
  • 分类的类别为多个时,称为多类分类问题在这里插入图片描述
    评价分类器性能的指标一般是分类准确率(accuracy),其定义是:对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。也就是损失函数是0-1损失时测试数据集上的准确率

对于二类分类问题常用的评价指标是精确率(precision)与召回率(recall)。
通常以关注的类为正类,其他类为负类,分类器在测试数据集上的预测或正确或不正确,4种情况出现的总数分别记作:
TP——将正类预测为正类数;
FN——将正类预测为负类数;
FP——将负类预测为正类数;
TN——将负类预测为负类数。

P=TPTP+FPR=TPTP+FNP = \frac{TP}{TP+FP} \quad R = \frac{TP}{TP+FN}P=TP+FPTPR=TP+FNTP
在这里插入图片描述
图片参考:https://www.jianshu.com/p/4434ea11c16c

F1F_1F1 值,是精确率和召回率的调和均值:2F1=1P+1R\frac{2}{F_1} = \frac{1}{P} + \frac{1}{R}F12=P1+R1

F1=2TP2TP+FP+FNF_1 = \frac{2TP}{2TP+FP+FN}F1=2TP+FP+FN2TP

许多方法可以分类,包括k近邻法、感知机、朴素贝叶斯法、决策树、决策列表、逻辑斯谛回归模型、支持向量机、提升方法、贝叶斯网络、神经网络、Winnow等。

  • 在银行业务中,可以构建一个客户分类模型,对客户按照贷款风险的大小进行分类
  • 在网络安全领域,可以利用日志数据的分类对非法入侵进行检测
  • 在图像处理中,分类可以用来检测图像中是否有人脸出现
  • 在手写识别中,分类可以用于识别手写数字
  • 在互联网搜索中,网页的分类可以帮助网页的抓取、索引与排序

8.2 标注问题

标注(tagging)也是一个监督学习问题。

标注问题是分类问题的一个推广,标注问题是更复杂的结构预测(structure prediction)问题的简单形式。

标注问题输入一个观测序列,输出一个标记序列或状态序列。标注问题的目标在于学习一个模型,使它能够对观测序列给出标记序列作为预测。

注意,可能的标记个数是有限的,但其组合所成的标记序列的个数是依序列长度呈指数级增长的。

  • 常用方法有:隐马尔可夫模型、条件随机场。

  • 标注问题在信息抽取、自然语言处理等领域被广泛应用,是这些领域的基本问题。

  • 例如,自然语言处理中的词性标注(part of speech tagging)就是一个典型的标注问题:给定一个由单词组成的句子,对这个句子中的每一个单词进行词性标注,即对一个单词序列预测其对应的词性标记序列。
    在这里插入图片描述

8.3 回归问题

回归(regression)用于预测输入变量(自变量)和输出变量(因变量)之间的关系,特别是当输入变量的值发生变化时,输出变量的值随之发生的变化。

回归模型正是表示从输入到输出之间映射的函数。回归问题的学习等价于函数拟合:选择一条函数曲线使其很好地拟合已知数据且很好地预测未知数据

在这里插入图片描述

  • 回归问题按照输入变量的个数,分为一元回归和多元回归
  • 按照输入变量和输出变量之间关系的类型即模型的类型,分为线性回归和非线性回归。
  • 最常用的损失函数是平方损失函数,在此情况下,回归问题可以由著名的最小二乘法(least squares)求解。
  • 许多任务都可以形式化为回归问题,如,商务领域,作为市场趋势预测、产品质量管理、客户满意度调查、投资风险分析的工具。

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

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

相关文章

BERT为何无法彻底干掉BM25??

文 | QvQ近些年来,相比传统检索模型,大规模预训练式transformers结构的引入在各类任务上都有显著的提升。而这种提升在不同的数据集上有着特殊的模型设置,而当前依旧无法充分理解这些模型为什么以及如何可以更好的工作。古人云:知…

Spring Boot中使用MongoDB数据库

前段时间分享了关于Spring Boot中使用Redis的文章,除了Redis之后,我们在互联网产品中还经常会用到另外一款著名的NoSQL数据库MongoDB。 下面就来简单介绍一下MongoDB,并且通过一个例子来介绍Spring Boot中对MongoDB访问的配置和使用。 Mong…

程序员面试金典 - 面试题 01.09. 字符串轮转

1. 题目 字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。 示例1:输入:s1 "waterbottle", s2 "erbottlewat"输出&#x…

谷歌HuggingFace | 零样本能力最强的语言模型结构

从 GPT3 到 Prompt,越来越多人发现大模型在零样本学习(zero-shot)的设定下有非常好的表现。这都让大家对 AGI 的到来越来越期待。但有一件事让人非常疑惑:19 年 T5 通过“调参”发现,设计预训练模型时,Enco…

Spring Boot中使用Redis数据库

Spring Boot中除了对常用的关系型数据库提供了优秀的自动化支持之外,对于很多NoSQL数据库一样提供了自动化配置的支持,包括:Redis, MongoDB, Elasticsearch, Solr和Cassandra。 使用Redis Redis是一个开源的使用ANSI C语言编写、支持网络、…

程序员面试金典 - 面试题 02.01. 移除重复节点(哈希set)

1. 题目 编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。 示例1:输入:[1, 2, 3, 3, 2, 1]输出:[1, 2, 3]示例2:输入:[1, 1, 1, 1, 2]输出:[1, 2]提示: 链表长度在[0, 20000]范围内。 链表元…

从 Google AI 离职了,这里让我爱不起来

文 | 天于刀刀大家都清楚,谷歌是一所著名的能让无数打工人「爱上工作」的良心企业。轻松自由的办公环境,超多在职福利和活动,更不必说业界第一的金字招牌带来的丰厚报酬,是吾辈躺平咸鱼的终极 Dream Offer 。而现在竟然有人主动提…

Spring Boot日志管理

Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容。 格式化日志 默认的日志输出…

感知机(Perceptron)

文章目录1. 感知机模型2. 感知机学习策略3. 感知机学习算法3.1 原始形式3.2 算法收敛性3.3 对偶形式4. 基于感知机Perceptron的鸢尾花分类实践感知机(perceptron)是 二类分类的线性分类模型输入:实例的特征向量输出:实例的类别&am…

苹果5G芯片研发失败,冲上热搜

文 | 科小编源 | 科技每日推送多年来,iPhone的信号问题,一直被大家诟病。苹果也一直尝试自研5G芯片来解决,但最新消息显示,苹果再次失败了。6月28日,有“地表最强苹果剧透师”之称的郭明錤,在推特上爆料&am…

Spring Boot多数据源配置与使用

之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源。在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.properties文件中配置连接参数即可。但是往往随着业务量发展,我们通常会进行数据库拆分或…

基于感知机Perceptron的鸢尾花分类实践

文章目录1. 感知机简介2. 编写感知机实践2.1 数据处理2.2 编写感知机类2.3 多参数组合运行3. sklearn 感知机实践4. 附完整代码本文将使用感知机模型,对鸢尾花进行分类,并调整参数,对比分类效率。1. 感知机简介 感知机(perceptro…

大火的扩散模型终于杀到了NLP领域

从2020年的初出茅庐,到2021年的日趋火热,再到2022年的大放异彩,扩散模型(Diffusion Models) 正在人工智能学术界和工业界获取越来越多的关注。如果还不是特别了解扩散模型的朋友,可以阅读卖萌屋的几篇历史推文《扩散模型在图像生成…

Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅

在上一篇Spring中使用JdbcTemplate访问数据库 中介绍了一种基本的数据访问方式,结合构建RESTful API和使用Thymeleaf模板引擎渲染Web视图的内容就已经可以完成App服务端和Web站点的开发任务了。 然而,在实际开发过程中,对数据库的操作无非就…

AI终于攻陷了数学领域!高数考试超过普通博士??

文 | 梦晨 丰色 发自 凹非寺源 | 量子位高数考不好,不知道是多少人的噩梦。如果说你高数考得还不如AI好,是不是就更难以接受了?没错,来自OpenAI的Codex已经在MIT的7门高数课程题目中正确率达到81.1%,妥妥的MIT本科生水…

十年内就能实现通用人工智能?先把组合泛化研究明白吧!

文 | Albert Yang编 | 白鹡鸰"乌鸦为什么像写字台?"因为它们都能produce a few notes (鸟叫/笔记),因为乌鸦和写字台都是思想与记忆的象征(北欧神话),又或者因为,这本身就…

LeetCode 1366. 通过投票对团队排名(自定义排序)

1. 题目 现在有一个特殊的排名系统,依据参赛团队在投票人心中的次序进行排名,每个投票者都需要按从高到低的顺序对参与排名的所有团队进行排位。 排名规则如下: 参赛团队的排名次序依照其所获「排位第一」的票的多少决定。如果存在多个团队…

Spring Boot中使用JdbcTemplate访问数据库

之前介绍了很多Web层的例子,包括构建RESTful API、使用Thymeleaf模板引擎渲染Web视图,但是这些内容还不足以构建一个动态的应用。通常我们做App也好,做Web应用也好,都需要内容,而内容通常存储于各种类型的数据库&#…

LeetCode 1367. 二叉树中的列表(双重递归)

1. 题目 给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表。 如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那么请你返回 True ,否则返回 False 。 一直向…

Spring Boot构建RESTful API与单元测试

首先,回顾并详细说明一下在快速入门中使用的Controller、RestController、RequestMapping注解。如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建议先看一下快速入门的内容。 Controller:修饰class,用来创建处理http请…