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

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

有监督学习的概念


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


相关文章
|
6天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
21 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
27天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
1月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
55 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
1月前
|
机器学习/深度学习 算法 Python
探索机器学习中的决策树算法:从理论到实践
【10月更文挑战第5天】本文旨在通过浅显易懂的语言,带领读者了解并实现一个基础的决策树模型。我们将从决策树的基本概念出发,逐步深入其构建过程,包括特征选择、树的生成与剪枝等关键技术点,并以一个简单的例子演示如何用Python代码实现一个决策树分类器。文章不仅注重理论阐述,更侧重于实际操作,以期帮助初学者快速入门并在真实数据上应用这一算法。
|
15天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。
|
1月前
|
机器学习/深度学习 算法 数据处理
EM算法对人脸数据降维(机器学习作业06)
本文介绍了使用EM算法对人脸数据进行降维的机器学习作业。首先通过加载ORL人脸数据库,然后分别应用SVD_PCA、MLE_PCA及EM_PCA三种方法实现数据降维,并输出降维后的数据形状。此作业展示了不同PCA变种在人脸数据处理中的应用效果。
33 0
|
26天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。
|
10天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
12天前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
12天前
|
存储 算法 决策智能
基于免疫算法的TSP问题求解matlab仿真
旅行商问题(TSP)是一个经典的组合优化问题,目标是寻找经过每个城市恰好一次并返回起点的最短回路。本文介绍了一种基于免疫算法(IA)的解决方案,该算法模拟生物免疫系统的运作机制,通过克隆选择、变异和免疫记忆等步骤,有效解决了TSP问题。程序使用MATLAB 2022a版本运行,展示了良好的优化效果。