当前位置: 首页 > news >正文

【大数据】机器学习-----最开始的引路

以下是关于机器学习的一些基本信息,包括基本术语、假设空间、归纳偏好、发展历程、应用现状和代码示例:

一、基本术语

  • 样本(Sample)

    • 也称为实例(Instance)或数据点(Data Point),是关于一个对象的描述,通常表示为一个特征向量。例如,对于一个水果分类问题,一个苹果的样本可以表示为 [红色,圆形,直径 7cm]
  • 特征(Feature)

    • 样本的属性,用于描述样本的某些方面。上述水果例子中的“红色”、“圆形”和“直径 7cm”都是特征。特征可以是离散的(如颜色)或连续的(如直径)。
  • 标签(Label)

    • 样本的真实结果或类别,是我们希望预测的值。对于分类问题,它是类别标签,如“苹果”或“橙子”;对于回归问题,它是一个实数,如房价预测中的房价。
  • 数据集(Dataset)

    • 一组样本的集合。通常分为训练集(Training Set)、验证集(Validation Set)和测试集(Test Set)。
    • 训练集用于训练模型,验证集用于调整模型的超参数,测试集用于评估模型的性能。
  • 模型(Model)

    • 机器学习算法学习得到的函数,用于对新样本进行预测。可以是线性模型(如 y = w0 + w1*x1 + w2*x2)、决策树、神经网络等。
  • 训练(Training)

    • 让模型从训练集中学习的过程,通过调整模型的参数,使其在训练集上表现更好。

二、假设空间

  • 定义

    • 是所有可能的假设(Hypothesis)的集合,假设是模型可能的函数形式。例如,对于线性回归问题,假设空间可以是所有可能的线性函数 y = w0 + w1*x1 + w2*x2 +...+ wn*xn,其中 w0, w1,..., wn 可以取不同的值。
  • 大小和搜索

    • 假设空间的大小取决于模型的复杂度和特征的数量。在某些情况下,假设空间可能是无限大的,例如神经网络的假设空间非常大,因为有很多参数可以调整。
    • 机器学习算法的任务是在假设空间中搜索一个或多个假设,使得在训练集上的性能最好。

三、归纳偏好

  • 定义

    • 对于多个与训练集一致的假设,算法会偏好其中的某些假设,这种偏好称为归纳偏好。例如,在决策树算法中,偏好更简单的树(奥卡姆剃刀原则)。
  • 重要性

    • 归纳偏好是机器学习算法的重要部分,因为在没有归纳偏好的情况下,算法在训练集上可能会有多个等效的假设,无法确定使用哪个。不同的归纳偏好会导致不同的模型,对新数据的预测也可能不同。

四、发展历程

  • 早期阶段(20世纪50年代 - 80年代)

    • 以符号主义为主,开发了一些基于规则和逻辑的系统,如感知机(Perceptron),是最早的神经网络模型。但早期的神经网络受到计算能力和数据量的限制。
  • 统计学习阶段(20世纪80年代 - 21世纪初)

    • 以支持向量机(SVM)、决策树(如ID3、C4.5、CART)、朴素贝叶斯等为代表,这些算法基于统计理论,在很多任务上取得了很好的性能。
  • 深度学习阶段(21世纪初 - 现在)

    • 随着大数据和强大计算能力(GPU 等)的发展,深度学习兴起,以深度神经网络(如多层感知机、卷积神经网络 CNN、循环神经网络 RNN 及其变体 LSTM、GRU 等)为代表,在图像识别、语音识别、自然语言处理等领域取得了突破性进展。

五、应用现状

  • 图像识别

    • 应用于人脸识别(如手机解锁、安防监控)、物体检测(如自动驾驶中的行人检测、交通标志识别)、医学图像分析(如肿瘤检测)等。
  • 自然语言处理

    • 包括机器翻译、文本分类(如垃圾邮件过滤)、情感分析、问答系统(如智能客服)等。
  • 推荐系统

    • 为用户推荐商品(如电商平台)、电影(如 Netflix)、音乐(如 Spotify)等,使用协同过滤、矩阵分解等技术。

六、代码示例(使用 Python 和 Scikit-learn 库进行简单的线性回归)

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error# 创建一个简单的数据集
np.random.seed(42)
X = np.random.rand(100, 1)  # 特征矩阵,100 个样本,1 个特征
y = 2 + 3 * X + np.random.randn(100, 1)  # 真实函数为 y = 2 + 3x + 噪声# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建线性回归模型
model = LinearRegression()# 训练模型
model.fit(X_train, y_train)# 输出模型的系数
print(f"模型的系数: {model.coef_}")
print(f"模型的截距: {model.intercept_}")# 预测
y_pred = model.predict(X_test)# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print(f"均方误差: {mse}")# 使用模型进行新的预测
new_x = np.array([[0.5]])
prediction = model.predict(new_x)
print(f"对新样本 {new_x} 的预测值: {prediction}")

代码解释

  • 首先,使用 numpy 生成一个简单的数据集,其中 yx 的线性函数加上一些噪声。
  • 使用 train_test_split 函数将数据集划分为训练集和测试集。
  • 创建一个 LinearRegression 模型。
  • 使用 fit 方法训练模型。
  • 输出模型的系数和截距。
  • 使用 predict 方法进行预测,并计算预测结果与真实结果的均方误差。
  • 最后,使用训练好的模型对新样本进行预测。

通过上述代码,可以对机器学习的基本流程有一个简单的认识,包括数据生成、模型创建、训练、评估和预测。在实际应用中,可以使用更复杂的数据集和不同的模型,根据具体任务选择合适的算法和技术。同时,需要注意调整超参数、防止过拟合和数据预处理等重要问题。

什么是过拟合?

过拟合(Overfitting)

一、定义

过拟合是指机器学习模型在训练数据上表现得非常好,但在未见过的测试数据或新数据上表现不佳的现象。在这种情况下,模型过度地学习了训练数据中的噪声和细节,而没有很好地捕捉到数据中的一般规律,导致模型的泛化能力差。

二、产生原因

  • 模型复杂度

    • 当模型的复杂度相对训练数据量过高时,模型有足够的能力去记住训练数据中的每一个细节,包括噪声。例如,在多项式回归中,使用非常高的多项式次数,可能会使曲线经过训练数据中的每一个点,但这样的曲线对于新的数据点预测效果很差。
    • 对于决策树来说,如果允许树的深度很深,会导致每个叶子节点只包含少量的样本,可能会过度拟合训练数据中的噪声和异常值。
  • 数据量

    • 训练数据量过少时,模型更容易记住训练数据而不是学习到数据中的一般规律。例如,在只有几个样本的数据集上训练一个复杂的深度学习模型,模型可能会过度拟合这些样本。
  • 训练时间过长

    • 在一些迭代训练的算法中,如神经网络的训练,如果训练的轮数(epochs)过多,模型可能会开始过度拟合训练数据。

三、示例

假设我们有一个简单的分类任务,要将蓝色和红色的点分开。

正常拟合

  • 模型学习到了数据的一般规律,能够找到一条平滑的边界将蓝色和红色的点分开,在训练数据和新数据上都有较好的性能。

过拟合

  • 模型为了尽可能地将训练集中的每个点都正确分类,产生了一条非常复杂的边界,该边界可能会围绕着训练数据点曲折,对训练数据的拟合非常好,但对于新数据可能会出现很多误分类,因为它对训练数据中的噪声也进行了拟合。

四、解决方法

  • 增加数据量

    • 更多的数据可以使模型学习到更一般的规律,减少对训练数据的过度依赖。可以通过数据增强(Data Augmentation)技术,在图像识别中,通过旋转、翻转、裁剪等方式增加图像数据的数量。
  • 正则化

    • L1 和 L2 正则化
      • 在损失函数中加入正则化项,如 L1 范数(||w||_1)或 L2 范数(||w||_2),使模型的参数不会过大。例如在岭回归(Ridge Regression)中使用 L2 正则化,在 Lasso 回归中使用 L1 正则化,通过惩罚较大的参数值,防止模型过度依赖某些特征,使其更具泛化能力。
    • Dropout
      • 主要用于神经网络,在训练过程中随机将一部分神经元的输出置为 0,防止神经元之间的协同适应,使模型不过度依赖某些神经元,提高泛化能力。
  • 简化模型

    • 降低多项式次数:在多项式回归中,使用较低的多项式次数。
    • 限制决策树的深度或叶子节点数量:在决策树算法中,通过剪枝(Pruning)技术,剪掉一些不必要的分支,降低模型的复杂度。
  • 早停法(Early Stopping)

    • 在训练过程中,监控模型在验证集上的性能,当性能不再提升甚至下降时,停止训练,防止模型过度训练。

**

过拟合是机器学习中一个重要的问题,需要通过合理的模型选择、数据处理和训练策略来避免,以确保模型具有良好的泛化能力,能够在新的数据上取得较好的性能。在实践中,需要不断调整模型和训练参数,观察模型在验证集和测试集上的性能,避免过拟合问题。

**

在这里插入图片描述

相关文章:

【大数据】机器学习-----最开始的引路

以下是关于机器学习的一些基本信息,包括基本术语、假设空间、归纳偏好、发展历程、应用现状和代码示例: 一、基本术语 样本(Sample): 也称为实例(Instance)或数据点(Data Point&…...

【前端】自学基础算法 -- 21.图的广度优先搜索

图的广度优先搜索 简介 图的广度优先搜索,沿着图的宽度遍历图的节点,先访问离起始节点最近的节点,然后逐渐向外扩展。 基本步骤: 选择一个起始节点作为当前节点。将当前节点加入队列。当队列不为空时,重复以下步骤…...

ChatGPT与Claude AI:两大生成式对话模型的比较分析

自ChatGPT推出以来,这款强大的AI聊天机器人迅速吸引了全球的关注。其出色的对话能力和多样化的应用场景,成为许多人初次体验基于大规模语言模型的潜力。然而,在这个快速发展的领域中,另一款AI也在悄然崭露头角,那就是由…...

前端开发:盒子模型、块元素

1.border边框 *{box-sizing:border-box; } //使所有边框不再撑大盒子模型 粗细 : border-width 样式 : border-style, 默认没边框 . solid 实线边框 dashed 虚线边框 dotted 点线边框 颜色 : border-color div { width : 200px ; height : 200px ; border : …...

升级 CentOS 7.x 系统内核到 4.4 版本

问题描述 在 CentOS 7.x 系统中,默认内核版本是 3.10.x,这个版本可能会带来一些与 Docker 和 Kubernetes 兼容性的问题,导致系统性能不稳定或功能异常。为了提高系统的稳定性和兼容性,建议升级到更高版本的内核,例如 …...

播放音频文件同步音频文本

播放音频同步音频文本 对应单个文本高亮显示 使用audio音频文件对应音频文本资源 音频文本内容(Json) [{"end": 4875,"index": 0,"speaker": 0,"start": 30,"text": "70号二啊,","tex…...

springboot使用Easy Excel导出列表数据为Excel

springboot使用Easy Excel导出列表数据为Excel Easy Excel官网&#xff1a;https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write 主要记录一下引入时候的pom&#xff0c;直接引入会依赖冲突 解决方法&#xff1a; <!-- 引入Easy Excel的依赖 -->&l…...

day07_Spark SQL

文章目录 day07_Spark SQL课程笔记一、今日课程内容二、Spark SQL函数定义&#xff08;掌握&#xff09;1、窗口函数2、自定义函数背景2.1 回顾函数分类标准:SQL最开始是_内置函数&自定义函数_两种 2.2 自定义函数背景 3、Spark原生自定义UDF函数3.1 自定义函数流程&#x…...

高性能现代PHP全栈框架 Spiral

概述 Spiral Framework 诞生于现实世界的软件开发项目是一个现代 PHP 框架&#xff0c;旨在为更快、更清洁、更卓越的软件开发提供动力。 特性 高性能 由于其设计以及复杂精密的应用服务器&#xff0c;Spiral Framework框架在不影响代码质量以及与常用库的兼容性的情况下&a…...

LeetCode - #182 Swift 实现找出重复的电子邮件

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…...

《解锁鸿蒙Next系统人工智能语音助手开发的关键步骤》

在当今数字化时代&#xff0c;鸿蒙Next系统与人工智能的融合为开发者带来了前所未有的机遇&#xff0c;开发一款人工智能语音助手应用更是备受关注。以下是在鸿蒙Next系统上开发人工智能语音助手应用的关键步骤&#xff1a; 环境搭建与权限申请 安装开发工具&#xff1a;首先需…...

【Linux网络编程】数据链路层 | MAC帧 | ARP协议

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 &#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系…...

《自动驾驶与机器人中的SLAM技术》ch7:基于 ESKF 的松耦合 LIO 系统

目录 基于 ESKF 的松耦合 LIO 系统 1 坐标系说明 2 松耦合 LIO 系统的运动和观测方程 3 松耦合 LIO 系统的数据准备 3.1 CloudConvert 类 3.2 MessageSync 类 4 松耦合 LIO 系统的主要流程 4.1 IMU 静止初始化 4.2 ESKF 之 运动过程——使用 IMU 预测 4.3 使用 IMU 预测位姿进…...

基于spingbott+html+Thymeleaf的24小时智能服务器监控平台设计与实现

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…...

全栈面试(一)Basic/微服务

文章目录 项目地址一、Basic InterviewQuestions1. tell me about yourself?2. tell me about a time when you had to solve a complex code problem?3. tell me a situation that you persuade someone at work?4. tell me a about a confict with a teammate and how you…...

python安装完成后可以进行的后续步骤和注意事项

安装Python3完成后&#xff0c;你可以开始使用它进行编程和开发。以下是一些安装完成后可以进行的后续步骤和注意事项&#xff1a; 验证安装 检查Python版本&#xff1a; 打开“终端”应用程序。输入python3 --version&#xff0c;应该显示安装的Python3版本号。 检查pip版本…...

[Qt] 窗口 | 菜单栏MenuBar

目录 QMainWindow 概述 一、菜单栏 1、创建菜单栏 2、在菜单栏中添加菜单 3、创建菜单项 4、在菜单项之间添加分割线 5、添加快捷键 6、添加子菜单 7、添加图标 综合示例 QMainWindow 概述 Qt 窗口是通过 QMainWindow 类来实现的。 QMainWindow 是一个为用户 提供主…...

[读书日志]从零开始学习Chisel 第十三篇:Scala的隐式参数与隐式转换(敏捷硬件开发语言Chisel与数字系统设计)

10. 隐式转换与隐式参数 假设编写了一个向量类MyVector&#xff0c;并且包含一些向量的基本操作。因为向量可以与标量做数乘运算&#xff0c;所以需要一个计算数乘的方法“*”&#xff0c;它应该接收一个类型为基本值类的参数&#xff0c;在向量对象myVec调用该方法时&#xf…...

CMake学习笔记(1)

1. CMake概述 CMake 是一个项目构建工具&#xff0c;并且是跨平台的。关于项目构建我们所熟知的还有Makefile&#xff08;通过 make 命令进行项目的构建&#xff09;&#xff0c;大多是IDE软件都集成了make&#xff0c;比如&#xff1a;VS 的 nmake、linux 下的 GNU make、Qt …...

cursor+deepseek构建自己的AI编程助手

文章目录 准备工作在Cursor中添加deepseek 准备工作 下载安装Cursor &#xff08;默认安装在C盘&#xff09; 注册deepseek获取API key 在Cursor中添加deepseek 1、打开cursor&#xff0c;选择设置 选择Model&#xff0c;添加deepseek-chat 注意这里去掉其他的勾选项&…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

文件上传漏洞防御全攻略

要全面防范文件上传漏洞&#xff0c;需构建多层防御体系&#xff0c;结合技术验证、存储隔离与权限控制&#xff1a; &#x1f512; 一、基础防护层 前端校验&#xff08;仅辅助&#xff09; 通过JavaScript限制文件后缀名&#xff08;白名单&#xff09;和大小&#xff0c;提…...

基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)

注&#xff1a;文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件&#xff1a;STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...

CSS 工具对比:UnoCSS vs Tailwind CSS,谁是你的菜?

在现代前端开发中&#xff0c;Utility-First (功能优先) CSS 框架已经成为主流。其中&#xff0c;Tailwind CSS 无疑是市场的领导者和标杆。然而&#xff0c;一个名为 UnoCSS 的新星正以其惊人的性能和极致的灵活性迅速崛起。 这篇文章将深入探讨这两款工具的核心理念、技术差…...

Shell 解释器​​ bash 和 dash 区别

bash 和 dash 都是 Unix/Linux 系统中的 ​​Shell 解释器​​&#xff0c;但它们在功能、语法和性能上有显著区别。以下是它们的详细对比&#xff1a; ​​1. 基本区别​​ ​​特性​​​​bash (Bourne-Again SHell)​​​​dash (Debian Almquist SHell)​​​​来源​​G…...

基于django+vue的健身房管理系统-vue

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat12开发软件&#xff1a;PyCharm 系统展示 会员信息管理 员工信息管理 会员卡类型管理 健身项目管理 会员卡管理 摘要 健身房管理…...