mechine_learning/docs/ml.md
2025-02-05 17:19:24 +08:00

268 lines
18 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

深度学习与机器学习分类
1.监督学习:
分类:将输入数据分配到预定义的类别中,如图像分类,文本分类
回归:预测连续值,如房价预测,股票价格预测.
2.无监督学习:
聚类:将数据分组,如客户细分,图像分割.
降维:减少数据维度,如PCA,t-SNE
3.半监督学习:结合少量标注数据和大量未标注数据进行训练.
4.强化学习:通过与环境交互学习策略,如游戏AI,机器人控制.
5.生成模型:
生成对抗网络(GANS):生成逼真数据,如图像生成,视频生成.
扩散模型:同上
自编码器:学习数据表示,用于数据压缩,去噪.
机器学习主要算法
1.监督学习算法
1.线性回归:用于回归任务,通过线性方程预测连续值.
2.逻辑回归:用于分类任务,通过逻辑函数预测类别概率
3.支持向量机(SVM):用于分类和回归,通过找到最优超平面分离数据.
4.决策树:用于分类和回归,通过树结构进行决策.
5.随机森林:集成学习方法,通过多个决策树提高性能.
6.K近邻(KNN):基于距离度量,通过最近邻样本进行预测.
7.朴素贝叶斯:基于贝叶斯定理,适用于文本分类等任务.
8.AdaBoost:集成学习算法,通过加权多个若分类器提高性能.
9.梯度提升树(GBM):通过逐步优化残差进行预测.
10.XGBoost:GBM的高效实现.
11.LightGBM:另一种高效的GBM实现,适用于大规模数据.
2.无监督学习
1.K均值聚类
2.层次聚类:
3.主成分分析(PCA):用于降维,通过线性变换保留主要特征
4.t-SNE:用于高维数据可视化,保留局部结构.
5.自组织映射(SOM):通过神经网络进行数据降维和可视化.
6.高斯混合模型(GMM):通过多个高斯分布拟合数据.
机器学习算法具体介绍
1.线性回归: 用于建模输入变量(自变量)与输出变量(因变量)之间线性关系的统计方法.
原理:
y=β0+β1x1+β2x2+⋯+βnxn
ϵ误差项,表示模型未能解释的部分
目标: 最小化误差项的平方和(最小二乘法)来估计系数
L(β)=i=1∑m(yi(β0+β1xi1+β2xi2+⋯+βnxin))2
适用场景:
1.连续值预测:
房价预测
股票价格预测
销售额预测:根据广告投入,市场条件等预测销售额.
2.因果关系分析:
经济学:分析政策变化对经济指标的影响.
医学:研究药物剂量对治疗效果的影响.
3.简单建模:
初步分析:在复杂模型之前,使用线性回归进行初步数据分析.
解释性模型:模型回归模型易于解释,适合需要透明度的场景
优缺点:
优点:
简单易懂:模型结构简单,易于理解和实现。
计算高效:训练和预测速度快,适用于大规模数据。
解释性强:系数直接反映自变量对因变量的影响。
缺点:
线性假设:假设自变量和因变量之间存在线性关系,可能不适用于非线性数据。
对异常值敏感:异常值可能对模型产生较大影响。
多重共线性:自变量之间高度相关时,模型表现可能不佳。
逻辑回归:基于线性回归,引入sigmoid函数来将线性回归的连续值映射到01之间.
原理:
同逻辑回归,最后采用sigmoid函数将连续值映射到01之间,根据设定的阈值来划分正负样本,或者使用预测的值作为其发生概率.
目标:
最大化似然函数(最小化对数损失函数)
也就是真的真,假的假.
适用场景:
二分类问题:
垃圾邮件检测:判断邮件是否为垃圾邮件。
疾病诊断:判断患者是否患有某种疾病。
信用评分:判断客户是否会违约。
多分类问题(通过扩展):
手写数字识别识别手写数字0-9
图像分类:将图像分类到多个类别中。
概率预测:
客户流失预测:预测客户流失的概率。
点击率预测:预测广告点击的概率。
解释性模型:
特征重要性分析:通过系数大小判断特征对结果的影响。
因果关系分析:分析自变量对因变量的影响。
优缺点:
优点
简单易懂:模型结构简单,易于理解和实现。
计算高效:训练和预测速度快,适用于大规模数据。
解释性强:系数直接反映自变量对因变量的影响。
概率输出:提供概率估计,便于后续决策。
缺点
线性决策边界:假设自变量和因变量之间存在线性关系,可能不适用于非线性数据。
对异常值敏感:异常值可能对模型产生较大影响。
多重共线性:自变量之间高度相关时,模型表现可能不佳。
支持向量机(SVM):找到一个最优超平面来分离不同类别的数据点,并最大化类别之间的边界
基本概念:
1.超平面:
在二维空间中超平面是一条直线在三维空间中超平面是一个平面在高维空间中超平面是一个n-1维的子空间。
超平面的方程可以表示为wx+b=0
2.间隔:
间隔是超平面到最近数据点的距离。SVM的目标是最大化这个间隔。
支持向量是距离超平面最近的那些数据点,它们决定了超平面的位置。
3.硬间隔与软间隔
硬间隔:要求所有数据点都被正确分类,且间隔最大化。适用于线性可分的数据。
软间隔:允许一些数据点被错误分类,以提高模型的泛化能力。适用于线性不可分的数据。
4.核函数
用于将数据映射到高维空间,使得在高维空间中数据变得线性可分。
常见的核函数包括:
线性核K(xi,xj)=xi⋅xjK(xi,xj)=xi⋅xj
多项式核K(xi,xj)=(γxi⋅xj+r)dK(xi,xj)=(γxi⋅xj+r)d
径向基函数RBFK(xi,xj)=exp(γ∥xixj∥2)K(xi,xj)=exp(γ∥xixj∥2)
Sigmoid核K(xi,xj)=tanh(γxi⋅xj+r)K(xi,xj)=tanh(γxi⋅xj+r)
5.目标函数:
SVM的目标是最大化间隔同时最小化分类误差。这可以通过以下优化问题来表示
约束条件:
适用场景:
高维空间:
文本分类:如垃圾邮件检测、情感分析。
图像分类:如手写数字识别、人脸识别。
非线性分类:
生物信息学:如基因表达数据分析。
金融:如信用评分、股票市场预测。
小样本数据:
医学诊断:如疾病预测、药物反应分析。
工业应用:如故障检测、质量控制。
多分类问题:
手写数字识别识别0-9的手写数字。
图像分类:将图像分类到多个类别中。
优缺点:
优点:
有效处理高维数据:在高维空间中表现良好。
泛化能力强:通过最大化间隔,提高模型的泛化能力。
灵活性强:通过使用不同的核函数,可以处理线性和非线性问题。
缺点:
计算复杂度高:对于大规模数据集,训练时间较长。
参数选择敏感:核函数和参数的选择对模型性能影响较大。
解释性差相比线性模型SVM的解释性较差。
决策树:通过一系列条件判断(节点),将数据逐步分割成更小的子集,最终达到预测目标。其核心思想是递归地选择最佳特征进行数据划分,直到满足停止条件。
原理:
决策树由根节点、内部节点和叶节点组成:
根节点Root Node表示整个数据集包含所有样本。
内部节点Internal Nodes对应于特征的划分决定数据如何被进一步分割。
叶节点Leaf Nodes最终的分类或预测值。
特征选择标准:
为了找到最佳的划分方式,需要计算某种指标来衡量特征的划分能力,主要有:
信息增益Information Gain, IG
适用于ID3算法。
衡量数据集划分前后的信息熵变化,信息增益越大,说明该特征越能有效区分数据。
信息熵公式: H(D)=∑i=1npilog2piH(D) = -\sum_{i=1}^{n} p_i \log_2 p_iH(D)=i=1∑npilog2pi
信息增益: IG(D,A)=H(D)∑v∈ADvDH(Dv)IG(D, A) = H(D) - \sum_{v \in A} \frac{|D_v|}{|D|} H(D_v)IG(D,A)=H(D)v∈A∑DDvH(Dv)
信息增益率Gain Ratio
适用于C4.5算法。
解决信息增益偏向于多值特征的问题。
公式: GR(A)=IG(D,A)H(A)GR(A) = \frac{IG(D, A)}{H(A)}GR(A)=H(A)IG(D,A)
其中 H(A)H(A)H(A) 是特征A的固有信息熵。
基尼指数Gini Index
适用于CART算法用于分类
计算类别的不纯度,基尼指数越小,说明数据的纯度越高。
公式: Gini(D)=1∑i=1npi2Gini(D) = 1 - \sum_{i=1}^{n} p_i^2Gini(D)=1i=1∑npi2
均方误差MSE, Mean Squared Error
适用于CART回归树用于回归
通过最小化方差来进行划分。
决策树的剪枝:
为了防止过拟合,通常会对决策树进行剪枝:
预剪枝Pre-pruning
在构造决策树的过程中,通过设定最大深度、最小样本数、信息增益阈值等,提前停止树的生长。
后剪枝Post-pruning
先生成完整的决策树,再使用交叉验证或错误率评估对非必要的分支进行剪枝,去掉对泛化能力无贡献的部分。
适用场景:
分类任务:
电子商务用户行为预测(如判断用户是否会购买商品)。
信贷风险评估(如预测贷款是否会违约)。
医疗诊断(如判断病人是否患有某种疾病)。
回归任务:
房价预测(如根据面积、地段预测房价)。
股票市场分析(如基于历史数据预测股票走势)。
特征选择:
决策树的分裂过程可以用来评估特征的重要性,从而进行特征筛选。
异常检测:
通过决策树模型分析数据的分布情况,检测异常值。
优缺点:
优点:
易解释:决策路径直观,适合可视化。
计算高效:训练时间一般较短,适用于大规模数据。
不需要数据归一化:对数值数据不需要标准化或归一化处理。
可以处理非线性关系:可以自动捕捉特征之间的非线性关系。
适用于缺失数据:决策树可以处理部分缺失数据,不需要填充。这个只是可能而已,刚好缺失的数据用不到...
缺点:
容易过拟合:如果不进行剪枝,决策树可能会过度拟合训练数据。
对噪声敏感:小的变化可能导致完全不同的树结构。
处理连续变量效果较差:对于连续变量,决策树的划分可能不够精细。
倾向于偏向于多值特征:信息增益可能会导致决策树偏向具有更多取值的特征。
随机森林:构建多个决策树将其预测结果结合起来,从而提高模型性能
原理:
随机采样:
对于每一棵决策树,随机森林通过对训练数据进行有放回抽样,即每次从训练集中随机选择样本来构建一棵树。这样,在每棵树中,可能会有一些样本没有被选择到(这些样本称为“袋外样本”)。
每棵树都是在一个不同的子集上训练的,因此即使所有的树都是基于决策树模型,最终的森林也是多个“不同”的树.
特征随机性:
在每一棵树的节点划分时,随机森林不是在所有特征上选择最优切分点,而是随机选择一个特征子集来进行分裂。这样可以增加树之间的差异性,减少单棵树的过拟合风险。
例如在某个节点上随机选择k个特征k通常小于总特征数然后在这k个特征中选择最佳切分点。
决策树构建:
在每一棵决策树中,通常不对树的深度进行限制,或者只设置最小样本数和最大深度等限制条件。树的生长较为“自由”,这可以捕捉更多的数据复杂性。集成学习:
随着多棵树的训练完成,每棵树对样本进行独立的预测。在回归任务中,随机森林会对所有树的预测结果取平均值;在分类任务中,随机森林会采用投票机制,选择预测频次最多的类别作为最终结果。
优缺点:
优点:
减少过拟合:通过集成多棵决策树,随机森林通过平均(回归)或投票(分类)来减少单棵树可能发生的过拟合。
提高准确性:集成的多棵树的预测通常比单棵树要更准确,尤其在面对复杂和高维度数据时,随机森林表现得尤为出色。
处理大规模数据:可以处理高维数据,能够通过特征选择和随机性减少维度灾难。
鲁棒性强:即使某些特征或数据不完整,随机森林依然能够保持相对较好的性能。
特征重要性评估:通过分析每个特征在不同树中的表现,随机森林可以给出特征的重要性排序。
缺点:
模型复杂:由于包含多棵树,随机森林模型本身较为复杂,训练和预测时的计算开销较大,尤其是数据集非常庞大的时候。
可解释性差:相比单一的决策树,随机森林作为一个集成模型,其“黑箱”性质较强,难以直接解释其决策过程。
内存消耗大:由于随机森林需要存储多棵树,因此在内存和计算资源上会有较高的要求,尤其是在大数据集上。
适用场景:
高维数据和复杂数据:
随机森林能够自动处理高维数据和复杂的特征间关系,适合特征维度较高或者数据关系非线性的场景。
回归任务和分类任务:
随机森林既可以用于回归任务(例如预测房价、股市预测等),也可以用于分类任务(例如图像分类、文本分类等)。
数据噪声较多的场景:
随机森林通过集成多棵树来减轻单棵树可能发生的过拟合问题,因此特别适合处理带有噪声和缺失数据的任务。
特征选择:
在特征数量非常庞大的情况下,随机森林能够通过其特征重要性评估功能,自动筛选出对预测有重要贡献的特征。
非线性关系:
当数据中的特征和目标变量之间存在复杂的非线性关系时,单棵线性模型(如线性回归)可能表现不佳,但随机森林可以通过多棵树的集成来捕捉这些复杂的非线性关系。
K近邻(KNN):基于实例的学习方法,通过测量样本之间的距离来进行分类或预测
原理:
距离度量:
KNN通过计算样本之间的距离来判断样本的相似性.
欧式距离:
曼哈顿距离:
分类:
对于一个待分类的样本KNN算法会找到与该样本最相似距离最近的K个样本。
然后根据这K个样本中多数的类别来决定待分类样本的类别。投票机制选择出现次数最多的类别。
回归:
对于回归任务KNN则会根据这K个最近邻样本的输出值进行平均得到预测值。
K的选择:
K值邻居的个数是KNN算法的一个重要超参数。如果K值过小可能会导致模型过拟合如果K值过大可能会导致模型欠拟合。
通常K值的选择依赖于交叉验证。
优缺点:
优点:
· 简单易懂KNN算法实现非常简单易于理解和解释。
· 无模型假设KNN是非参数化算法不需要做出关于数据分布的假设。
· 适用范围广泛:可以用于分类和回归任务,适用性广。
· 良好的性能对于小数据集KNN可以达到很好的分类效果。
缺点:
· 计算量大KNN的预测阶段需要计算待预测样本与所有训练样本的距离因此计算复杂度较高尤其在数据量很大的时候时间开销大。
· 存储需求高KNN需要存储所有的训练数据这对于数据量大的情况可能会成为瓶颈。
· 对异常值敏感KNN算法对噪声和离群点非常敏感因为它只是通过邻居的类别来决定预测值容易受异常值影响。
· 特征维数 curse of dimensionality维度灾难随着特征维度的增加计算距离变得不那么准确KNN算法的表现会显著下降。高维数据使得样本之间的距离差异缩小影响模型的判断。
适用场景:
图像分类:例如手写数字识别、物体分类等任务。
推荐系统:通过用户相似性或物品相似性来推荐内容。
语音识别:通过语音特征和其他样本之间的相似性来分类不同的语音命令。
医疗诊断:例如根据症状数据预测患者是否患有某种疾病。