type
status
date
slug
summary
tags
category
icon
password
机器学习模型概念有监督模型 Supervised Model无监督模型 Unsupervised Model分类模型回归模型生成模型Generative Models和判别式模型Discriminative Models最小二乘法极大似然估计(Maximum Likelihood Estimation, MLE)梯度下降线性模型线性回归Linear Regression训练步骤损失函数 评估回归模型指标Q&A和注意事项逻辑回归模型Logistic Regression训练步骤损失函数 Sigmoid函数Q&A和注意事项套索回归(Lasso Regression)L1范数定义L1范数作用和意义岭回归(Ridge Regression)L2范数定义L2范数作用和意义L1范数 vs L2范数支持向量机SVM训练步骤核函数优化问题损失函数 Q&A和注意事项决策树ID3算法步骤C4.5算法步骤分裂信息 Split InformationCART算法步骤 剪枝Q&A和注意事项决策树比较ID3 vs C4.5 vs CART 构造决策树的步骤 决策树的优缺点 Q&A和注意事项 训练步骤KNN的优缺点Q&A和注意事项集成学习Boosting步骤常见的Boosting算法Boosting优缺点Q&A和注意事项Bagging步骤随机森林随机森林的优缺点Q&A和注意事项Bagging vs Boosting无监督学习聚类 - K-means步骤如何选取k值常用距离度量降维PCA主成分分析步骤协方差计算SVD奇异值分解计算LDA线性判别式分析Q&A和注意事项概率模型 - 朴素贝叶斯贝叶斯定理朴素贝叶斯的优缺点朴素贝叶斯 vs LRQ&A和注意事项验证方式交叉验证作用方法K折交叉验证特征工程特征选择过滤法Filter包装法Wrapper嵌入法Embedded特征提取特征选择 vs 特征提取 FM因子分解机分类评估常用评估 - Accuracy, Precision, Recall, F1-scoreAccuracyPrecisionRecallF1-score区别ROC和AUCROC曲线AUC机器学习过拟合欠拟合如何解决数据不平衡有噪声如何处理?如何理解方差和偏差?方差Variance偏差Bias完整机器学习项目流程协方差和相关性的区别Normalization VS Standardization
机器学习模型概念
有监督模型 Supervised Model
线性模型
- 线性回归
- 逻辑回归
- 支持向量机
- 神经网络
集成学习
- Boosting: AdaBoost, GBDT, XGBoost
- Bagging: Random Forest, 梯队提升树
朴素贝叶斯,KNN,SVR支持向量回归,决策树
无监督模型 Unsupervised Model
聚类Cluster
- K-means
- 层次聚类
- 密度聚类
降维
- PCA
关联规则,异常检测算法
分类模型
逻辑回归,SVM,决策树,随机森林,朴素贝叶斯,KNN
回归模型
线性回归,决策时回归,SVR,神经网络
生成模型Generative Models和判别式模型Discriminative Models
- 生成模型
对观测数据的生成过程进行建模,例如朴素贝叶斯、HMM
- 判别式模型
直接学习并建模类别标签之间的决策边界或概率分布,例如k-means、SVM、线性回归
最小二乘法
- 定义
- 最小二乘法是一种优化方法,用于拟合模型与观测数据之间的关系,尤其是线性回归模型
- 它通过最小化实际观测值与模型预测值之间的残差平方和来确定最佳拟合参数
- 优化目标
- 最小化残差平方和,即最小化实际观测值与模型预测值之间的差异
- 通过求解使得残差平方和最小化的参数值,从而得到对观测数据的最佳拟合(MSE)
极大似然估计(Maximum Likelihood Estimation, MLE)
- 定义
- 似然函数是关于参数的函数,描述了在给定观测数据时,参数取值的可能性大小
- 在统计推断中,似然函数通常用于估计模型参数。它表示观测数据在不同参数取值下出现的概率
- 优化目标
- 似然函数考虑数据分布的条件概率,并寻找使得观测数据出现概率最高的参数
梯度下降
通过沿损失函数梯度的反方向更新模型参数,以最小化损失函数的值
- 批量梯度下降BGD: 每一次迭代中使用了全部训练样本
优点:局部最优解
缺点:可能陷入局部最优解; 计算成本高
- 随机梯度下降SGD: 只需要使用单个样本或者一个子集的样本来计算梯度
优点:计算成本低
缺点:更新方向不稳定; 可能会受到噪声的影响
- 小批量梯度下降MBGD: 样本数量介于批量梯度下降和随机梯度下降之间
线性模型
线性回归Linear Regression
线性回归假设因变量 Y 和自变量X之间的关系可以用一个线性模型来表示
训练步骤
- 随机初始化参数
- 当前参数预测值,MSE计算损失值
- 梯度下降
- 预测
损失函数
- 均方误差 (Mean Squared Error, MSE),所有样本的平方损失的平均值
通过最小化误差的平方和寻找数据的最佳函数匹配 广义来说就是机器学习中的平方损失函数
评估回归模型指标
衡量线性回归法最好的指标: R Squared
- MSE (均方误差)
- RMSE (均方根误差)
- MAE (平均绝对误差)
- R Squared (决定系数)
- R² 接近 1:说明模型能够很好地解释因变量的变异,即模型拟合良好,预测能力较强。
- R² 接近 0:说明模型无法解释因变量的变异,即模型拟合较差,预测能力较弱。
- R² 为负数:表示模型的表现比直接使用平均值预测还要差。
yi真实值,y^i是预测值,y_是平均值
Q&A和注意事项
- 线性假设限制
- 线性回归要求因变量与自变量之间的关系是线性的,若关系非线性,则线性回归模型可能会表现不佳。
- 共线性问题
- 自变量之间存在高度相关性时,可能导致模型系数估计不准确,需要进行适当的特征选择或正则化处理。
逻辑回归模型Logistic Regression
尽管它的名称中包含了“回归”这个词,但实际上它是一种分类算法,用于预测二元分类(或多元分类)的概率
训练步骤
- 随机初始化参数
- 通过sigmoid和当前参数预测值,对数函数(交叉熵函数)计算损失值
- 梯度下降
- 通过sigmoid计算输出概率(0-1)
损失函数
对数损失函数(Log Loss),也称为逻辑损失函数或交叉熵损失函数,是逻辑回归模型和其他概率分类模型中常用的损失函数。它衡量了模型预测概率分布与实际标签之间的差异,用于衡量模型在分类任务中的性能。
Sigmoid函数

Q&A和注意事项
- LR能否解决非线性分类问题?
可以但能力受限。只要使用kernel trick(核技巧)
- 为什么LR用交叉熵损失而不是MSE?

- LR如何解决多分类?
- 一对多(One-vs-Rest,OvR)
- 每次取一种样本作为一类,剩下的为另一类,进行训练
- n个二分类问题
- 将预测样本传入这n个问题,哪个概率高就是哪类
- 一对一(One-vs-One,OvO) 用时长但是分类更加准确
- n类样本每次挑出2种类型,Cn2种二分类
- 将预测样本传入这Cn2种二分类模型,通过投票或种类最多来确定最终的类别
- 多项逻辑回归(Multinomial Logistic Regression)
- 直接扩展逻辑回归以处理多类别输出,使用softmax函数来对多个类别的概率进行建模
- 在训练的过程当中,如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响?
- 如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响分类器的效果。但是对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,你现在将它重复100遍。训练以后完以后,数据还是这么多
- 为什么在训练的过程当中将高度相关的特征去掉?
- 去掉高度相关的特征会让模型的可解释性更好。可以大大提高训练的速度。如果模型当中有很多特征高度相关的话,就算损失函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。其次是特征多了,本身就会增大训练的时间。
- 线性回归 vs LR

套索回归(Lasso Regression)
一种线性回归的正则化方法,旨在通过加入𝐿1范数惩罚来改进模型的泛化能力和特征选择能力
L1范数定义
L1范数,也称为曼哈顿范数(Manhattan norm),所有参数绝对值之和
线性回归模型优化目标
Lasso Regression 模型优化目标
L1范数作用和意义
- 特征选择: L1范数惩罚会使一些系数变为零,因此它在特征选择中具有显著的作用。将对预测无贡献或相关性较小的特征的系数缩减为零
- 抗噪声能力: 有效地剔除噪声或冗余特征
- 稳定性和可解释性
岭回归(Ridge Regression)
处理多重共线性问题的线性回归方法,通过对回归系数施加𝐿2范数惩罚来达到这一目的。
L2范数定义
所有参数平方和开方,也称为欧几里得范数
Ridge Regression 模型优化目标
L2范数作用和意义
- 防止过拟合:L2 正则化有助于防止模型在训练数据上过度拟合,通过对权重进行惩罚,使得模型更加平滑,减少泛化误差。
- 泛化能力:在存在多重共线性(即特征之间高度相关)的情况下,L2范数可以通过减少参数的大小,提高模型对数据的泛化能力。例如,如果两个特征高度相关,L2范数可以帮助分散它们的影响,而不是让其中一个特征完全占据主导地位
L1范数 vs L2范数


支持向量机SVM
SVM是一种二类分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器
训练步骤
- 选择核函数
- 定义优化问题
- 求解优化得到最优超平面参数w和b:梯度下降
- 最佳参数预测
核函数
解决非线性问题:通过选择合适的核函数,可以处理原始数据在低维度空间中线性不可分的情况,将其映射到高维度空间中,使得在高维度空间中变得线性可分。
计算效率:尽管映射到高维空间可能会导致计算复杂度增加,但由于核技巧的使用,我们通常可以避免显式计算高维空间的特征向量,而是直接在原始空间中计算核函数的值。
- 常见核函数:
- 线性核函数(Linear Kernel):,直接使用原始特征进行内积计算。
- 多项式核函数(Polynomial Kernel):引入多项式的非线性映射。
- 高斯核函数(Gaussian Kernel,也称为径向基函数核):通过距离度量将数据映射到无限维度的特征空间。
- sigmoid核函数(Sigmoid Kernel):模拟神经网络中的非线性映射。
- 计算得到内积:这个内积在某种意义上反映了在原始空间中的相似度或者关系
优化问题
SVM的优化问题是寻找最优超平面的数学问题,目标是最大化分类间隔
损失函数
Hinge Loss合页损失函数,它在优化过程中被用来衡量模型预测的准确性和边界的间隔
其中y是实际的类别标签,f(x)是模型的预测输出
Q&A和注意事项
- 软间隔和硬间隔
- 当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
- 当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
- 当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机
- 为什么SVM对缺失数据敏感?
SVM 没有处理缺失值的策略。而 SVM 希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏
- SVM 核函数之间的区别
一般选择线性核和高斯核,也就是线性核与 RBF 核

- SVM如何处理多分类问题?
- 直接法,直接在目标函数上修改,将多个分类面的参数求解合并到一个最优化问题里面,计算量大
- 间接法:对训练器进行组合。其中比较典型的有一对一,和一对多
- LR vs SVM

决策树
从数据集中生成决策树,是一种监督学习方法,主要用于分类任务
ID3算法
- ID3相当于用极大似然法进行概率模型的选择
- 使用 二元切分法则易于对树构建过程中进行调整以处理连续型特征
步骤
- 计算目标变量(Yes/No)信息熵
信息熵(Entropy)是用来衡量数据集纯度的一种度量。c是类别,pi是概率
- 计算每个属性的信息增益
信息增益(Information Gain)是通过某个属性A对数据集S进行分割后,信息熵的减少量
- 选择信息增益最大的属性
C4.5算法
C4.5算法的改进版本
- 能够处理连续属性,而不仅仅是离散属性。对于连续值,排序后选择中间点
- 可以处理数据集中的缺失值
步骤
- 计算数据集信息熵
计算目标变量(是否适合打球)的熵
- 计算信息增益和信息增益率
对每个属性(天气、温度、湿度、风力)计算信息增益和信息增益率
- 选择信息增益率最高的属性
分裂信息 Split Information
避免偏向于取值较多的属性 → 本身就是提供一种归一化
CART算法
分类与回归树 —— 使用二元切分法来处理连续型数值
步骤
- 计算Gini指数,样本被选中的概率 * 样本被分错的概率 (回归问题直接用平方误差)
- 选择Gini指数最小的作为分割属性
剪枝
用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准
Q&A和注意事项
- 基尼指数和信息熵都表示数据不确定性,为什么CART使用基尼指数?
CART只要是二叉树,计算量少
- 基尼系数(Gini)存在的问题?
基尼指数偏向于多值属性;当类数较大时,基尼指数求解比较困难;基尼指数倾向于支持在两个分区中生成大小相同的测试
决策树比较
ID3 vs C4.5 vs CART

构造决策树的步骤
- 特征选择
- 决策树的生成(包含预剪枝) ---- 只考虑局部最优
- 决策树的剪枝(后剪枝) ---- 只考虑全局最优
决策树的优缺点
优点
- 决策树模型可读性好,具有描述性,有助于人工分析;
- 效率高,决策树只需要一次性构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。
缺点
- 即使做了预剪枝,它也经常会过拟合,泛化性能很差。
- 对中间值的缺失敏感;
- ID3算法计算信息增益时结果偏向数值比较多的特征
Q&A和注意事项
- 决策树算法中如何避免过拟合和欠拟合?
- 过拟合:选择能够反映业务逻辑的训练集去产生决策树;剪枝操作(前置剪枝和后置剪枝); K折交叉验证(K-fold CV)
- 欠拟合:增加树的深度,RF
- 决策树怎么剪枝?
- 预剪枝是在决策树的构建过程中加入限制,比如控制叶子节点最少的样本个数,提前停止
- 后剪枝是在决策树构建完成之后,根据加上正则项的结构风险最小化自下向上进行的剪枝操作
利用训练数据集对特征向量空间进行划分。KNN算法的核心思想是在一个含未知样本的空间,可以根据样本最近的k个样本的数据类型来确定未知样本的数据类型。 该算法涉及的3个主要因素是:k值选择,距离度量,分类决策
训练步骤
- 选择参数k
- 计算距离 (欧式距离,曼哈顿距离)
- 选择最近的k个邻居
- 分类或者回归:在分类问题中,K个邻居中的多数类别作为待分类样本的预测类别。在回归问题中,取K个邻居的平均值或加权平均值
KNN的优缺点
优点
- 简单容易实现
- 不需要训练
缺点
- 计算和内存开销大
- 高维空间效果会差
Q&A和注意事项
- 如何高效匹配查询
- 构建数据索引: k-d树和R树
- k-d树:一种二叉树,用于将k维空间划分成k个维度的超矩形区域,从而使得在多维空间中的查询和插入操作更加高效
- R树:是一种平衡树,类似于B树,一种用于多维空间中进行空间数据索引的树形数据结构,主要用于加速空间查询操作,如范围查询和最近邻查询。
- 在k-means或kNN,我们是用欧氏距离来计算最近的邻居之间的距离。为什么不用曼哈顿距离?
- 曼哈顿距离只计算水平或垂直距离,有维度的限制。另一方面,欧氏距离可用于任何空间的距离计算问题
- 欧式距离:两点之间的最短距离;
- 曼哈顿距离:投影到坐标轴的长度之和;又称为出租车距离.
- 切比雪夫距离:各坐标数值差的最大值
集成学习
通过结合多个学习器(例如同种算法但是参数不同,或者不同算法),一般会获得比任意单个学习器都要好的性能,尤其是在这些学习器都是"弱学习器"的时候提升效果会很明显
Boosting
可以用于回归和分类问题。
Boosting 的核心思想是逐步训练一系列弱学习器,每个学习器尝试修正其前一个学习器的错误。最终,所有弱学习器的预测结果通过加权投票或加权求和进行组合,以获得最终的预测结果
步骤
- 初始化:权重相同
- 训练弱学习器:当前加权训练,错误的样本将得到更高的权重,使下一次学习更关注错误分类样本
- 更新权重
- 训练
- 加权
常见的Boosting算法
- AdaBoost:
- 在每一轮迭代中,根据前一轮的错误率调整训练样本的权重
- 每个弱学习器的权重与其错误率有关,错误率越低,权重越高
- Gradient Boosting (GBDT梯度提升树)
- 通过优化损失函数来训练模型
- 在每一轮迭代中,训练一个新的弱学习器来拟合当前模型的残差(实际值-预测值)
- 通过逐步减小残差,提升模型的整体性能
- 典型的实现包括 XGBoost、LightGBM 和 CatBoost
- GBDT使用基学习器是CART树,CART树是二叉树,每次使用yes or no进行特征选择,数值连续特征使用的最小均方误差,离散值使用的gini指数。
- XGBoost
- 训练的时候采用前向分布算法进行贪婪的学习
- XGBoost对GBDT进行了一系列优化,比如损失函数进行了二阶泰勒展开、目标函数加入正则项、支持并行和默认缺失值处理等,在可扩展性和训练速度上有了巨大的提升,但其核心思想没有大的变化
Boosting优缺点
优点
- 高精度
- 降低bias和variance
- 对不平衡数据表现良好
- Robust
- 适合分类和回归
缺点
- 训练开销大
- 容易过拟合
- 难以并行化
- 解释性差
Q&A和注意事项
- 梯度提升Vs梯度下降:
- 梯度提升:“提升”是指通过减少残差来提升模型性能
- 梯度下降:”下降”是指减少损失函数到最小值进行拟合
- GBDT对标量特征要不要one-hot编码?
- 效果上one-hot和category特征等价,可以直接输入
- 为什么GBDT用负梯度当做残差?
- 负梯度则指向损失函数减少最快的方向
- XGBoost可以并行训练的原因?
- XGBoost的并行,并不是说每棵树可以并行训练,XGB本质上仍然采用boosting思想,每棵树训练前需要等前面的树训练完成才能开始训练
- XGBoost的并行,指的是特征维度的并行:在训练之前,每个特征按特征值对样本进行预排序,并存储为Block结构,在后面查找特征分割点时可以重复使用,而且特征已经被存储为一个个block结构,那么在寻找每个特征的最佳分割点时,可以利用多线程对每个block并行计算
- 如何处理缺失值?
- 分裂点的选择
- 忽略缺失值
- XGBoost 和 LightGBM会在找到最优分裂点后,为缺失值单独设置一个处理策略。它们会根据增益计算,将缺失值样本分配到某个子节点,使得整体增益最大化
- 缺失值填补
- 学习缺失值模式(XGBoost,LightGBM)
Bagging
Bagging 的核心思想是通过引入数据的随机性来减少模型的方差,从而提高模型的泛化能力
Bagging + 决策树 = 随机森林
AdaBoost + 决策树 = 提升树
Gradient Boosting + 决策树 = GBDT
步骤
- 数据采样:
- 从原始训练数据集中,通过有放回抽样的方法随机采样生成多个子数据集。每个子数据集的大小通常与原始数据集相同
- 由于是有放回抽样,某些样本可能在同一个子数据集中出现多次,而某些样本可能没有被抽到
- 训练:每个子数据集上训练一个基模型。都是相同类型,彼此独立训练
- 集成:分类或者回归
- 对于分类问题:由投票表决产生分类结果
- 对于回归问题: 由k个模型预测结果的均值作为最后预测结果
随机森林
基本单元是决策树,而它的本质属于集成学习方法
算发思想
- 随机选择样本(放回抽样)
- 随机选择特征
- 构建决策树
- 随机森林投票(平均)
随机森林的优缺点
优点
- 降低方差,提升泛化
- 减少过拟合
- 容易并行(单独子数据集上训练)
缺点
- 不能降低偏差
- 计算开销大
Q&A和注意事项
- 随机森林的随机性指的是?
- 样本随机放回随机采样
- 为什么随机抽样?
- 保证分类器多样性
- 为什么要放回?
- 减少每个决策树差异性过大
- 需要剪枝吗?
- 不需要。随机性已经避免了过拟合
Bagging vs Boosting
bagging: n个数据集,并行训练,投票法
Boosting: 一个数据集,串行训练,加权求和
无监督学习
聚类 - K-means
步骤
- 初始化k个簇中心坐标
- 计算所有点到中心的距离,并划分簇
- 更新中心坐标平均值
- 重复直到收敛
如何选取k值
- 经验先定
- 绘制k和损失函数图像确定拐点
常用距离度量
- 欧几里得
- 余弦相似性
降维
把一个多因素问题转化成一个较少因素(降低问题的维数)问题
PCA主成分分析
通过找到数据中最大方差方向(主成分),来找到最重要的特征
步骤
- 去平均值:每个特征减去平均值
- 计算协方差矩阵:协方差描述了两个变量一起变化的趋势,是衡量两个变量之间关系的统计量
- SVD替代协方差的特征值计算
- 选择主成分:将特征值排序,选择k个特征
- 投影到新的空间
协方差计算
X_:平均值
解释
- 正协方差:表示 呈正相关
- 负协方差:表示 呈负相关
- 零协方差:不存在线性关系
SVD奇异值分解计算
用于分解一个矩阵成为三个矩阵的乘积
SVD 直接提供了协方差矩阵的分解,无需显式计算协方差矩阵本身,从而节省了计算资源和时间
LDA线性判别式分析
有监督的降维算法
同一类的数据要去尽量的投影到同一个簇中去
Q&A和注意事项
- 为什么要用SVD?
内存少,结果和PCA一样
- PCA vs SVD

- 降维的作用
- 缓解维度灾难
- 压缩数据同时损失最小
- 方便理解
概率模型 - 朴素贝叶斯
是一个生成模型,其次它通过学习已知样本,计算出联合概率,再求条件概率
基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的待分类项X,通过学习到的模型计算后验概率分布,即:在此项出现的条件下各个目标类别出现的概率,将后验概率最大的类作为X所属的类别
贝叶斯定理
其中:
- P(A | B) 是在事件 B 发生的条件下,事件 A 发生的概率,称为后验概率posterior probability
- P(B | A)是在事件A发生的条件下,事件 B发生的概率,称为似然度(likelihood)。
- P(A)和 P(B)分别是事件A和事件 B的先验概率(prior probability),即在考虑任何观测数据之前,对事件的初始概率估计
朴素贝叶斯的优缺点
优点
- 稳定,适合小规模数据
- 对缺失数据不敏感
- 适合增量训练
缺点
- 独立假设往往不成立
- 属性多效果差
朴素贝叶斯 vs LR

Q&A和注意事项
- 为什么朴素贝叶斯如此“朴素”?
引入条件独立假设
- 概率为0怎么办
引入λ,λ=1为拉普拉斯平滑
验证方式
交叉验证
将原始dataset划分为两个部分.一部分为训练集用来训练模型,另外一部分作为测试集测试模型效果.
作用
1)交叉验证是用来评估模型在新的数据集上的预测效果,也可以一定程度上减小模型的过拟合
2)还可以从有限的数据中获取尽能多的有效信息
方法
- 留出法:简单地将原始数据集划分为训练集,验证集,测试集三个部分
- k折交叉验证:(一般取5折交叉验证或者10折交叉验证)
- 留一法: (只留一个样本作为数据的测试集,其余作为训练集)---只适用于较少的数据集
K折交叉验证
将原始数据集划分为k个子集,将其中一个子集作为验证集,其余k-1个子集作为训练集,如此训练和验证一轮称为一次交叉验证
交叉验证重复k次,每个子集都做一次验证集,得到k个模型,加权平均k个模型的结果作为评估整体模型的依据
选择K:越大的k会加大训练时间
特征工程
特征工程分三步: ①数据预处理;②特征选择;③特征提取。
特征选择
过滤法Filter
自变量和目标变量之间的关联
- 相关系数
- 卡方检验
- 信息增益、互信息
包装法Wrapper
通过目标函数(AUC/MSE)来决定是否加入一个变量
流程
- 穷举或者启发式搜索来组合子集
- 评估性能(交叉验证)
- 选择最佳特征子集
嵌入法Embedded
学习器自动选择
- 正则化
- 决策树
- 深度学习
特征提取
降维:L1,PCA,LDA
特征选择 vs 特征提取
都是降维
特征选择:不改变变量的含义,仅仅只是做出筛选
特征提取:通过映射(变换)的方法,将高维的特征向量变换为低维特征向量
FM因子分解机
用于处理稀疏特征数据集的机器学习算法,特别适用于推荐系统和广告点击率预测等任务
例如one-hot导致矩阵稀疏
分类评估
常用评估 - Accuracy, Precision, Recall, F1-score

Accuracy
预测正确的结果:(TP+TN)/总样本数
准确率衡量的是模型整体预测正确的能力,适用于类别均衡的数据集
Precision
预测为正,实际也为正的:TP/(TP+FP)
高精确率意味着模型在预测为正类时很少出错
Recall
实际为正,预测也为正:TP/(TP+FN)
模型对正类样本的覆盖程度,高召回率意味着模型能够捕捉到更多的正类样本
F1-score
F1=2*(pre*recall)/(pre+recall)
区别
- 准确率反映了模型整体的预测准确性,但在样本不均衡的情况下可能不是一个完全可靠的指标
- 精确率适用于需要确保预测为正类的样本都是正确的场景
- 召回率适用于需要尽量少漏掉正类的场景
ROC和AUC

ROC曲线
用于展示二分类模型在不同阈值下的表现,越靠近左上角说明模型的性能越好
AUC
AUC 是 ROC 曲线下的面积,取值范围在 0 到 1 之间,数值越大表示模型的性能越好
- AUC = 1,表示模型完美地区分了正负样本,无论阈值如何,都能将所有的正样本排在所有的负样本前面
- AUC = 0.5,表示模型的预测和随机猜测一样,即没有区分能力
- AUC < 0.5,表示模型性能比随机猜测还差,即预测结果反向
机器学习
过拟合
原因
- 数据有噪声
- 数据不足
- 训练过度
如何避免
- Dropout
- 数据增强:旋转平移缩放
- 正则化:L1和L2
- 交叉验证
- 集成学习:Boosting
欠拟合
原因
- 模型复杂度低
- 数据问题,拟合度不高
如何避免
- 增加样本数量
- 增加特征数量
- 特征扩展
- 减少正则化参数
- Bagging
如何解决数据不平衡
- 改变评价标准:AUC/ROC
- 采用Bagging/Boosting
- 特殊加权
- 采样
有噪声如何处理?
数据平滑
如何理解方差和偏差?
方差Variance
- 方差指的是模型对训练数据的敏感程度
- 高方差通常意味着模型对训练数据中的噪声也进行了学习(过拟合),导致在测试数据上的性能下降
偏差Bias
- 模型预测值与真实值之间的差距
- 高偏差说明模型过于简单(欠拟合),效果不佳
完整机器学习项目流程
- 导入数据
- 理解数据:可视化,统计
- 数据准备
- 数据清洗
- 特征选择
- 数据转换
- 评估算法
- 分离数据
- 定义模型
- 优化模型
- 算法调参
- 预测和部署
协方差和相关性的区别
相关性是协方差的标准化格式。协方差本身很难做比较。如:计算工资($)和年龄(岁)的协方差,因为这两个变量有不同的度量,所以会得到不能做比较的不同的协方差
为了解决这个问题,通过计算相关性来得到一个介于-1和1之间的值,就可以忽略它们各自不同的度量
Normalization VS Standardization
目的:
- 归一化的目的是将数据转换为特定范围内,通常是 0 到 1 或 -1 到 1 之间。归一化用于将具有不同尺度和范围的特征缩放到相同的范围内,以确保它们对模型的影响是相对均衡的。
- 标准化的目的是将数据转换为具有特定属性的标准分布,通常是零均值和单位方差。标准化用于确保数据的均值为零,标准差为一,从而使数据更稳定、可比较,并且有助于某些算法的收敛和性能。
方法:
- 归一化通常采用线性变换,将数据按比例缩放到指定的范围内。常见的归一化方法包括 Min-Max 归一化和特征缩放。
- 标准化通常采用零均值单位方差的方法,对数据进行减均值除以标准差的操作。常见的标准化方法包括 Z-Score 标准化。
适用场景:
- 归一化适用于数据的分布范围较大,且特征之间的量纲不同的情况下,可以确保所有特征对模型的影响是相对均衡的。
- 标准化适用于数据的分布范围不确定,且需要满足某些算法的要求,例如距离度量或梯度下降等算法,标准化可以确保模型更稳定地收敛。
- 作者:Boomshakalaka
- 链接:https://www.cjyblog.icu/article/1b8a7176-fc43-8045-bbb0-d3cb248a8feb
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。