机器学习的概览

笔记内容侵权联系删除

机器学习算法

机器学习(包括深度学习分支)是研究“学习算法”的一门学问。所谓“学习”是指:对于某类任务T和性能度量P,一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么我们称这个计算机程序在从经验E学习。

机器学习算法与传统基于规则的区别

基于规则的方法(特点:使用显性编程来解决问题,规则可以被人工明确)

机器学习算法(特点:使用样本训练,决策的规则复杂或难以描述,由机器自动学习规则)

【问题的解决方案很复杂,或者问题可能涉及到大量的数据却没有明确的数据分布函数
遇到如下情况,可以考虑使用机器学习】

机器学习的整体流程

1.数据收集
2.数据清洗                       

3.特征提取与选择          反馈迭代
4.模型训练
5.模型评估测试
6.模型部署与整合

机器学习基本概念--数据集

数据集:在机器学习任务中使用的一组数据,其中的每一个数据称为一个样本。反映样本在某方面的表现或性质的事项或属性称为特征。
训练集:训练过程中使用的数据集,其中每个训练样本称为训练样本。从数据中学得型的过程称为学习(训练)。
测试集:学得模型后,使用其进行预测的过程称为测试,使用的数据集称为测试集,每个样本称为测试样本。

数据处理的重要性

数据对于模型来说就患至关重要的,是模型能力的天花板,没有好的数据,就没有好的模型

数据预处理  

1.数据清理
填充缺失值,发现并消除造成数据及异常点.

2.数据降维
简化数据属性,避免维度爆炸

3.数据标准化
标准化数据来减少噪声,以及提高模型准确性

数据清理 

 大部分的机器学习模型所处理的都是特征,特征通常是输入变量所对应的可用于模型的数值表示
大部分情况下,收集得到的数据需要经过预处理后才能够为算法所使用,预处理的操作主要包括以下几个部分:
数据过滤
处理数据缺失
处理可能的异常、错误或者异常值
合并多个数据源数据
数据汇总

 “脏”数据
真实的数据中通常会出现一些数据质量问题:

不完整: 数据中缺少属性或者包含一些确实的值。

多噪音: 数据包含错误的记录或者异常点。

不一致: 数据中存在矛盾的、有差异的记录。

数据的转换

对数据进行初步的预处理后,需要将其转换为一种适合机器学习模型的表示形式,以下是一些常见的数据转化的形式。
在分类问题中,将类别数据编码成为对应的数值表示(哑编码)
数值数据转换为类别数据以减少变量的值(对年龄分段)
其他数据

从文本数据中提取有用的数据(一般使用词袋法、TF-IDF或者word2vec)”处理图像数据(颜色空间,灰度化,几何变化,haar特征等,图像增强)。特征工程
对特征进行归一化、标准化,以保证同一模型的不同输入变量的值域相同。特征扩充:对现有变量进行组合或转换以生成新特征,比如平均数

特征选择的必要性
通常情况下,一个数据集当中存在很多种不同的特征,其中一些可能是多余的或者与我们要预测的值无关的。
特征选择技术的必要性体现在:

1简化模型,是模型个容易被使用者所解释
2避免维度爆炸的问题
3减少训练的时间
4提升模型泛化性,避免过拟合

特征选择的方法-Filter
过滤法(filter)在选择特征的时候是独立的,与模型本身无关。

遍历所有特征--选择最佳特征子集--学习算法--性能评估

特征选择的方法-wapper
包装器(wapper)方法使用一个预测模型来对对特征子集进行评分。

遍历所有特征--生成一个特征子集--学习算法--模型评估       

                                选择最佳的特征子集                                                       

  特征选择的方法-Embedded

 嵌入法(Embedded)的方法将特征选择作为型构建的一部分。

遍历所有的特征--生成一个特征子集--学习算法+效果评估 --生成一个特征子集     

                                                      ----选择最佳的特征子集 -----                                      

模型构建项目整体流程

  模型构建综合流程

分割数据:将数据分为训练集,测试集与验证集

训练模型:使用经过数据清理与特征工程的数据来训练

验证模型;使用验证集来验证模型的有效性

微调模型:根据业务实景的真实数据对模型进行不断微调

部署模型:部署到实际的生产场景中

测试模型:使用测试数据来评估模型在真实环境的泛化能力

  什么是好的模型? 

泛化能力
能否在实际的业务数据也能预测准确
可解释性
预测的结果是否容易被解释
预测速率

每一条数据的预测需要多长时间
可塑性
实际业务过程中数据量可能很大,随着业务量增大,预测的速率是否仍然可以接受       

模型的有效性(1)
泛化能力:机器学习的目标是使学得的模型能够很好的适用于新的样本,而不是仅仅在训练样本上工作的很好,学得的模型适用于新样本的能力称为泛化能力,也称为鲁棒性。

误差:学习到的模型在样本上的预测结果与样本的真实结果之间的差。
训练误差:模型在训练集上的误差。
泛化误差:在新样本上的误差。显然,我们更希望得到泛化误差小的模型。
欠拟合:如果训练误差很大的现象。
过拟合:如果学得的模型的训练误差很小,而泛化能力较弱即泛化误差较大的现象。  

模型的有效性(2)
模型的容量:指其拟合各种函数的能力,也称为模型的复杂度。
容量适合于执行任务的复杂度和所提供训练数据的数量时,算法效果通常会最佳;

容量不足的模型不能解决复杂任务,可能出现欠拟合;
容量高的模型能够解决复杂的任务,但是其容量高于任务所需时,有可能会过拟合。

过拟合的原因-误差

随着模型复杂度上升的增加,训练误差逐渐减小
同时,测试误差会随着复杂的增大而减小到某一点,继而反向增大,形成一条凸曲线

其他机器学习的重要方法

机器学习训练方法--梯度下降

梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,该方向为当前位置最快下降方向,梯度下降中越接近目标值,变化量越小

批量梯度下降(BGD),使用所有数据集中的样本(共m个样本)在当前点的梯度之和来对
权重参数进行更新操作。

随机梯度下降(SGD),随机选取一个数据集中的样本在当前的梯度来对权重参数进行更新操作

小批量梯度下降(MBGD),结合BGD与SGD的特性,每次选择数据集中n个样本的梯度来对权重参数进行更新操作。

三种梯度下降方法的比较
SGD中,因为每次训练选取的样本是随机的,这本身就带来了不稳定性,会导致损失函数在下降到最低点的过程中,产生动荡甚至反向的位移。
BGD最稳定,但是过于消耗运算资源,MBGD是SGD与BGD平衡之后的方法

模型中的参数与超参数
模型中不但有参数,还有超参数的存在。其目的是为了让模型能够学习到最佳的参数
参数有模型自动学习
超参数由人工手动设定

模型的超参数
模型超参数常应用于估计模型参数的过程中。
模型超参数通常由实践者直接指定模型超参数通常可以使用启发式方法来设置。
模型超参数通常根据给定的预测建模问题而调整。

超参数的调节方法-网格搜索
网格搜索尝试穷举搜索所有可能的超参数组合形成超参数值网格。
在实践中,人工指定的范围和步骤之间的值。

超参数的调节方法-随机搜索
在超参数搜索空间较大的情况下,采用随机搜索,会优于网格搜索的效果
随机搜索实现了对超参数的随机搜索,其中每个设置都是从可能的参数值的分布中进行取样,试图找出最佳的超参数子集

交叉验证

是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据进行分组,一部分作为训练集,另一部分作为验证集,首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型,以此来做为评价分类器的性能指标。【也可以调节超参数】

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

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

相关文章

【MySQL】MySQL的笛卡尔积现象是什么?简单说说

笛卡尔积好像是个科学家,也是个学术概念,在MySQL中表示交叉连接,即:匹配一切所有的可能 举例如下: 准备两张表 【employee表】 emp_idlast_namedept_id1Smith12Johnson2 【department表】 dept_iddepartment_nam…

spring-data-elasticsearch 3.2.4 实现桶bucket排序去重,实现指定字段的聚合搜索

一、背景 es索引有一个文档CourseIndex,下面是示意: creatorIdgradesubjectnameno1002270英语听力课程一N00232DS91004380数学口算课程N00209DK71003480物理竞赛课程N00642XS21002280英语听力课程二N00432WS31002290英语听力课程三N002312DP5 在搜索的时候&#…

MIT6.5840 Lab 1: MapReduce(6.824)

结果 介绍 在本实验中,您将构建一个MapReduce系统。您将实现一个调用应用程序Map和Reduce函数并处理文件读写的工作进程,以及一个将任务分发给工作进程并处理失败的工作进程的协调进程。您将构建类似于MapReduce论文的东西。(注意&#xff1a…

MYSQL- 展示事件信息 EVENTS 语句(十八)

13.7.5.18 SHOW EVENTS 语句 SHOW EVENTS[{FROM | IN} schema_name][LIKE pattern | WHERE expr]此语句显示有关事件管理器事件的信息,这些信息在第23.4节“使用事件调度器”中进行了讨论。它要求显示事件的数据库具有EVENT权限。 以最简单的形式,SHOW…

WPF Gif图谱 如果隐藏的话会存在BUG

<hc:GifImageWidth"110"Height"110"Margin"20,20,0,0"Stretch"None"Uri"./../WPF/Asset/Image/fire_on.gif"Visibility"{Binding FireVisibility}" />FireVisibility 初始状态必须为&#xff1a;Visibility…

nfs服务器--RHCE

一&#xff0c;简介 NFS&#xff08;Network File System&#xff0c;网络文件系统&#xff09;是FreeBSD支持的文件系统中的一种&#xff0c;它允许网络中的计 算机&#xff08;不同的计算机、不同的操作系统&#xff09;之间通过TCP/IP网络共享资源&#xff0c;主要在unix系…

Linux驱动开发——设备树随记

Linux驱动开发——设备树随记 前言 在嵌入式Linux这块&#xff0c;对设备树一直都没怎么去了解&#xff0c;一直是模模糊糊的。所以最近也是被老大赶鸭子上架&#xff0c;快速跟着正点原子的驱动开发的课程学了一下。感觉对设备树的认识也是更清晰了一点。同样借着此篇博客记…

Uni-APP+Vue3+鸿蒙 开发菜鸟流程

参考文档 文档中心 运行和发行 | uni-app官网 AppGallery Connect DCloud开发者中心 环境要求 Vue3jdk 17 Java Downloads | Oracle 中国 【鸿蒙开发工具内置jdk17&#xff0c;本地不使用17会报jdk版本不一致问题】 开发工具 HBuilderDevEco Studio【目前只下载这一个就…

[每日一氵] PySpark 的 log GC 部分是什么意思

2024-11-15T11:10:40.2920800: 2850.503: [GC (Allocation Failure) [PSYoungGen: 142705K->3472K(141312K)] 1403514K->1264289K(1543168K), 0.0170225 secs] [Times: user0.05 sys0.00, real0.01 secs] 这一行日志来自Java的垃圾收集器&#xff08;Garbage Collector, …

sslSocketFactory not supported on JDK 9+

clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on JDK 9 at okhttp3.internal.platform.Jdk9Platform.trustManager(Jdk9Platform.kt:61) at okhttp3.OkHttpClient$Builder.sslSocketFactory(OkHttpClient.kt:751) at 1.升版本4.9.3以上 2、加个函数获取X…

「Mac玩转仓颉内测版8」入门篇8 - Cangjie函数与方法

本篇介绍Cangjie编程语言中的函数与方法&#xff0c;帮助理解如何通过函数封装重复操作&#xff0c;提升代码的复用性和可维护性。 关键词 Cangjie函数方法定义参数传递返回值模块化与复用性 一、什么是函数&#xff1f; 函数是一个代码块&#xff0c;用于接收参数、执行操作…

ubuntu 16.04 中 VS2019 跨平台开发环境配置

su 是 “switch user” 的缩写&#xff0c;表示从当前用户切换到另一个用户。 sudo 是 “superuser do” 的缩写&#xff0c;意为“以超级用户身份执行”。 apt 是 “Advanced Package Tool” 的缩写&#xff0c;Ubuntu中用于软件包管理的命令行工具。 1、为 root 用户设置密码…

git没有识别出大写字母改成小写重命名的文件目录

Git 默认不会跟踪大写字母和小写字母的区别&#xff0c;因为在大多数文件系统中&#xff0c;大写字母和小写字母被认为是相同的文件&#xff0c;只有在区分大小写的文件系统中&#xff08;如 macOS 的 HFS 或 Windows 的 NTFS&#xff09;&#xff0c;这才是一个问题。 如果重命…

Java集合ConcurrentHashMap——针对实习面试

目录 Java集合ConcurrentHashMapConcurrentHashMap的特性是什么&#xff1f;HashMap和ConcurrentHashMap的区别&#xff1f;说说ConcurrentHashMap的底层实现 Java集合ConcurrentHashMap ConcurrentHashMap的特性是什么&#xff1f; 线程安全性 多线程并发读写安全&#xff1a…

游戏引擎学习第16天

视频参考:https://www.bilibili.com/video/BV1mEUCY8EiC/ 这些字幕讨论了编译器警告的概念以及如何在编译过程中启用和处理警告。以下是字幕的内容摘要&#xff1a; 警告的定义&#xff1a;警告是编译器用来告诉你某些地方可能存在问题&#xff0c;尽管编译器不强制要求你修复…

数据库几道简答题

1。 什么是数据库? 答&#xff1a;数据库是长期存储在计算机内、有组织的、可共享的数据集合。数据库是按某种数据模型进行组织的、存放在外存储器上&#xff0c;且可被多个用户同时使用。因此,数据库具有较小的冗余度,较高的数据独立性和易扩展性. 2。 什么是数据库的数据独…

使用--log-file保存pytest的运行日志

前面使用了tee和重定向来保存pytest的运行日志&#xff0c;这次使用--log-file&#xff0c;因为它可以配置日志的级别、格式和每行日志的生成时间。 pytest -q -s -ra --count100 test_open_stream.py --alluredir./report/CXL --log-filepytest_log.txt 【pytest.ini】 使用…

【题目3】C++类的设计——07年复试笔试题

【题目】07年C复试笔试真题 定义一个处理日期的类TDate&#xff0c;它有3个私有数据成员&#xff1a;Month,Day,Year和若干共有成员函数&#xff0c;实现如下要求[附条件解读] ①构造函数重载→创建无参构造函数有参构造函数 ②成员函数设置缺省参数→与④一同可用set()在类中实…

【STL】set,multiset,map,multimap的介绍以及使用

关联式容器 在C的STL中包含序列式容器和关联式容器 1.关联式容器&#xff1a;它里面存储的是元素本身&#xff0c;其底层是线性序列的数据结构&#xff0c;比如&#xff1a;vector&#xff0c;list&#xff0c;deque&#xff0c;forward_list(C11)等 2.关联式容器里面储存的…

VUE+SPRINGBOOT实现邮箱注册、重置密码、登录功能

随着互联网的发展&#xff0c;网站用户的管理、触达、消息通知成为一个网站设计是否合理的重要标志。目前主流互联网公司都支持手机验证码注册、登录。但是手机短信作为服务端网站是需要付出运营商通信成本的&#xff0c;而邮箱的注册、登录、重置密码&#xff0c;无疑成为了这…