【机器学习】有监督算法基础

简介: 【机器学习】有监督算法基础

有监督学习的概念


569ee932ac3d449ae32d98ad42b5a7c4_0db61dcaf1524e1f83a69773ea04a1af.png


  • 有监督的学习的主要任务是根据数据对象的特征,预测其标签,相应的学习算法需要对经验学习
  • 经验来自带标签的训练数据,训练数据是从数据对象集合中随机采样的数据,也称样本。


特征组(特征)


定义特征组在有监督的学习任务中,每个数据对象的n个特征构成的向量x=(x1,x2,...,xn)image.png,称该对象的特征组,也就是特征向量。设X ⊆ image.png 是特征组的所有可能取值构成的集合,称X为样本空间。


标签


定义:在回归问题中,训练数据含有一个数值标签y ∈ R;在k元分类问题中,训练数据含有一个向量标签image.png。设Y为全体可能的标签取值,称Y为标签空间。

分类问题

image.png


模型


定义:设X为样本空间,Y为标签空间,ϕ为X − > Y 的映射集合,称ϕ为模型空间,任意的模型空间中的映射h ∈ ϕ,称为一个模型


有监督学习任务


定义:给定样本空间X,标签空间Y,未知的特征分布D与标签分布image.png有监督的学习任务是训练一个模型h,即计算从X到Y的一个映射,记作:

image.png

对任意的样本的特征向量x xx,由h ( x ) h(x)h(x)作为对x xx的标签的预测。

image.png


损失函数


定义:设X是样本空间,Y是标签空间,损失函数是一个从Y × Y到正实数R+的函数

image.png

:并要其满足如以下性质,对任意y ∈ Y,有

image.png

例如:0-1损失函数

image.png

image.png


测试数据与模型度量(测试误差)


image.png


作为模型h的效果的度量

当测试数据规模足够大时,经验损失能够良好近似期望损失。

一般来说 给定数据集(不清楚其分布D DD),首先将其以一定的比例随机分成测试集合和训练集合,这样两个集合都会满足其原集合的分布D DD,在训练集合上训练得出模型h hh,在测试集合上计算损失,作为模型h hh的效果度量


经验损失最小化算法架构(训练误差)


给定损失函数 l,以及给定一组数据

image.png

image.png

作为模型h经验损失

无约束经验损失最小化算法架构

image.png

特点:image.png在训练数据S SS上的经验损失image.png,无约束经验损失最小化算法,容易带来过度拟合问题


ps:无约束指的是空间(ϕ)无约束(所有符合要求的模型组成的模型空间)


过度拟合示例:

  假定样本空间X=[-1,1],特征分布D是X上的均匀分布,标签空间Y=ℝ,标签分布Dx=N(x, 0.3)是期望为x且标准差是0.3的正态分布,损失函数是平方损失函数。

2c1b6c31fb1313604cea6bf603f0345d_bc98541b3a8e452ba234525c21caaad5.png

e36091513567ebaaa982f0b7f8aa0c8d_896df73494584938bce5cd4d474811e5.png

b0233e5265379786e4bad4e105d29aab_b13f4d766e1f4be9aeef14d498b421b7.png


过度拟合:训练误差小,测试误差大!

image.png


·过拟合:训练误差小,测试误差大

·欠拟合:训练误差比较大

·泛化能力:训练误差小,测试误差小


我们致力于模型的泛化能力,防止拟合的方法:


1.引入模型假设(对标签分布或者模型结构做出恰当的假设,比如上面的例子,可以假设为线性模型)

2.正则化image.png

3.dropout(用于深度神经网络)

4.扩大训练样本


经验损失最小化实例:墨渍分类


2b77bfb3fbe54a2f6a5e0c634d6d207d_4a8a44ea7c8343d09f73c518e3e3adca.png

from sklearn.datasets._samples_generator import make_blobs
import pandas as pd
import matplotlib.pylab as plt
import numpy as np
from sklearn.model_selection import train_test_split
# 感知器算法
class Perception:
    def __init__(self):
        self.b = None
        self.w = None
    def fit(self, X, y):
        m, n = X.shape
        w = np.zeros((n, 1))
        b = 0
        done = False
        while not done:
            done = True
            for i in range(m):
                x = X[i].reshape(1, -1)
                if y[i] * (x.dot(w) + b) <= 0:
                    w = w + y[i] * x.T
                    b = b + y[i]
                    done = False
        self.w = w
        self.b = b
    def predict(self, x):
        return np.sign(x.dot(self.w) + self.b)
# 构建数据集合
X, y = make_blobs(n_samples=100, centers=2, n_features=2, cluster_std=0.6, random_state=0)
y[y == 0] = -1
data = pd.DataFrame(X, columns=['x1', 'x2'])
data['y'] = y
# 根据题意:划分不同的test_size
fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(12, 8))
axes = axes.ravel()
ax1 =fig.add_subplot(131)
ax1.plot(data['x1'][data['y'] == 1], data['x2'][data['y'] == 1], "bs", ms=3)
ax1.plot(data['x1'][data['y'] == -1], data['x2'][data['y'] == -1], "rs", ms=3)
ax1.set_title('Original Data')
for i, test_size in enumerate([0.5, 0.4, 0.3, 0.2], start=1):
    print(i,test_size)
    # 划分数据集(训练集,测试集)
    X_train, X_test, y_train, y_test = train_test_split(data[['x1', 'x2']], data['y'], test_size=test_size)
    # 训练模型
    model = Perception()
    model.fit(np.array(X_train), np.array(y_train))
    w = model.w
    b = model.b
    # 作图
    if i == 3:
        i = i+2
    ax = axes[i]
    ax.plot(data['x1'][data['y'] == 1], data['x2'][data['y'] == 1], "bs", ms=3)
    ax.plot(data['x1'][data['y'] == -1], data['x2'][data['y'] == -1], "rs", ms=3)
    ax.set_title('Test Size: {:.1f}'.format(test_size))
    x_0 = np.linspace(-1, 3.5, 200)
    line = -w[0] / w[1] * x_0 - b / w[1]
    ax.plot(x_0, line)
plt.subplots_adjust(hspace=0.3)
plt.show()

b39063eefe0b8d763682aae7260f4302_d58480c4a1ea49fbb456c8c04172a952.png

结论:

  1. 在所有的测试集比例下,感知机模型都表现出了较好的分类效果,成功将数据集分为了两个簇。
  2. 在测试集比例为0.2的情况下,模型的表现最好,分类效果最接近真实分界线。


正则化算法


前言:

  • 在经验损失最小化的过程中,合理的选择模型假设,是避免过度拟合的有效方法
  • 尽管选取了模型假设,还是有可能发生过拟合,如何处理?正则化算法


正则化常用策略:

image.png

奥卡姆剃刀法则:如无必要,勿增实体


例如:每个n元线性函数

image.png

都可以用n+1个参数表示:

image.png

image.pngps:我们追求的是image.png复杂度低,所以就是image.png向量维数少且值小


image.png

d80824921b392c5fc734671bd06743e6_3e75fe27eb4e4b71bb2e59659298f649.png

image.png


image.png

cc337cd5055fd6fb19a3b9124da4e00e_e3ef0a054e9049fbbb20b0823aa2c9ab.png

image.png


相关文章
|
4月前
|
机器学习/深度学习 数据采集 人工智能
20分钟掌握机器学习算法指南
在短短20分钟内,从零开始理解主流机器学习算法的工作原理,掌握算法选择策略,并建立对神经网络的直观认识。本文用通俗易懂的语言和生动的比喻,帮助你告别算法选择的困惑,轻松踏入AI的大门。
|
4月前
|
机器学习/深度学习 数据采集 传感器
基于极限学习机和BP神经网络的半监督分类算法
基于极限学习机(Extreme Learning Machine, ELM)和反向传播(Backpropagation, BP)神经网络的半监督分类算法,旨在结合两者的优势:​**ELM的快速训练能力**和**BP的梯度优化能力**,同时利用少量标注数据和大量未标注数据提升分类性能。
89 6
|
5月前
|
机器学习/深度学习 存储 Kubernetes
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
210 6
|
7月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于机器学习的人脸识别算法matlab仿真,对比GRNN,PNN,DNN以及BP四种网络
本项目展示了人脸识别算法的运行效果(无水印),基于MATLAB2022A开发。核心程序包含详细中文注释及操作视频。理论部分介绍了广义回归神经网络(GRNN)、概率神经网络(PNN)、深度神经网络(DNN)和反向传播(BP)神经网络在人脸识别中的应用,涵盖各算法的结构特点与性能比较。
|
7月前
|
人工智能 编解码 算法
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
129 0
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
解锁机器学习的新维度:元学习的算法与应用探秘
元学习作为一个重要的研究领域,正逐渐在多个应用领域展现其潜力。通过理解和应用元学习的基本算法,研究者可以更好地解决在样本不足或任务快速变化的情况下的学习问题。随着研究的深入,元学习有望在人工智能的未来发展中发挥更大的作用。
|
3天前
|
机器学习/深度学习 算法 调度
基于NSGA-III算法求解微电网多目标优化调度研究(Matlab代码实现)
基于NSGA-III算法求解微电网多目标优化调度研究(Matlab代码实现)
|
2天前
|
传感器 算法 数据挖掘
基于协方差交叉(CI)的多传感器融合算法matlab仿真,对比单传感器和SCC融合
基于协方差交叉(CI)的多传感器融合算法,通过MATLAB仿真对比单传感器、SCC与CI融合在位置/速度估计误差(RMSE)及等概率椭圆上的性能。采用MATLAB2022A实现,结果表明CI融合在未知相关性下仍具鲁棒性,有效降低估计误差。
|
3天前
|
负载均衡 算法 调度
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
58 11

热门文章

最新文章