机器学习知识与心得

目录

机器学习实践

机器学习基础理论和概念

机器学习基本方法

1.线性回归(回归算法)

训练集(Training Set)

测试集(Test Set)

交叉验证

正则化

特点

2.logistic回归(分类算法)

特点

3.决策树

ID3与C4.5算法

梯度提升

GBDT模型与xgboost

决策树总结

4.朴素贝叶斯算法(文本分类模型)

贝叶斯公式

语言模型

马尔科夫假设

特点


机器学习实践

机器学习基础理论和概念

机器学习主要是研究如何使计算机从给定数据中学习规律,并利用学习到的规律(模型)来对未知或无法观测的数据进行预测。  

机器学习基本方法

1.线性回归(回归算法)

线性回归(Linear Regression)是一种统计学上分析变量之间关系的预测模型,它试图建立一个因变量(目标变量)与一个或多个自变量(特征变量)之间的线性关系。这种关系的形式是通过拟合一个最佳直线(在只有一个自变量时)或超平面(在有多个自变量时)来建立的,使得预测值与实际观测值之间的残差平方和最小。

线性回归模型的基本形式为:
(Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + \ldots + \beta_pX_p + \epsilon)
其中:

  • (Y) 是因变量(响应变量)。
  • (X_1, X_2, \ldots, X_p) 是自变量(预测变量或特征)。
  • (\beta_0, \beta_1, \ldots, \beta_p) 是回归系数,其中 (\beta_0) 是截距,(\beta_1, \ldots, \beta_p) 是斜率。
  • (\epsilon) 是误差项,表示模型未能解释的变异。

线性回归的主要目的是估计回归系数 (\beta_0, \beta_1, \ldots, \beta_p),这通常通过最小二乘法来实现,即最小化残差平方和。一旦得到了这些系数的估计值,模型就可以用来预测新的观测值的因变量值。

线性回归在数据分析、机器学习、经济学、社会科学和自然科学等领域都有广泛的应用。它可以帮助人们理解变量之间的关系,进行预测和推断,并作出基于数据的决策。然而,值得注意的是,线性回归模型假设因变量和自变量之间存在线性关系,并且误差项满足一定的条件(如正态性、独立性和同方差性)。在实际应用中,需要检验这些假设是否成立,并根据具体情况对模型进行调整或选择其他更合适的模型。

在机器学习,特别是线性回归中,我们通常将数据集分为训练集(Training Set)和测试集(Test Set)以评估模型的性能。这种划分有助于我们了解模型在未见过的数据上的表现。

训练集(Training Set)

训练集用于训练模型,即确定线性回归模型的参数(斜率和截距)。在训练过程中,模型会尝试找到最佳拟合训练数据的参数,以最小化预测误差。

测试集(Test Set)

测试集用于评估训练好的模型的性能。它包含模型在训练过程中未见过的数据。通过将模型应用于测试集,我们可以得到模型在未知数据上的预测结果,并与实际结果进行比较,从而计算模型的性能指标(如均方误差MSE、R平方值等)。

为什么要划分训练集和测试集?

  1. 防止过拟合:如果只使用整个数据集进行训练和评估,模型可能会过度拟合训练数据,导致在未见过的数据上表现不佳。通过划分训练集和测试集,我们可以确保模型在未见过的数据上进行评估,从而更准确地评估其性能。
  2. 模型选择:在多个候选模型中选择最佳模型时,我们可以使用训练集进行训练,并使用测试集的性能指标进行比较。这样可以确保我们选择的模型不仅在训练数据上表现良好,而且在未见过的数据上也具有良好的泛化能力。

如何划分?

通常,训练集和测试集的划分比例可以是70%-30%、80%-20%等,具体取决于数据集的大小和问题的复杂性。在某些情况下,还可以使用交叉验证(Cross-Validation)等技术来进一步评估模型的性能。

总之,通过合理划分训练集和测试集,我们可以更好地训练和评估线性回归模型,从而得到更准确、更可靠的预测结果。

交叉验证

交叉验证(Cross-Validation,简称CV)是一种统计学方法,主要用于评估机器学习模型的性能。它的主要目的是确保模型在新的、未见过的数据上也能表现得很好,从而避免过拟合。

在交叉验证中,数据通常被分为训练集和测试集(有时还包括验证集)。模型在训练集上进行训练,并在测试集上进行评估。通过多次评估模型的性能,交叉验证提供了对模型在未见过的数据上表现的更稳健的估计。

交叉验证有多种形式,其中较为常见的是k折交叉验证(如10折交叉验证)。在k折交叉验证中,数据集被分为k个子集。然后,轮流将k-1个子集用作训练数据,剩下的一个子集用作测试数据。这个过程重复k次,每次使用不同的子集作为测试数据。最后,对k次的结果进行平均,以得到一个对模型性能的总体估计。

通过交叉验证,我们可以得到可靠稳定的模型,特别是在数据量有限或模型选择和调整的情况下。这种方法在建模应用中,如PCR、PLS回归建模中,被广泛使用。

需要注意的是,虽然交叉验证是一种强大的工具,但它也有其局限性。例如,它可能会增加计算成本,特别是当数据集很大或模型很复杂时。因此,在实际应用中,需要根据具体情况权衡其利弊。

Precision与Accuracy(准确度)是不同的概念。Accuracy是描述每一次独立的测量之间,其平均值与已知的数据真值之间的差距,而Precision则更侧重于实验数据的一致性或再现性2。

正则化

特点

线性回归本身并不能直接用于解决分类问题。线性回归是一种基本的回归分析方法,主要用于探索自变量与因变量之间的线性关系,并预测连续型的因变量。其原理是通过拟合一条(或多条)直线(或平面)来最小化预测值和观测值之间的差异,从而得到最佳的截距和系数。

然而,通过对线性回归做出简单的变换,如逻辑斯蒂回归(logistic regression),可以用于解决二分类问题。逻辑斯蒂回归是在线性回归的基础上,通过应用一个逻辑函数(通常是sigmoid函数)将线性预测值转换为概率值,从而实现对分类问题的建模。对于多分类问题,可以通过将多分类问题分解成多个二分类问题来解决,进而应用逻辑斯蒂回归或其他多分类算法。

因此,虽然线性回归本身不直接适用于分类问题,但通过一些变换和扩展,可以间接地用于分类任务。但需要注意的是,选择适合问题特性的模型和算法至关重要,线性回归及其变换形式可能并不适用于所有类型的分类问题。在实际应用中,应根据问题的具体需求和数据的特性来选择合适的模型和方法。

2.logistic回归(分类算法)

Logistic回归,又称为逻辑斯蒂回归分析,是一种广义的线性回归分析模型。它常用于数据挖掘、疾病自动诊断、经济预测等领域。Logistic回归根据给定的自变量数据集来估计事件的发生概率,由于结果是一个概率,因此因变量的范围在0和1之间。

在实际应用中,Logistic回归经常用于研究某些因素条件下某个结果是否发生。比如,在医学领域,可以根据病人的症状来判断其是否患有某种疾病。

Logistic回归可以分为二分类和多分类,其中二分类的Logistic回归更为常用且易于解释。对于多分类问题,可以使用softmax方法进行处理。

特点

3.决策树

ID3与C4.5算法

梯度提升

GBDT模型与xgboost

CART是决策树的一种实现,它既可以用于分类问题,也可以用于回归问题。作为一种二分递归分割技术,CART算法通过递归地将数据集划分为两个子集来构建决策树,使得生成的每个非叶子结点都有两个分支,因此CART算法生成的决策树是结构简洁的二叉树。

XGBoost在Gradient Boosting框架下实现机器学习算法,提供并行树提升(也称为GBDT,GBM),可以快速准确地解决许多数据科学问题。其目标函数由梯度提升算法损失和正则化项两部分构成,损失函数中加入了正则化项以防止过拟合,并提高了模型的泛化能力。

决策树总结

4.朴素贝叶斯算法(文本分类模型)
贝叶斯公式

LSTM模型(Long Short-Term Memory,长短期记忆)是一种特殊的RNN(循环神经网络),主要是为了解决长序列训练过程中的梯度消失和梯度模型(Long Short-Term Memory,长短期记忆)是一种特殊的RNN(循环神经网络),主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。

LSTM模型是一种强大的深度学习模型,特别适用于处理具有长期依赖关系的序列数据。

语言模型

马尔科夫假设

特点

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智慧环保一体化平台哪家好?(已解答)

在环保行业数字化转型的大潮中,朗观视觉智慧环保一体化平台应运而生,成为推动环境治理现代化的重要手段。选择一个合适的智慧环保一体化平台对于提升环境管理效率、实现精细化监管具有重要意义。本文将从多个维度为您提供一份深度分析与选择指南&#xf…

Python使用virtualenv创建虚拟环境

目录 第一步:安装virtualenv 第二步:选择一个文件夹用来放所创建的虚拟环境 第三步:创建虚拟环境 第四步:激活虚拟环境 第五步:退出虚拟环境 第六步:测试安装django 前提:你得有个python环…

学习通高分免费刷课实操教程

文章目录 概要整体架构流程详细步骤云上全平台登录步骤小结 概要 我之前提到过一个通过浏览器的三个脚本就可以免费高分刷课的文章,由于不方便拍视频进行实操演示,然后写下了这个实操教程,之前的三个脚本划到文章末尾 整体架构流程 整体大…

windows安装rocketmq遇到的问题

运行mqnamesrv.cmd闪退问题。 首先检查是否安装java环境 cdm运行java -version 然后确定环境变量是否配置正确 如果这些地方都没问题那就比较麻烦了,可能是jdk版本(小版本)与rocketmq不匹配。 小编用的版本: jdk是openjdk 1.8…

DOS学习-目录与文件应用操作经典案例-type

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 1. 查看文本文件内容 2. 同时查看多个文本文件内容 3. 合并文…

mysql驱动版本变更导致查询数据结果一直是空

1 引言 最近接手了一个已离职同事的java项目,这个项目中原来使用了自己的mysql驱动版本,并未使用公司公共依赖中的版本号。我想为了统一版本号,就将当前项目中pom文件中mysql的版本号verson给去除了。没怎么自测,就直接发到测试环…

【网络】为什么udp协议报头有长度字段,而tcp没有

引言: 在网络通信中,UDP(用户数据报协议)和TCP(传输控制协议)是两种常用的传输层协议。它们在设计和功能上有一些不同之处,其中之一就是报头中的长度字段。本文将深入探讨UDP和TCP协议中长度字…

解释JAVA语言中关于方法的重载

在JAVA语言中,方法的重载指的是在同一个类中可以存在多个同名方法,但它们的参数列表不同。具体来说,重载的方法必须满足以下至少一条条件: 1. 参数个数不同。 2. 参数类型不同。 3. 参数顺序不同。 当调用一个重载方法时,编译器…

2024 电工杯(B题)数学建模完整思路+完整代码全解全析

你是否在寻找数学建模比赛的突破点?数学建模进阶思路! 作为经验丰富的数学建模团队,我们将为你带来2024电工杯数学建模竞赛(B题)的全面解析。这个解决方案包不仅包括完整的代码实现,还有详尽的建模过程和解…

用队列实现栈,用栈实现队列

有两个地方会讨论到栈,一个是程序运行的栈空间,一个是数据结构中的栈,本文中讨论的是后者。 栈是一个先入后出,后入先出的数据结构,只能操作栈顶。栈有两个操作,push 和 pop,push 是向将数据压…

CentOS7 部署单机版 elasticsearch

一、环境准备 1、准备一台系统为CentOS7的服务器 [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 2、创建新用户,用于elasticsearch服务 # elastic不允许使用root账号启动服务 [rootlocalhost ~]# useradd elastic [rootlo…

【全开源】沃德商协会管理系统源码(FastAdmin+ThinkPHP+Uniapp)

一款基于FastAdminThinkPHPUniapp开发的商协会系统,新一代数字化商协会运营管理系统,以“智慧化会员体系、智敏化内容运营、智能化活动构建”三大板块为基点,实施功能全场景覆盖,一站式解决商协会需求壁垒,有效快速建立…

PostgreSQL事务基础理解

PostgreSQL事务 事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。数据库事务通常包含一个序列对数据库的读和写操作,主要是包含以下两个目的: 为数据库操作序列提供一个从失败中恢复到正常状态的方法&#…

1.Redis之初识Redis分布式系统

1.初识Redis 1.1 官网 Redis中文网 Redis 教程 | 菜鸟教程 (runoob.com) 1.2 解释 在内存中存储数据 定义变量,不就是在内存中存储数据嘛?? Redis 是在分布式系统(进程的隔离性:Redis 就是基于网络,可以把自己内存中的变量给别的进程…

【Linux】简单模拟C语言文件标准库FILE

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…

Java进阶学习笔记10——子类构造器

子类构造器的特点: 子类的全部构造器,都会先调用父类的构造器,再执行自己。 子类会继承父类的数据,可能还会使用父类的数据。所以,子类初始化之前,一定先要完成父类数据的初始化,原因在于&…

【Java面试】一、Redis篇(上)

文章目录 0、准备1、缓存穿透:不存在的key2、缓存击穿:热点key过期3、缓存雪崩:大批key同时过期4、双写一致性4.1 要求高一致性4.2 允许一定的一致延迟 5、面试 0、准备 Redis相关概览: 以简历上所列的项目为切入点,展…

C语言/数据结构——队列的实现

一.前言 今天我们来聊一聊数据结构的一部分——队列。今天我们主要涉及队列的基本概念结构,以及队列的基本实现。 二.正文 1.1队列 1.12队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表&#xf…

ue5 中ps使用记录贴

一、快捷键记录 放大图形 ctrlalt空格 放大图形 缩小视口 ctrl空格 ctrlD 取消选区 ctrlt缩小文字 w魔棒工具 选择魔棒的时候把容差打开的多一点 二、案例 移动文字 在相应的图层选择 移动文字 修改图片里的颜色 在通道里拷贝红色通道,复制红色通道粘贴给正常图…

【ELK日志收集过程】

文章目录 为什么要使用ELK收集日志ELK具体应用场景ELK日志收集的流程 为什么要使用ELK收集日志 使用 ELK(Elasticsearch, Logstash, Kibana)进行日志收集和分析有多种原因。ELK 堆栈提供了强大、灵活且可扩展的工具集,能够满足现代 IT 系统对…