机器学习回顾(一)
什么是机器学习
机器学习本质上就是利用数学公式和算法,从数据中发现规律,并用这些规律进行预测或决策。
用数学模型拟合数据中的规律
我们通常有一堆数据,这些数据可以看作是输入(X)和输出(Y)之间的关系,虽然这个关系我们不知道,但它客观存在。机器学习的目标就是用一个数学公式(或模型)去近似这个关系。
举个简单例子:
假设你想根据房子的面积(X)来预测房价(Y),你有很多这样的数据样本:
房子面积 (X) | 房价 (Y) |
---|---|
50 | 100万 |
70 | 140万 |
90 | 180万 |
... | ... |
你猜测,房价和面积之间可能大致满足一个线性关系,比如:
Y=w⋅X+b
- Y:预测的房价(输出)
- X:房子面积(输入)
- w:权重(斜率,表示面积每增加1单位,房价变化多少)
- b:偏置(截距,表示即使面积为0时也有基本价格)
这就是一个简单的线性数学模型,机器学习要做的事情,就是通过数据,自动找出最合适的 w 和 b,使得这个公式能最准确地预测房价。
机器学习如何用数学公式总结规律?
选择一个模型(数学函数)
比如:
- 线性回归:y=wx+b
- 逻辑回归:y=σ(wx+b)(用于分类,σ是 sigmoid 函数)
- 多项式回归:y=w1x+w2x2+⋯+b
- 神经网络:多个非线性函数的组合,比如 y=f3(f2(f1(x))),每一层都是数学变换
这些模型本质都是:用数学公式去拟合输入与输出之间的关系。
2. 定义损失函数(Loss Function)——衡量预测与真实值的差距
为了知道我们的公式(模型)好不好,我们需要一个标准,来衡量它预测的值与真实值之间的误差。
比如在线性回归中,常用的损失函数是均方误差(MSE):
MSE=n1i=1∑n(yi−y^i)2
- yi:第 i 个样本的真实值(比如真实房价)
- y^i:第 i 个样本的预测值(比如模型算出的房价)
- n:样本总数
这个公式的意思是:预测值与真实值差距的平方的平均值越小,模型越好。
3. 优化算法 —— 找到让损失最小的参数
有了模型和损失函数后,我们要找到最佳的参数(比如 w 和 b),使得损失函数的值最小。
这就是优化问题,最常用的方法是:
- 梯度下降法(Gradient Descent):通过求损失函数对参数的偏导数(梯度),一步一步调整参数,使损失不断减小。
公式示意(以 w 为例):
w:=w−α⋅∂w∂Loss
- α:学习率,控制每次更新的步长
- ∂w∂Loss:损失函数对 w 的偏导数,表示 w 的微小变化对总体误差的影响
通过不断迭代更新参数,最终找到让损失最小的那组参数,也就是我们总结出的“数据规律”。
机器学习所准备的库
基础数据处理与科学计算库
这些库是进行数据分析和机器学习前的基础工具,用于数据清洗、处理、数值运算等。
库名 | 用途简介 | 常用功能 |
---|---|---|
NumPy | 数值计算基础库,用于高效处理多维数组和矩阵 | 数组操作、线性代数、随机数生成等 |
Pandas | 数据处理与分析,特别适合表格数据(如 CSV、Excel) | 数据读取、清洗、筛选、合并、统计等 |
SciPy | 科学计算扩展库,包含很多数学算法 | 优化、积分、插值、统计分布等 |
🔹 推荐学习顺序:NumPy → Pandas → SciPy
数据可视化库
用于将数据或模型结果进行可视化展示,便于分析与理解。
库名 | 用途简介 |
---|---|
Matplotlib | 最基础的绘图库,灵活强大,适合定制各种图表 |
Seaborn | 基于 Matplotlib,更简单易用,适合统计图表(如分布图、热力图等) |
Plotly / Bokeh | 交互式可视化,适合网页展示或dashboard |
机器学习核心库
这是机器学习的“主力军”,提供了大量算法实现、模型训练与评估工具。
1. Scikit-learn(sklearn)
- 最主流、最易用的机器学习库,适合传统机器学习算法
- 包括:分类、回归、聚类、降维、模型选择、数据预处理等
- 支持:线性回归、逻辑回归、决策树、SVM、KNN、随机森林、K-Means、PCA 等
- 提供模型评估、交叉验证、网格搜索等工具
适合:入门学习、传统机器学习任务(如分类、回归、聚类)
2. XGBoost / LightGBM / CatBoost
- 高效的梯度提升(Gradient Boosting)框架,常用于数据挖掘竞赛(如 Kaggle)
- 特别擅长结构化数据的表格类任务(如表格分类、回归)
- 比传统算法(如随机森林)更快、效果更好
库名 | 特点 |
---|---|
XGBoost | 梯度提升树经典实现,速度快、效果好 |
LightGBM | 微软出品,速度极快,内存占用低,适合大数据 |
CatBoost | 支持类别型变量(不用独热编码),对类别特征处理优秀 |
适合:表格数据建模、高精度预测任务
自然语言处理(NLP)相关库
用于处理文本数据,如分词、词嵌入、文本分类、机器翻译等。
库名 | 用途 |
---|---|
NLTK | 自然语言处理基础工具包,适合教学与基础 NLP 任务 |
spaCy | 工业级 NLP 库,速度快,支持实体识别、依存句法等 |
Transformers(Hugging Face) | 提供大量预训练语言模型(如 BERT、GPT、T5),支持文本分类、问答、生成等 |
gensim | 主要用于主题建模(如 LDA)、词向量(Word2Vec、Doc2Vec) |
适合:文本分类、情感分析、机器翻译、聊天机器人等
计算机视觉(CV)相关库
用于图像处理、目标检测、图像分类等视觉任务。
库名 | 用途 |
---|---|
OpenCV | 经典图像处理库,支持图像读取、滤波、边缘检测、摄像头调用等 |
Pillow (PIL) | Python 图像处理基础库,适合简单的图像操作 |
TorchVision(配合 PyTorch) | 提供图像数据集、模型、图像变换工具,用于视觉任务 |
TensorFlow Datasets / Keras Applications | 提供预训练模型与数据集,如 ResNet、VGG 等 |
适合:图像分类、目标检测、图像生成等