粉粉蕉的笔记本粉粉蕉的笔记本
  • JAVA

    • 代码笔记
    • Java8实战
    • 分布式事务实战(Seata)
    • 模板引擎(FreeMarker)
    • SpringSecurity
    • Maven
  • PYTHON

    • 概述
    • python3
    • python3(菜鸟教程)
    • pandas
    • numpy
    • matplotlib
  • 中间件

    • Kafka
    • RocketMQ
    • Redis
    • MongoDB
    • Elastic Search
  • 数据库

    • Mysql
  • 设计模式
  • 运维

    • linux命令速查
    • windows命令速查
    • Docker笔记
    • kubernetes学习笔记
    • kubernetes实操笔记
    • 运维工具大全
    • git操作宝典
  • 大数据

    • 概览
    • Hadoop
    • Hive
  • 机器学习

    • 机器学习概览
  • 概率论
  • 线性代数
  • 统计学
  • 金融知识学习
  • 聚宽
  • 因子分析
  • RSS
  • 资源导航
  • 医保
  • 健身

    • 笔记
    • 训练计划
  • 装修攻略
  • 读书笔记

    • 《深度学习》
我也想搭建这样的博客!
🚋开往
  • JAVA

    • 代码笔记
    • Java8实战
    • 分布式事务实战(Seata)
    • 模板引擎(FreeMarker)
    • SpringSecurity
    • Maven
  • PYTHON

    • 概述
    • python3
    • python3(菜鸟教程)
    • pandas
    • numpy
    • matplotlib
  • 中间件

    • Kafka
    • RocketMQ
    • Redis
    • MongoDB
    • Elastic Search
  • 数据库

    • Mysql
  • 设计模式
  • 运维

    • linux命令速查
    • windows命令速查
    • Docker笔记
    • kubernetes学习笔记
    • kubernetes实操笔记
    • 运维工具大全
    • git操作宝典
  • 大数据

    • 概览
    • Hadoop
    • Hive
  • 机器学习

    • 机器学习概览
  • 概率论
  • 线性代数
  • 统计学
  • 金融知识学习
  • 聚宽
  • 因子分析
  • RSS
  • 资源导航
  • 医保
  • 健身

    • 笔记
    • 训练计划
  • 装修攻略
  • 读书笔记

    • 《深度学习》
我也想搭建这样的博客!
🚋开往
  • 机器学习

机器学习概述

什么是机器学习

就是一个程序,用户将大量的历史数据提供给它,程序会根据既定的算法,从数据中总结出规律;
最后训练出来的程序便可以根据当前的输入数据、按照自己总结的规律来预测结果。

在机器学习的概念中,“大量的历史数据”即指数据训练集
“既定的算法”指机器模型
“规律”则一般用数学的函数表示
“输入数据”指数据验证集

上面的概念现在只需要知道有这么回事,后面会慢慢解释。

机器学习研究的基本流程

数据集准备 -> 数据探索性分析(EDA)-> 数据预处理 -> 数据分割 ->建立机器学习模型 ->模型参数调优 -> 提取特征 ->机器学习任务-> 模型性能评估

我们引入以下场景,通过一个实际的例子去了解机器学习的全过程:

银行需要预测“不同的人会过来银行借多少钱”。
他们认为借钱的额度只与收入有关(实际上,可能还涉及其他因素,这里为方便只考虑收入)。
于是他们统计出了以下表格:

表格1

客户收入借了多少钱
A300020000
B400025000
C600030000
D1000040000
E200070000

1.数据集准备

上面的表格1就是一个数据训练集,用来输入给我们的机器模型,让它能够从数据中“学习”,并总结出“规律”。

训练集分为两个部分:因子和标签。
因子:我们认为的与结果有关的变量(在示例中即指用户的收入)
标签:我们需要预测的结果(在示例中即指用户会借多少钱)

2.数据探索性分析(EDA)

目标:通过可视化和统计方法理解数据的基本特征,发现数据中的模式、异常值、分布情况以及变量之间的关系,为后续处理提供依据。

重要性:EDA是数据科学项目的基石,有助于确保数据质量,识别潜在问题(如异常值或缺失值),验证业务假设(如收入与借款额度的关系),并指导后续的预处理和建模步骤。忽略EDA可能导致模型基于错误假设,性能下降。

详细过程:

  • 描述性统计:计算关键统计量,如均值、中位数、标准差、最小值和最大值。例如,从表格1中:

    • 收入均值 = (3000 + 4000 + 6000 + 10000 + 2000) / 5 = 5000

    • 借款额度均值 = (20000 + 25000 + 30000 + 40000 + 70000) / 5 = 37000

    • 收入标准差 ≈ 3162,借款额度标准差 ≈ 18708,显示借款额度波动较大。

  • 数据可视化:绘制散点图、直方图或箱线图。例如,散点图显示收入与借款额度的关系(见下图),可观察到收入增加时借款额度一般增加,但客户E(收入2000,借款70000)可能是一个异常值。

散点图
  • 检查缺失值:本例中没有缺失值,但通常需使用isnull()函数检查。

  • 分布分析:检查收入与借款额度的分布是否正常。收入分布可能右偏(由于客户E),借款额度分布也可能右偏。

  • 相关性分析:计算皮尔逊相关系数。收入与借款额度的相关系数约为0.53,显示中等正相关,但受异常值影响。

3.数据预处理

目标:清理和转换原始数据,使其适合机器学习模型,包括处理异常值、缺失值、特征缩放等。

重要性:原始数据往往包含噪声和不一致,预处理能提高模型稳定性、准确性和泛化能力。忽略预处理可能导致模型过拟合或欠拟合。

详细过程:

  • 处理缺失值:本例无缺失值,但若有,可用均值、中位数或插值法填充。

  • 处理异常值:从EDA中识别客户E为异常值(收入低但借款高),可考虑删除或调整。例如,删除E后数据更一致,但需业务判断是否合理。

  • 特征缩放:由于收入(2000-10000)和借款额度(20000-70000)范围差异大,使用标准化(Z-score)或归一化(Min-Max)。例如,归一化收入到[0,1]:收入_min=2000, 收入_max=10000,则客户A的收入归一化为(3000-2000)/(10000-2000)=0.125。

  • 数据编码:本例无分类变量,无需编码。如有,需one-hot编码。

  • 数据转换:考虑创建新特征,如收入分组或对数转换,以捕捉非线性关系。

4.数据分割

目标:将数据集分为训练集、验证集和测试集,以评估模型泛化能力。

重要性:分割数据允许模型在训练集上学习,在验证集上调参,在测试集上最终评估,防止过拟合并确保模型对新数据的性能。

详细过程:

  • 分割比例:通常使用70-30或80-20分割。本例数据小(5个样本),可能不适用标准分割,建议使用留一法交叉验证(Leave-One-Out Cross-Validation, LOOCV),即每次用4个样本训练,1个测试,重复5次。

  • 随机分割:确保随机性,避免偏差。例如,使用sklearn的train_test_split函数,设置随机种子。

  • 分层分割:本例是回归问题,无需分层。但分类问题中,需保持类别比例。

  • 具体分割:在LOOCV中,每次迭代选择一个样本作为测试集,其余作为训练集。

5.建立机器学习模型

目标:选择并初始化一个机器学习模型,以学习数据中的模式。

重要性:模型选择直接影响预测准确性。合适的模型能捕捉数据关系,而错误模型可能导致差性能。

详细过程:

  • 选择模型类型:本例是回归问题(预测连续值借款额度),因此选择回归模型,如简单线性回归(假设线性关系)或决策树回归(处理非线性)。

  • 模型初始化:例如,使用线性回归模型:借款额度 = w * 收入 + b,其中w和b为参数。

  • 训练模型:使用训练集数据拟合模型。例如,在线性回归中,使用最小二乘法或梯度下降优化w和b。

  • 实现工具:使用Python库如scikit-learn,代码示例略

6.模型参数调优

目标:调整模型超参数以优化性能,平衡过拟合和欠拟合。

重要性:超参数(如学习率、正则化参数)控制模型行为,调优能显著提高准确性和泛化能力。

详细过程:

  • 识别超参数:对于线性回归,可能无超参数,但若使用正则化(如Ridge或Lasso),需调优正则化强度α。

  • 使用验证集:在验证集上评估不同参数性能。本例由于数据小,可使用交叉验证的验证分数。

  • 调优方法:

    • 网格搜索:系统遍历参数组合,例如α=[0.1, 1, 10]。

    • 随机搜索:随机采样参数空间。

  • 评估指标:使用均方误差(MSE)或R²分数选择最佳参数。

  • 示例:如果使用Ridge回归,通过网格搜索找到最佳α,使得验证集MSE最小。

7.提取特征

目标:从原始数据中创建或选择相关特征,以增强模型预测能力。

重要性:特征工程是机器学习成功的关键,好的特征能捕捉数据中隐藏模式,减少噪声,提高模型性能。

详细过程:

  • 特征工程:基于业务知识创建新特征。例如:

  • 创建多项式特征:收入²或收入³,以捕捉非线性关系。

  • 创建交互特征:如果有其他特征(如年龄),可与收入组合。

  • 特征选择:使用统计方法(如相关性分析)或模型基方法(如特征重要性)选择关键特征。本例只有收入特征,但可评估收入与借款额度的相关性,决定是否保留。

  • 维度缩减:如果特征多,可使用PCA降维,但本例无需。

  • 示例:从EDA中,收入与借款额度相关性中等,可尝试添加收入平方特征,看看是否改善模型。

8.机器学习任务

目标:明确机器学习任务类型(如回归、分类),并定义损失函数和优化算法。

重要性:任务定义指导模型选择、评估指标和优化方向,确保问题正确建模。

详细过程:

  • 任务识别:本例是回归任务,因为预测连续值(借款额度)。

  • 选择损失函数:回归任务常用均方误差(MSE)或平均绝对误差(MAE)。例如,MSE = Σ(预测值 - 真实值)² / n。

  • 选择优化算法:如梯度下降法用于最小化损失函数。在线性回归中,可使用普通最小二乘法或随机梯度下降。

  • 模型训练:根据任务和损失函数训练模型。例如,最小化MSE学习参数w和b。

9.模型性能评估

目标:评估模型在未见数据上的性能,确保其泛化能力。

重要性:评估帮助确认模型是否有效,避免过拟合,并为部署提供依据。忽略评估可能导致模型在实际中失败。

详细过程:

  • 使用测试集:在最终测试集上计算性能指标。本例由于数据小,使用LOOCV的平均性能。

  • 性能指标:对于回归,常用:

    • MSE(均方误差):值越小越好。

    • RMSE(均方根误差):与目标变量同单位。

    • MAE(平均绝对误差):鲁棒性强。

    • R²分数:解释方差比例,1为最佳。

  • 交叉验证:使用LOOCV,计算5次迭代的MSE平均值为最终评估。

  • 示例:假设线性回归模型在LOOCV上的MSE为1000000,R²为0.6,表示模型解释60%方差,但可能受异常值影响。

  • 结果分析:比较模型与基准(如均值预测),并可视化预测 vs 真实值。

常见的机器学习模型

  • 逻辑回归(Logistic Regression)

  • 决策树(Decision Tree)

  • 随机森林(Random Forest):是由多个决策树构成的集成模型

  • 支持向量机(Support Vector Machine,SVM)

  • 神经网络(Neural Network)

  • 卷积神经网络(Convolutional Neural Network,CNN):一种特殊的神经网络

  • 循环神经网络(Recurrent Neural Network,RNN)

  • 生成对抗网络(Generative Adversarial Network,GAN):由两个神经网络组成,分别为生成器和判别器,通过对抗训练的方式来生成新的数据

FAQ

1.学习机器学习之前应该掌握哪些学科?

  • 线性代数:机器学习中涉及很多矩阵的计算。

2.什么是机器学习?

传统的程序: 输入(数据) + 代码 = 输出(结果)

我们运行代码,然后输入数据,程序会帮我们计算出结果。

机器学习程序: 输入(数据) + 输出(结果) 训练出 代码

通过数据训练出能预测结果的程序,就是机器学习。

3.机器学习训练出来的程序主要解决什么问题?

根据需要预测的结果是离散型的还是连续型的,分为两大类问题:

  • 分类

    对离散型变量进行预测。比如:

    • 识别动物是猪牛鸡鸭中的哪种;
    • 识别颜色;
    • 鉴别女生是否漂亮;
  • 回归

    对连续型变量进行预测。比如:

    • 房价走势;股票走势;
    • 一年内气温变化;

不同类型的问题需要建立不同的机器学习模型来研究。

4.机器学习与深度学习的区别?

我们可以通过两者的研究流程,看看两者的区别

步骤机器学习深度学习
1数据集准备数据集准备
2探索性地对数据进行分析(EDA)
3数据预处理数据预处理
4数据分割(训练集 & 测试集)数据分割(训练集 & 测试集)
5建立机器学习模型定义神经网络模型
6模型参数调优模型参数调优
7提取特征
8机器学习任务(回归or分类)训练网络
9模型性能评估

实际上,深度学习属于一种特殊的机器学习流程。
由上可见,深度学习省略了提取特征(特征工程)的步骤;同时,建模过程也缩短了,用神经网络代替了之前百花齐放的机器学习算法。

参考:https://mp.weixin.qq.com/s?__biz=MjM5Nzk5MjA5Mw==&mid=2652749788&idx=1&sn=0fed32336bbec174f942214ab86fd2d4&chksm=bd389c2e8a4f15383fccbded9ef0ca5061fe4acfba1b42de5c31d347a0b1a51d77b74c87eea0&scene=27

5.什么是特征?

见“数据集准备”

6.有哪些机器模型?机器模型如何总结出“规律”?

见“建立机器学习模型”

7.什么是回归?什么是分类?

见“机器学习任务”

8.什么是有监督算法?什么是无监督算法?

略

相关概念解释

回归

分类

特征

形容样本有多少个需要取样的“属性”;
比如某个银行判断可以借多少钱给某个人,可能需要获得这个人(样本)的“年薪”、“年龄”这两个特征(属性),去进行判断。

拟合

过拟合

偏置项

误差项

真实值与预测值之间存在的差异。一般用ε表示。

损失函数

当我们计算出了一个数学模型后,我们便可以用模型计算出一系列的预测值;
每一个预测值与真实值肯定有误差(ε); 损失函数就是将所有误差作为入参,统计出该数学模型整体误差值(或叫精确度)的工具。
如果发现这个“整体误差值”太大,我们便需要对数学模型进行调参; 然后重新通过损失函数计算“整体误差值”,直到其到达我们能接受的范围。

模型的鲁棒性

可以理解为“健壮性”,形容当输入的数据错误时,系统能否正常运行。

独立同分布

用来形容两个随机变量(假设为X1和X2)服从同一分布(同分布),且X1的取值不会影响到X2的取值(独立);
对于多次重复实验,像抛硬币,就可以认为第一次抛硬币的结果(X1)和第二次抛硬币的结果(X2)是独立同分布的。

高斯分布

似然函数

偏导

梯度下降

参考资料

B站视频:机器学习入门到精通!...

Last Updated: 10/23/25, 10:06 AM
Contributors: dongyz8