机器学习
机器学习(Machine Learning)是人工智能的一个分支,简单来说,它让计算机通过数据自己“学习”规律并做出预测或决策,而不需要人类明确地编写每一步规则。它有点像教小孩认识世界:你给它很多例子,它通过观察和总结找出模式,以后遇到类似情况就能自己判断。
具体点,机器学习的核心是用算法从数据中提取特征、建立模型,然后用这个模型去解决实际问题。比如,你想让机器识别手写数字,可以给它看几千张写着0到9的图片,告诉它每个是什么(或者不告诉,让它自己分组),它就会慢慢学会分辨。
机器学习主要分三种类型:监督学习(有标签数据,像教答案)、无监督学习(无标签,自己找规律)和强化学习(通过试错学怎么做最好)。
它在生活中无处不在,比如推荐你喜欢的电影、过滤垃圾邮件、自动驾驶识别路况,甚至帮医生看X光片。关键在于,它靠的是数据和算法,而不是传统的“如果这样就那样”的硬编码规则。所以数据越多、算法越聪明,它就越厉害。
监督学习和无监督学习
监督学习和无监督学习是两种最基本的方法,它们的主要区别在于数据是否带有标签
监督学习
监督学习(Supervised Learning)就像有一个老师在旁边指导。它的核心是用已经标记好的数据来训练模型,也就是说,数据里不仅有输入(特征),还有对应的正确输出(标签)。比如,你要教模型识别猫狗的图片,训练数据里每张图片都会标注“这是猫”或“这是狗”。模型通过学习这些例子,找到输入和输出之间的规律,以后看到新图片就能自己判断是猫还是狗。常见的监督学习任务包括分类()(比如判断邮件是不是垃圾邮件)和回归()(比如预测房价)
无监督学习
无监督学习(Unsupervised Learning)则没有这个“老师”。数据只有输入,没有预先给出的标签,模型得自己去挖掘数据的内在结构或模式。比如,你给一堆图片,模型可能会自己把它们分成几类,比如“看起来像动物的”和“看起来像风景的”,但它不知道这些类具体叫什么。无监督学习常用来做聚类(Clustering)(把相似的东西分一组)、降维(Dimensionality reduction)(把复杂数据简化但保留关键信息)或者异常检测(Anomaly detection)(发现异常的数据点),比如分析用户行为、压缩数据和金融系统中的欺诈检测。
线性回归模型(Linear Regression)
线性回归是监督学习中最基础的回归模型,旨在建立输入特征(X)与连续型目标变量(y)之间的线性关系。其核心假设是:目标值可以通过特征的加权求和加上一个常数项(截距)来预测。
模型方程
:预测目标值 :截距(bias term) :输入特征 :误差项(服从正态分布)
模型训练
目标:找到最优参数
损失函数:均方误差(MSE)
:样本数量。 :模型预测值。
损失函数(Cost Function)
成本函数将告诉我们,模型的表现如何,以便使我们尝试使其变得更好。
成本函数公式如下:
:样本数量 :单个样本的损失计算方式 :模型对第 个样本的预测值 :第 个样本的真实值
梯度下降(Gradient Descent)
梯度下降(Gradient Descent)是一种优化算法,用于最小化损失函数,在机器学习和深度学习中广泛应用。
核心思想:沿着损失函数梯度下降的方向,逐步更新参数,使损失函数的值最小化。
原理
- 计算损失函数的梯度
通过对损失函数
- 更新参数
使用学习率
这里,
- 重复迭代,直至收敛
持续更新参数,知道损失函数的变化足够小(或者达到预设的迭代次数)。
梯度下降的三种类型
-
批量梯度下降(BGD, Batch Gradient Descent)
-
计算整个训练集上的梯度,求均值后更新参数。
-
优点:收敛稳定
-
缺点:计算量大,不适合大规模数据
-
-
随机梯度下降(SGD, Stochastic Gradient Descent)
- 每次仅使用一个样本来更新参数,更新更快。
- 优点:计算快,适合大规模数据
- 缺点:更新不稳定,可能震荡不收敛
-
小批量梯度下降(MBGD, Mini-batch Gradient Descent)
- 介于批量和随机之间,每次使用一个小批量数据(如 32、64 个样本)计算梯度。
- 优点:计算稳定,收敛快,适合大数据
多特征(Multiple Features)
多特征,在机器学习里,指的是每个样本(数据点)有多个属性或变量来描述它。
比如,你想训练一个模型预测房价:
- 一个房子可以有很多特征(Feature),比如:面积、楼层、建造年份、距离地铁的距离、装修情况等等。
- 每一个特征就是一个影响预测结果的因素。
- 这些特征加在一起,就叫多特征(multi-feature)。
简单理解就是:
一个样本不只用一个数字描述,而是用一组数字或属性来描述。
在数学上,一般用一个向量来表示,比如:
模型就根据这一整组特征,来学习预测结果,比如房价。
向量化
向量化(Vectorization)指的是使用向量或矩阵运算代替传统的循环操作来处理数据,尤其是在模型训练和推理过程中。这种方式可以大幅提升程序执行效率,尤其在使用 NumPy
、Pandas
或TensorFlow
、PyTorch
等库时,能够显著减少运行时间。
例如:
普通做法,使用循环
1 | import numpy as np |
向量化
1 | import numpy as np |
特征缩放(Feature Scaling)
特征缩放是机器学习中对输入特征数据进行规范化或标准化的过程,其主要目的是将不同量纲或范围的特征转换到相同的尺度上。这样做可以提高模型的训练效率和准确性,尤其对于以下算法效果显著:
- 梯度下降类算法(如线性回归、逻辑回归、神经网络):避免某些特征主导梯度更新。
- 基于距离的算法(如
KNN
、SVM
、K-means
):距离计算对特征尺度敏感。 - 正则化模型:如
L1(Lasso)
、L2(Ridge)
正则化对特征尺度敏感。
例如:
假设我们有一个特征是"年龄",范围从18岁到70岁,还有一个特征是"收入",范围从2,000到200,000,如果不进行缩放,模型可能会更关注收入,而忽略年龄。这种特征量纲的不一致会影响模型性能。
最小-最大缩放(Min-Max Scaling)
将特征缩放到
适用于特征分布较为均匀的情况。
标准化(Standardization)
将特征转为均值为0、标准差为1的分布(Z-score标准化):
对异常值不敏感,更适合正态分布的数据。
最大绝对值缩放(MaxAbsScaler)
将特征缩放到 [-1, 1] 之间,保持稀疏性,适用于稀疏数据集。
对数缩放(Log Scaling)
用于缩放右偏的特征(长尾分布):