机器学习中的基础问题总结

介绍:总结面试经常问到的一些机器学习知识点(必会🌟)

基础知识点梳理

  • 模型评估
  • 一、L1、L2正则化
    • 1、L1正则与L2正则有何不同?
    • 2、为什么正则化可以防止过拟合?
    • 3、为什么L1正则具有稀疏性?(为什么L1正则可以特征选择?)
  • 二、损失函数
    • 常见损失函数
      • 交叉熵
  • 三、过拟合与欠拟合
    • 1、如何降低过拟合
    • 2、如何降低欠拟合
  • 四、梯度爆炸和梯度消失
    • 解决方法
  • 五、激活函数
    • 1.引入库
    • 2.读入数据
  • 优化算法
  • 传统的机器学习模型


模型评估

tips:准确率(A)、精确率(P)、召回率(R)、均方根误差、F1 score

1、准确率:分类正确的样本占总样本个数的比例
局限:当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率低最主要因素。

2、精确率:分类正确的正样本个数占分类器判定为正样本的样本个数的比例
Precision P = TP/(TP + FP)
3、召回率:分类正确的正样本个数占真正的样本个数的比例
Recall R = TP/(TP+FN)
4、F1 score:精准率和召回率低调和平均值

在这里插入图片描述
在这里插入图片描述
tips:ROC曲线、P-R曲线、AUC(曲线下的面积)

ROC:当正负样本发生变化时,ROC形状基本不变,P-R曲线形状发生剧烈变化
AUC:表示预测的正例排在负例前面的概率 P-R曲线:比面积


提示:以下是本篇文章正文内容,下面案例可供参考

一、L1、L2正则化

  • y = wx + b(w决定模型曲线,b决定模型平移情况)

L1、L2正则化是针对w(权重)的正则化
L1、L2指的是范数

1、L1正则与L2正则有何不同?

  • L1是模型各个参数的绝对值之和,L2是各个参数平方和的开方
  • L1:产生少量的特征,其他特征为0,最优的参数值大概率出现在坐标轴,进而导致产生稀疏的权重矩阵,
    L2:选择更多的矩阵,这些矩阵趋向于0

2、为什么正则化可以防止过拟合?

通过为模型加一个正则化项可以防止过拟合
数学角度:
参数量角度:由于模型复杂度与参数个数正相关,令一些参数为0后,模型复杂度降低,进而可以防止过拟合

3、为什么L1正则具有稀疏性?(为什么L1正则可以特征选择?)

从以下三个角度进行说明:
解空间形状

带正则项等价于带约束条件,L2正则化相当于为参数定义了一个圆形的解空间,L1正则化相当于定义了一个圆形解空间,若原问题的最优解不在解空间内,“棱角分明”的L1解空间更容易与目标函数在角点相碰,从而产生稀疏解。

在这里插入图片描述
贝叶斯先验

L1正则化相当于对参数w引入了拉普拉斯先验,L2正则化相当于引入了高斯先验,拉普拉斯先验使参数为0的可能性更大

二、损失函数

用来量化模型预测和真实标签之间的差异

常见损失函数

平方损失(预测问题)、交叉熵损失(分类问题)、hinge损失(SVM)、残差损失(CART回归树)

交叉熵

三、过拟合与欠拟合

过拟合:模型在训练数据上表现良好但在未见过的测试数据上表现不佳。【常发生在模型过于复杂或训练数据过少时】
欠拟合:模型无法在训练数据上学习到足够的信息,导致无法很好的拟合数据。【常发生在模型过于简单或者训练数据过于复杂时】

1、如何降低过拟合

  1. 增加训练数据量 (数据增广)
  2. 使用正则化(L1、L2)
    【L1产生更少的特征向量,其他特征的权值为0;L2选择更多的特征,每个特征权值都比较小】
  3. 简化模型结构,减少模型复杂度
  4. 在过拟合前提前结束训练
  5. Dropout(神经网络)
  6. 使用交叉验证等技术来评估模型等泛化能力

2、如何降低欠拟合

  • 增加模型复杂度(增加模型的层数或参数数量)
  • 对数据进行特征工程,提取更多的有效特征
  • 减少(或移除)正则化的程度
  • 增加训练时间,让模型有更多机会学习数据的规律

四、梯度爆炸和梯度消失

  • 梯度消失成因:一是在深层网络中;二是采用了不适合的损失函数(如Sigmoid)
  • 梯度爆炸一般出现在深层网络权值初始化太大的情况下

解决方法

1、使用relu等激活函数,使得导数一直为1
2、残差结构
3、LSTM
4、 batchnorm:反向传播式子中有x xx的存在,所以x的大小影响了梯度的消失和爆炸,batchnorm就是通过对每一层的输出规范为均值和方差一致的方法,消除了x带来的放大缩小的影响

参考

五、激活函数

1.引入库

2.读入数据

优化算法

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

传统的机器学习模型

1、回归算法
LR(分类) 与线性回归(预测)
线性回归使用最小二乘法计算参数,LR用最大似然估计
线性回归更容易受到异常值的影响,LR、更稳定
2、决策树学习

决策树根据问题属性采用树状结构建立决策模型,用于解决分类回归问题

3、聚类算法(K-Means)

按照中心点或分层的方式对数据进行归并,试图找到数据结构的内在结构以便按照最大的共同点将数据进行归类

4、人工神经网络

是一种模式匹配算法,用于解决分类回归问题。

5、集成算法(Boosting、Bootstrapped Aggregation(Bagging)、AdaBoost、随机森林)

用一些相对较弱的模型独立的对同样的样本进行训练,然后把结果整合起来进行整体预测

6、基于核的算法(如SVM)

把输入数据映射到一个高阶的向量空间,进而解决在低阶向量空间无法解决的分类问题。

7、关联规则

通过寻找最能解释数据变量之间关系的规则,找出大量多元数据集中有用的关联规则

8、贝叶斯方法(朴素贝叶斯)

用于解决分类回归

9、降维算法(PCA、PLS、MDS)

以非监督学习的方式,试图用较少的信息解释或归纳数据。【有点像聚类】

10、基于实例的算法

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

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

相关文章

JMeter之IP欺骗技术(模拟不同的IP地址并发请求)

我们在做压力测试时,有这样的场景和需求,希望模拟的批量用户来自不同的IP地址。如果小伙伴用LR是很容易实现的,用IP欺骗即可实现。那么对于用JMeter小伙伴是不是就不能享受这一技术了呢,答案是否定的,JMeter一样可以实…

【晴问算法】入门篇—贪心算法—整数配对

题目描述 有两个正整数集合S、T,其中S中有n个正整数,T中有m个正整数。定义一次配对操作为:从两个集合中各取出一个数a和b,满足a∈S、b∈T、a≤b,配对的数不能再放回集合。问最多可以进行多少次这样的配对操作。 输入描…

Elasticsearch:调整近似 kNN 搜索

在我之前的文章 “Elasticsearch:调整搜索速度”,我详细地描述了如何调整正常的 BM25 的搜索速度。在今天的文章里,我们来进一步探讨如何提高近似 kNN 的搜索速度。希望对广大的向量搜索开发者有一些启示。 Elasticsearch 支持近似 k 最近邻…

一、yocto 编译raspberrypi 4B并启动

yocto 编译raspberrypi 4B并启动 yocto 编译raspberrypi 4B并启动环境准备代码下载编译及配置烧录 yocto 编译raspberrypi 4B并启动 本篇文章为基于raspberrypi 4B单板的yocto实战系列的开篇之作。 环境准备 最近到手一个树莓派4B,准备拿来玩一玩,下面…

Docker部署Django项目——基础

1.服务器配置 1.1centos7 系统的安装 centos-7-isos-x86_64安装包下载) VMware安装自定义配置 选择对应的系统镜像 一般选择内核4核、内存8g、硬盘80g 相关配置 1.2.网络配置 1.2.1查看win电脑虚拟机VMnet8的ip 使用ipconfig查看虚拟机的ip 1.2.2配置虚拟机VMnet8的ip…

152.乐理基础-广义的、实际的原位与转位、转位的意义

内容参考于:三分钟音乐社 上一个内容:151.和弦固定标记法(二)转位和弦,斜杠(slash)和弦 上一个内容里练习的答案:斜杠左边的有多个写法,如果与下图不一样,那…

小白向-使用git实现不同服务器改动的同步

背景 深度学习项目,已有可运行的backbone,已将此项目在github建库。 需要使用不同分支进行不同改动的测试;有两台服务器可供程序运行; 项目需求 以github云端仓库为媒介,实现不同服务器改动无痛关联。维护项目代码…

WRF模型安装教程(ububtu系统)-- III.WRF和WPS模型的安装

六、WRF模型的安装 # 进入Build_WRF文件夹 cd Build_WRF # 下载WRFV3.9.1 wget https://www2.mmm.ucar.edu/wrf/src/WRFV4.0.TAR.gz # 解压WRF安装包并进入 tar -zxvf WRFV4.0.TAR.gz cd WRF # 安装WRF ./configure 出现如下选项: 选择34, 这里是让你选…

FREERTOS任务调度和切换

我们已经学会了 FreeRTOS 的任务创建和删除,挂起和恢复等基本操作,并且也学习了分析FreeRTOS 源码所必须掌握的知识:列表和列表项。但是任务究竟如何被创建、删除、挂起和恢复的?系统是怎么启动的等等这些我们还不了解&#xff0c…

windows使用docker运行TP6使用swoole内置http服务

1,下载docker-Windows客户端 下载地址:https://www.docker.com/products/docker-desktop docker --version #查看docker版本 docker-compose --version #查看docker-compose版本 2,安装环境 使用一键安装包:https://gitee.com/yes…

汇总全网免费API,持续更新(新闻api、每日一言api、音乐。。。)

Public&FreeAPI 网址:apis.whyta.cn (推荐) UomgAPI 网址:https://api.uomg.com 教书先生 网址:https://api.oioweb.cn/ 山海API https://api.shserve.cn/ 云析API铺 https://api.a20safe.com/ 韩小韩…

深度学习pytorch——基本数据类型创建Tensor(持续更新)

声明:本深度学习笔记基于课时18 索引与切片-1_哔哩哔哩_bilibili学习而来 All is about Tensor 定义:Tensors are simply mathematical objects that can be used to describe physical properties, just like scalars and vectors. In fact tensors a…

day6 3/18

2.试编程: 封装一个动物的基类,类中有私有成员:姓名,颜色,指针成员年纪 再封装一个狗这样类,共有继承于动物类,自己拓展的私有成员有:指针成员:腿的个数(整…

JAVA实战开源项目:天然气工程业务管理系统(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、使用角色3.1 施工人员3.2 管理员 四、数据库设计4.1 用户表4.2 分公司表4.3 角色表4.4 数据字典表4.5 工程项目表4.6 使用材料表4.7 使用材料领用表4.8 整体E-R图 五、系统展示六、核心代码6.1 查询工程项目6.2 工程物资…

HackTheBox WifineticTwo

靶机信息系统LinuxIP/难度Medium状态Active/Reason 4地址https://app.hackthebox.com/machines/WifineticTwo 端口扫描 ┌──(st4rry🚀Kali)-[/mnt/e/htb/WifineticTwo] └─\ ✨ nmap -p22,8080 -sC -sV 10.129.41.69 -oN cv Starting Nmap 7.94 ( https://nma…

【Django开发】0到1美多商城项目md教程第2篇:展示用户注册页面,1. 创建用户模块子应用【附代码文档】

美多商城完整教程(附代码资料)主要内容讲述:欢迎来到美多商城!,项目准备。展示用户注册页面,创建用户模块子应用。用户注册业务实现,用户注册前端逻辑。图形验证码,图形验证码接口设…

【C语言进阶篇】C语言内存函数

目录 1.memcpy函数及其模拟实现 1.1 memcpy函数的使用 1.2 memcpy函数的模拟实现 2.memmove函数及其模拟实现 2.1 memmove函数的使用 2.2 memmove函数的模拟实现 3.memset函数 4.memcmp函数 1.memcpy函数及其模拟实现 1.1 memcpy函数的使用 memcpy函数是用来拷贝内存的函数&…

mysql 索引(为什么选择B+ Tree?)

索引实现原理 索引:排好序的数据结构 优点:降低I/O成本,CPU的资源消耗(数据持久化在磁盘中,每次查询都得与磁盘交互) 缺点:更新表效率变慢,(更新表数据,还要…

数据的响应式:实现动态数据驱动的技巧

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

洛谷P1100 高低位交换

#先看题目 题目描述 给出一个小于 的非负整数。这个数可以用一个 32 位的二进制数表示(不足 32 位用 0 补足)。我们称这个二进制数的前 16 位为“高位”,后 16 位为“低位”。将它的高低位交换,我们可以得到一个新的数。试问这…