1 线性回归
线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x+e,e为误差服从均值为0的正态分布。
1 数据+画图
2 一般向量形式
3 最小二乘法损失函数
4 矩阵形式
5 几何解释
6 岭回归,laso回归
2 逻辑回归
一种广义的线性回归问题


求极大似然函数估计值的一般步骤:
- 写出sigmoid函数,并解释
- 写出不同分类下概率值结果(借助sigmoid计算)
- 写出MLE似然函数,取对数并整理;(因为xi是从1到n的独立同分布所以可以写成连乘)


- LR对数据要求是伯努利分布的数据
为什么要是用sigmoid激活函数
- 首先要讲清得是,sigmoid不是只有我们看到的这个函数,他是具有s形状的函数总称
- 可以从伯努利分布推导
- sigmoid可以从softmax这边推导过来,逻辑回归本身就是Softmax回归在二分类的情况
逻辑回归和线性回归的区别
- 先说逻辑回顾是广义的线性回归,在线性回归的结果上添加sigmoid函数,将线性回归的值域映射到0-1
- 一个处理回归问题,逻辑回归处理分类问题
- 线性回归问题的话,求自变量和因变量呈线性关系;而逻辑回归不要求自变量和因变量呈线性关系
- 线性回归期望结果服从正太分布,逻辑回归期望结果服从伯努利分布
- 损失函数不同
3 感知机
- 假设线性可分
- 设定样本集,提出D为错误分类样本集
- 给出模型,sign函数
- 损失函数,指数函数,I{为真=1,为假时=0},指数函数不连续,不可导
- 直接用L(w)=求和-y(wx+b),求导,SDG得到w
4 K-means与KNN
K-Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。
https://www.bilibili.com/video/av29441024/?p=1
https://blog.csdn.net/qq_21840201/article/details/84504097
https://zhuanlan.zhihu.com/p/41984544
- 数据一定要做预处理,去除不同特征纲量的影响
- 关键点:K值的选择
- 目标函数:

- 质心更新公式:

- 欧式距离计算公式:

算法收敛的条件为
聚类中心不再发生变化,或者是达到一定的迭代次数等。该算法不能保证收敛到全局最优点。
K值的选择
- 经验法
- 手肘法,我们知道k-means是以最小化样本与质点平方误差作为目标函数,将每个簇的质点与簇内样本点的平方距离误差和称为畸变程度(distortions),那么,对于一个簇,它的畸变程度越低,代表簇内成员越紧密,畸变程度越高,代表簇内结构越松散。 畸变程度会随着类别的增加而降低,但对于有一定区分度的数据,在达到某个临界点时畸变程度会得到极大改善,之后缓慢下降,这个临界点就可以考虑为聚类性能较好的点。如图,k应该选3

评价指标
- 样本离最近聚类中心的距离总和
- 轮廓系数 https://www.jianshu.com/p/6352d9d468f8
- 兰德指数
- 同质化得分
其他变种
https://blog.csdn.net/weixin_37536446/article/details/81326932
K-Means++
就是先选一个样本点为质心,计算所有样本到质心的欧氏距离,然后选择距离较大的(不是距离最远的)点作为新增的质心,迭代直至选出K个质心,作为初始化的质心去运行标准的K-Means算法。
elkan K-Means
减少计算量的,通过三个点之间的运用两边之和大于第三边,两边之差小于第三边。
5 SVM



样本不平衡对SVM的影响
SVM对样本不平衡不敏感,因为他只关注支持向量,因此远离决策超平面的数据的多少并不重要。
核函数
支持向量机通过某非线性变换 φ( x) ,将输入空间映射到高维特征空间。特征空间的维数可能非常高。如果支持向量机的求解只用到内积运算,而在低维输入空间又存在某个函数 K(x, x′) ,它恰好等于在高维空间中这个内积,即K( x, x′) =<φ( x) ⋅φ( x′) > 。那么支持向量机就不用计算复杂的非线性变换,而由这个函数 K(x, x′) 直接得到非线性变换的内积,使大大简化了计算。这样的函数 K(x, x′) 称为核函数。
实例
人脸识别:https://blog.csdn.net/weixin_40893939/article/details/94652529
SVM和LR有什么异同
相同点
- 如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。
- LR和SVM都是判别模型。
不同点
- 支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用)
- 在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法
- SVM的损失函数就自带正则!!!(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!
-
SVM不能直接输出概率,LR可以
-
SVM一般要进行数据的normalization 的处理,因为SVM依赖于数据的距离测度,但是LR一般不用,但是如果LR加上了正则项,也需要normalization
LR和SVM的选择
- 如果feature特别多,跟数据量差不多,这时候选LR或者Linear Kernel SVM
- 如果feature不多,样本数量一般,不大不小,选SVM+RBFKernel
- 如果feature不多,样本数量多,则手动提取feature构成第一种情况
SVM的kernel一般怎么选
- 数据量不大选RBFkernel+正则
- 如果数据量大,需要把特征离散化,拉伸维度,再使用LinearKernel SVM
7 决策树与随机森林
https://www.cnblogs.com/pinard/p/6050306.html
https://www.cnblogs.com/pinard/p/6053344.html
决策树关键词
- 信息熵
- 联合熵,条件熵
- 信息增益
- 连续特征的离散化
- 信息增益比
- 特征熵
- Gini系数
C4.5的缺点
- 容易过拟合需要剪枝
- 多叉树,二叉树更容易计算
- 只能用于分类
- 有大量的对数运算
8 贝叶斯分类器

基础知识点
1 预处理
https://zhuanlan.zhihu.com/p/29974820
1 normalization
一般是把数据限定在需要的范围,比如一般都是【0,1】,从而消除了数据量纲对建模的影响。
2 standardization
![]()
零中心和归一化,一般是指将数据正态化,使平均值0方差为1。使数据同分布。
https://www.bilibili.com/video/av16540598?from=search&seid=8613933256700171258
因此normalization和standardization 是针对数据而言的,消除一些数值差异带来的特种重要性偏见。经过归一化的数据,能加快训练速度,促进算法的收敛。
3 PCA(主成分分析principal components analysis)
https://www.zhihu.com/question/41120789/answer/481966094
https://blog.csdn.net/a8039974/article/details/81285238
背景
保持数据集中的对方差贡献最大的特征。过拟合的一种处理方法,因为维度更高的话,会造成维度灾难,维度灾难是造成过拟合的原因。在数学上考虑,维度过高需要的样本数也需要更多,每增加一维特征,需要 的样本数量是程指数级增长的 。使数据独立
- 一个中心:重构特征空间,去除特征空间中的相关性,形成线性无关的基。这组线性无关的基,矩阵的特征向量,也就是主成分。
- 两个基本点:最大投影方差,最小重构代价(距离)
步骤
- 数据预处理,中心化
- 写数据间的协方差矩阵
- 计算协方差矩阵的特征向量和特征值
- 根据特征值,把n维的样本数据分别映射到这d个特征向量的方向上,选择d个模式矢量
- 得到降维后的数据
4 SVD奇异值变换
进行奇异值分解,不同主元分配不同奇异向量
https://www.matongxue.com/madocs/306.html
- 一种矩阵变化,完成旋转和拉伸
- 最后选择特征值大的留下
5 数据为什么要进行预处理
https://blog.csdn.net/qq_38978225/article/details/100652108
- 使数据呈现独立同分布的状态,然而并不是说所有算法都要求数据呈现独立同分布,但是独立同分布的数据会简化模型的训练,提升机器学习模型的预测能力。BN缘由就是因为数据在隐层不在是独立同分布,导致学习停滞。
- 对于需要使用梯度下降方法的算法,需要将不同纲量下的数据在同一范围内变化,统一纲量。
6 白化
白化是一类算法的总称,PCA就算白化,他的主要目的就是去除冗余数据(去除相关性),是数据呈现同分布(使得所有特征具有相同的均值和方差)。
2 激活函数
1 sigmoid
![]()

2 Relu
![]()

ReLU函数相对于tanh和sigmoid函数好在哪里:
第一,采用sigmoid等函数,算激活函数是(指数运算),计算量大;反向传播求误差梯度时,求导涉及除法,计算量相对大。而采用Relu激活函数,整个过程的计算量节省很多。
第二,对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0),这种情况会造成信息丢失,梯度消失在网络层数多的时候尤其明显,从而无法完成深层网络的训练。
第三,ReLU会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。
3 leaky Relu


4 tanh


3 概率输出函数softmax

语言解释什么是softmax函数
softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!
是一个soft版本的argmax
4 损失函数
1 均方误差MSE

2 交叉熵
二值和多值有点区别
binary cross-entropy

category cross-entropy

3 Smooth L1损失

4 合页损失

5 梯度下降法
BGD\SGD\MBGD\BGDM\NAG\Adagrad\Adadetla\Adam\Nadam

https://zhuanlan.zhihu.com/p/32230623
为什么Adam这么好,很多人还喜欢用SGD:
1 他可能错过最优解
深度神经网络往往包含大量的参数,在这样一个维度极高的空间内,非凸的目标函数往往起起伏伏,拥有无数个高地和洼地。有的是高峰,通过引入动量可能很容易越过;但有些是高原,可能探索很多次都出不来,于是停止了训练。
2 他可能不收敛
SGD没有用到二阶动量,因此学习率是恒定的(实际使用过程中会采用学习率衰减策略,因此学习率递减)。AdaGrad的二阶动量不断累积,单调递增,因此学习率是单调递减的。因此,这两类算法会使得学习率不断递减,最终收敛到0,模型也得以收敛。但AdaDelta和Adam则不然。二阶动量是固定时间窗口内的累积,随着时间窗口的变化,遇到的数据可能发生巨变,使得 Vt 可能会时大时小,不是单调变化。这就可能在训练后期引起学习率的震荡,导致模型无法收敛。
为什么不建议使用BGD,而推荐SGD
BGD就是最原始的方法,是用全部数据更新
SGD引入随机因素,即便陷入局部极小,梯度也可能不为0,这样就有机会跳出局部极小继续搜索(可以作为跳出局部极小的一种方式,但也可能跳出全局最小
相关的MSGD参考
批量大小如何影响测试正确率?
https://blog.csdn.net/weixin_40893939/article/details/102020005
6 凸优化问题
即要求目标函数是凸函数,变量所属集合是凸集合的优化问题。或者目标函数是凸函数,变量的约束函数是凸函数(不等式约束时),或者是仿射函数(等式约束时)。对于凸优化问题来说,局部最优解就是全局最优解。优化问题:在解集中寻找最优解。
7 损失函数、代价函数、目标函数的区别
损失函数:计算的是一个样本的误差
代价函数:是整个训练集上所有样本误差的平均
目标函数:代价函数 + 正则化项
8 梯度爆炸与梯度消失
https://zhuanlan.zhihu.com/p/25631496
消失
- 梯度消失是在深层网络中
- 采用了不合适的损失函数,比如sigmoid。
梯度消失解决办法
- pretrain+finetuning
- 权重剪枝(设定阈值)
- 跟换激活函数
- 使用残差结构
- 使用batch-normalization
- 权重正则化
爆炸
梯度爆炸一般出现在权值初始化值太大的情况下
梯度爆炸解决办法
使用ReLU函数,使得梯度稳定
使用正则化,即检查网络中权重的大小,对较大的权重进行惩罚,限制了梯度爆炸造成的权重变得很大的情况
9 范数
范数是衡量某个向量空间(或矩阵)中的每个向量以长度或大小。 范数定义如下:

13 L1、L2正则化
https://www.bilibili.com/video/av16009446?from=search&seid=8821405701843943153

https://www.zhihu.com/question/37096933?sort=created
https://zhuanlan.zhihu.com/p/35356992
正则化的作用
对模型添加正则化项可以限制模型的复杂度,使得模型在复杂度和性能达到平衡。
L1
L1正则化有一个有趣的性质,它会让权重向量在最优化的过程中变得稀疏(即非常接近0)。也就是说,使用L1正则化的神经元最后使用的是它们最重要的输入数据的稀疏子集,同时对于噪音输入则几乎是不变的了。相较L1正则化,L2正则化中的权重向量大多是分散的小数字。
L2
L2正则化可以直观理解为它对于大数值的权重向量进行严厉惩罚,倾向于更加分散的权重向量。由于输入和权重之间的乘法操作,这样就有了一个优良的特性:使网络更倾向于使用所有输入特征,而不是严重依赖输入特征中某些小部分特征。 L2惩罚倾向于更小更分散的权重向量,这就会鼓励分类器最终将所有维度上的特征都用起来,而不是强烈依赖其中少数几个维度。这样做可以提高模型的泛化能力,降低过拟合的风险。
在实践中,如果不是特别关注某些明确的特征选择,一般说来L2正则化都会比L1正则化效果好。
正则化参数 λ

我们一般会为正则项参数添加一个超参数λ或者α,用来平衡经验风险和结构风险(正则项表示结构风险)。
以 L2 为例,若 λ 很小,就是说我们考虑经验风险更多一些,对于结构风险没有那么重视,约束条件更为宽松。对应上文中的 C 值就很大。这时候,圆形区域很大,能够让 w 更接近中心最优解的位置。若 λ 近似为 0,相当于圆形区域覆盖了最优解位置,这时候,正则化失效,容易造成过拟合。相反,若 λ 很大,约束条件更为严格,对应上文中的 C 值就很小。这时候,圆形区域很小,w 离中心最优解的位置较远。w 被限制在一个很小的区域内变化,w 普遍较小且接近 0,起到了正则化的效果。但是,λ 过大容易造成欠拟合。欠拟合和过拟合是两种对立的状态
————————————————
版权声明:本文为CSDN博主「Lavi_qq_2910138025」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liuweiyuxiang/article/details/99984288
10 常用过拟合处理方法

解决办法
- 引入惩罚项——正则化,抑制参数过多或者过大,避免模型更加复杂。L1 L2 正则化:
- dropout:https://blog.csdn.net/program_developer/article/details/80737724
- 简化模型结构
- 数据增强
- 早停:在训练数据集迭代收敛之前停止
11 BN
解决梯度消失,加速训练
https://www.bilibili.com/video/av16000304?from=search&seid=11288338869905461477
深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不断去重新适应底层的参数更新。为了训好模型,我们需要非常谨慎地去设定学习率、初始化权重、以及尽可能细致的参数更新策略。Google 将这一现象总结为 Internal Covariate Shift,简称 ICS。
https://zhuanlan.zhihu.com/p/33173246
原因:数据在深层网络的传递过程中,他的分布状态会改变。理想中的分布状态是独立同分布。
https://www.bilibili.com/video/av16540598?from=search&seid=9795254049706305898
反标准化工序视为了保证模型的表达能力不因为规范化而下降,重新归到一个新的范围。
1 bn为什么能加快收敛速度。bn解决了什么问题?bn是怎么计算的?基于什么计算的?训练和测试的时候有什么不同?测试时候的均值和方差是怎么来的?
- 在训练的时候用移动平均(类似于momentum)的方式更新batch mean和variance
- 训练完毕,得到一个相对比较稳定的mean和variance,存在模型中,测试的时候,就直接用模型中的均值和方差进行计算
2 BN可以用在输入的时候吗
BN的使用位置:全连接层或卷积操作之后,激活函数之前
3 每一层BN的参数量
params = C*2(2表示 μ和sigma)
https://www.zhihu.com/question/348023697
12 数据增强
数据增强为什么有作用
他和cnn特性的关系,可以用一个词相辅相成,对于旋转和对比度的增强意义远大于平移和缩放。cnn是有一些平移旋转缩放的不变性,但是其实能力都不强,尤其是旋转,所以需要增强,所以叫做相辅相成,因为弱所以要增强。
数据增强的能解决什么
- 增加训练的数据量,提高模型的泛化能力
- 增加噪声数据,提升模型的鲁棒性
- 数据增强主要用来防止过拟合,用于dataset较小的时候。
主要增强手段
在计算机视觉中,典型的数据增强方法有翻转(Flip),旋转(Rotat ),缩放(Scale),随机裁剪或补零(Random Crop or Pad),色彩抖动(Color jittering),加噪声(Noise)
13 卷积神经网络特性
卷积神经网络有一个称作不变性的性质,即使卷积神经网络被放在不同方向上,它也能进行对象分类。更具体的说,卷积神经网络对平移、视角、尺寸或照度(或以上组合)保持不变性。
这些特性都是有限程度的,效果并不好,所以需要数据增强进行训练
由于池化的操作
14 dropout为什么能防止过拟合
- 起到了类似bagging的作用,相当于有多分类器共同作用的结果
- 减少神经元之间复杂的共适应关系。指某些检测器依赖其他检测器才能发挥作用。
- 使用位置:Dropout 层一般加在全连接层 防止过拟合 提升模型泛化能力。而很少见到卷积层后接Dropout (原因主要是 卷积参数少,不易过拟合)但是肯定是可以的,因为原理就是毙掉一些神经元嘛。
15 交叉验证
用交叉验证的目的是为了得到可靠稳定的模型。交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓“交叉”。
那么什么时候才需要交叉验证呢?
交叉验证用在数据不是很充足的时候。比如在我日常项目里面,对于普通适中问题,如果数据样本量小于一万条,我们就会采用交叉验证来训练优化选择模型。
如果样本大于一万条的话,我们一般随机的把数据分成三份,一份为训练集(Training Set),一份为验证集(Validation Set),最后一份为测试集(Test Set)。用训练集来训练模型,用验证集来评估模型预测的好坏和选择模型及其对应的参数。把最终得到的模型再用于测试集,最终决定使用哪个模型以及对应参数。

16 测试集、验证集
我们通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为"验证集" (validation set)。例如,在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。
17 混淆矩阵
True Positive(真正,TP):将正类预测为正类数
True Negative(真负,TN):将负类预测为负类数
False Positive(假正,FP):将负类预测为正类数误报 (Type I error)
False Negative(假负,FN):将正类预测为负类数→漏报 (Type II error)

18 机器学习评价指标
精确率(Precision)
又称为“查准率”
召回率(Recall)
又称为“查全率”
我们发现,精确率和召回率是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下准确率高、召回率就低。当然如果两者都低,那是什么地方出问题了。
ROC曲线和AUC面积
ROC的横轴为假正率FPR,纵轴为真正率TPR,这条曲线就是ROC曲线,曲线越趋向(1,0)坐标位置,模型越好。AUC就是曲线下部面积,一般的模型情况都是(0.5—1)之间,也就是ROC曲线位于x=y的上半部分。

有四个关键点
(1,0)模型最好,全都预测对了(0,1)全都预测错了。(0,0)(1,1)在x=y线上就跟猜一样。
为什么不直接用准确率而选用AUC呢
机器学习中的很多模型对于分类问题的预测结果大多是概率,即属于某个类别的概率,如果计算准确率的话,就要把概率转化为类别,这就需要设定一个阈值,概率大于某个阈值的属于一类,概率小于某个阈值的属于另一类,而阈值的设定直接影响了准确率的计算。使用AUC可以解决这个问题。
上图曲线上的每个点,都是不同阈值下的FPR和TPR
有个问题,现在都用softmax,取概率最大的作为输出不是通过阈值选择最终是哪一类。可能我知识广度不够,不是所有的问题都适合softmax
缺点
对类别不平衡的体现不明显
虽然模型准确率很高,但是对于样本数量少的类别,可能识别错。想想地震预测的例子。
AUC的含义
Auc作为数值可以直观的评价分类器的好坏,值越大越好。
首先AUC值是一个概率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值,AUC值越大,当前分类算法越有可能将正样本排在负样本前面,从而能够更好地分类。
ROC的含义
接收者操作特征(receiveroperating characteristic),roc曲线上每个点反映着对同一信号刺激的感受性。特异度和灵敏度
PR曲线
PR曲线展示的是Precision vs Recall的曲线,PR曲线与ROC曲线的相同点是都采用了TPR (Recall),都可以用AUC来衡量分类器的效果。不同点是ROC曲线使用了FPR,而PR曲线使用了Precision,因此PR曲线的两个指标都聚焦于正例。类别不平衡问题中由于主要关心正例,所以在此情况下PR曲线被广泛认为优于ROC曲线。
ROC曲线由于兼顾正例与负例,所以适用于评估分类器的整体性能,相比而言PR曲线完全聚焦于正例。
F1score

β做为调节recall重要程度的系数,1代表recall和precision同等重要

确定好系数之后,选取不同阈值看得分,评判哪个阈值好,F1值越大说明在此阈值下分类模型越稳健
准确率

可以理解为所有类别识别完后的评价指标。但是对于样本不均分类,如地震预报,正常为0,地震为1,样本是严重不均的,毕竟地震很少发生。所以这样的数据可能造成你的分类器对于正常识别率很好,达到99%,真正来地震了却识别不了。这时候就需要精确率了,你可以理解,精确率是对单个类别的识别结果评价。
灵敏度(sensitive)
sensitive = TP/P,表示的是所有正例中被分对的比例,衡量了分类器对正例的识别能力。
特效度(sensitive)
specificity = TN/N,表示的是所有负例中被分对的比例,衡量了分类器对负例的识别能力。
19 Feature Map的尺寸
(input_size + 2 * padding_size − filter_size)/stride+1
20 凸二次规划问题
仿射函数:仿射函数,即最高次数为1的多项式函数。常数项为零的仿射函数称为线性函数。

21 神经元死亡
https://www.zhihu.com/question/67151971
针对Relu如果梯度太大,而学习率又不小心设置得太大,就会导致权重一下子更新过多,就有可能出现这种情况:对于任意训练样本 ,网络的输出都是小于0的。
解决办法
- 把 换成 ,保证让激活函数在输入小于零的情况下也有非零的输出。
- 采用较小的学习率
- 采用 momentum based 优化算法,动态调整学习率
22 集成学习
集成学习的主要思想是利用一定的手段学习出多个分类器,而且这多个分类器要求是弱分类器,然后将多个分类器进行组合公共预测。核心思想就是如何训练处多个弱分类器以及如何将这些弱分类器进行组合。
这篇笔记详细介绍了机器学习中的多种算法,包括线性回归、逻辑回归、感知机、K-means与KNN、SVM以及决策树、随机森林、贝叶斯分类器的基础知识。讲解了各种算法的原理、优缺点、使用场景和相关概念,如正则化、梯度下降、数据预处理、损失函数等,并探讨了过拟合处理方法和模型评估指标。


5501

被折叠的 条评论
为什么被折叠?



