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

机器学习的概览

笔记内容侵权联系删除

机器学习算法

机器学习(包括深度学习分支)是研究“学习算法”的一门学问。所谓“学习”是指:对于某类任务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.kler.cn/a/398983.html

相关文章:

  • PHP代码审计 --MVC模型开发框架rce示例
  • CPU执行指令的过程
  • [ACTF2020]Upload 1--详细解析
  • docker启动训练容器教程
  • 微信小程序:vant组件库安装步骤
  • npm install命令报错:npm ERR Could not resolve dependency npm ERR peer…
  • 【金融风控】样本不均衡和异常点检测
  • 随机森林(Random Forest, RF)筛选回归数据(处理异常值)
  • sql注入之二次注入(sqlilabs-less24)
  • JSON.stringify的应用说明
  • ARM(安谋) China处理器
  • 多进程/线程并发服务器
  • 如何判断FPGA能够接入几个Camera
  • STM32外设应用:深入探索STM32微控制器的强大功能
  • 2024 RISC-V中国峰会 安全相关议题汇总
  • 聊天服务器(3)muduo网络库
  • IDEA优雅debug
  • 重构代码之替换算法
  • 9.C++面向对象6(实现一个较为完善的日期类)
  • 高效稳定!新加坡服务器托管方案助力企业全球化布局
  • centos7.9安装mysql社区版
  • 动态规划子数组系列一>乘积最大子数组
  • 介绍一下strcmp(c基础)
  • AI赋能社交平台:Facebook的智能化未来
  • 举例理解LSM-Tree,LSM-Tree和B+Tree的比较
  • 【jvm】方法区是否存在GC