
- 机器学习基础
- ML - 首页
- ML - 简介
- ML - 入门
- ML - 基本概念
- ML - 生态系统
- ML - Python 库
- ML - 应用
- ML - 生命周期
- ML - 必备技能
- ML - 实现
- ML - 挑战与常见问题
- ML - 限制
- ML - 现实生活中的例子
- ML - 数据结构
- ML - 数学
- ML - 人工智能
- ML - 神经网络
- ML - 深度学习
- ML - 获取数据集
- ML - 分类数据
- ML - 数据加载
- ML - 数据理解
- ML - 数据准备
- ML - 模型
- ML - 监督学习
- ML - 无监督学习
- ML - 半监督学习
- ML - 强化学习
- ML - 监督学习与无监督学习
- 机器学习数据可视化
- ML - 数据可视化
- ML - 直方图
- ML - 密度图
- ML - 箱线图
- ML - 相关矩阵图
- ML - 散点矩阵图
- 机器学习统计学
- ML - 统计学
- ML - 均值、中位数、众数
- ML - 标准差
- ML - 百分位数
- ML - 数据分布
- ML - 偏度和峰度
- ML - 偏差和方差
- ML - 假设
- 机器学习中的回归分析
- ML - 回归分析
- ML - 线性回归
- ML - 简单线性回归
- ML - 多元线性回归
- ML - 多项式回归
- 机器学习中的分类算法
- ML - 分类算法
- ML - 逻辑回归
- ML - K近邻算法 (KNN)
- ML - 朴素贝叶斯算法
- ML - 决策树算法
- ML - 支持向量机
- ML - 随机森林
- ML - 混淆矩阵
- ML - 随机梯度下降
- 机器学习中的聚类算法
- ML - 聚类算法
- ML - 基于质心的聚类
- ML - K均值聚类
- ML - K中心点聚类
- ML - 均值漂移聚类
- ML - 层次聚类
- ML - 基于密度的聚类
- ML - DBSCAN 聚类
- ML - OPTICS 聚类
- ML - HDBSCAN 聚类
- ML - BIRCH 聚类
- ML - 亲和传播
- ML - 基于分布的聚类
- ML - 凝聚层次聚类
- 机器学习中的降维
- ML - 降维
- ML - 特征选择
- ML - 特征提取
- ML - 后退消除法
- ML - 前向特征构造
- ML - 高相关性过滤器
- ML - 低方差过滤器
- ML - 缺失值比率
- ML - 主成分分析
- 强化学习
- ML - 强化学习算法
- ML - 利用与探索
- ML - Q学习
- ML - REINFORCE 算法
- ML - SARSA 强化学习
- ML - 演员-评论家方法
- 深度强化学习
- ML - 深度强化学习
- 量子机器学习
- ML - 量子机器学习
- ML - 使用 Python 的量子机器学习
- 机器学习杂项
- ML - 性能指标
- ML - 自动工作流
- ML - 提升模型性能
- ML - 梯度提升
- ML - 自举汇聚 (Bagging)
- ML - 交叉验证
- ML - AUC-ROC 曲线
- ML - 网格搜索
- ML - 数据缩放
- ML - 训练和测试
- ML - 关联规则
- ML - Apriori 算法
- ML - 高斯判别分析
- ML - 成本函数
- ML - 贝叶斯定理
- ML - 精度和召回率
- ML - 对抗性
- ML - 堆叠
- ML - 时期
- ML - 感知器
- ML - 正则化
- ML - 过拟合
- ML - P值
- ML - 熵
- ML - MLOps
- ML - 数据泄露
- ML - 机器学习的盈利模式
- ML - 数据类型
- 机器学习 - 资源
- ML - 快速指南
- ML - 速查表
- ML - 面试问题
- ML - 有用资源
- ML - 讨论
机器学习 - 成本函数
在机器学习中,成本函数是衡量机器学习模型性能的一种指标。它是一个数学函数,它接收模型的预测值和数据的真实值,并输出一个表示模型预测成本或误差的单个标量值。训练机器学习模型的目标是最小化成本函数。
成本函数的选择取决于要解决的具体问题。例如,在二分类任务中,目标是预测数据点是否属于两个类别之一,最常用的成本函数是二元交叉熵函数。在回归任务中,目标是预测一个连续值,通常使用均方误差函数。
让我们仔细看看二元交叉熵函数。给定一个有两个类别的二分类问题,我们称之为类别 0 和类别 1,并用“p(y=1|x)”表示模型预测类别 1 的概率。每个数据点的真实标签要么是 0 要么是 1。我们可以将二元交叉熵成本函数定义如下:
J=−(1m)×Σ(y×log(p)+(1−y)×log(1−p))
其中“m”是数据点的数量,“y”是每个数据点的真实标签,“p”是类别 1 的预测概率。
二元交叉熵函数具有几个理想的特性。首先,它是一个凸函数,这意味着它有一个唯一的全局最小值,可以使用优化技术找到。其次,它是一个严格的正函数,这意味着它会惩罚错误的预测。第三,它是一个可微函数,这意味着它可以与基于梯度的优化算法一起使用。
Python 实现
现在让我们看看如何使用 NumPy 在 Python 中实现二元交叉熵函数:
import numpy as np def binary_cross_entropy(y_pred, y_true): eps = 1e-15 y_pred = np.clip(y_pred, eps, 1 - eps) return -(y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)).mean()
在此实现中,我们首先对预测概率进行裁剪,以避免对数运算中的数值问题。然后,我们使用 NumPy 函数计算二元交叉熵损失,并返回所有数据点的平均值。
一旦我们定义了成本函数,我们就可以使用它来训练机器学习模型,使用诸如梯度下降之类的优化技术。优化的目标是找到使成本函数最小化的模型参数集。
示例
以下是如何使用二元交叉熵函数在 Iris 数据集上训练逻辑回归模型的示例,使用 scikit-learn:
from sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split # Load the Iris dataset iris = load_iris() # Split the data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=42) # Train a logistic regression model logreg = LogisticRegression() logreg.fit(X_train, y_train) # Make predictions on the testing set y_pred = logreg.predict(X_test) # Compute the binary cross-entropy loss loss = binary_cross_entropy(logreg.predict_proba(X_test)[:, 1], y_test) print('Loss:', loss)
在上面的示例中,我们首先使用 scikit-learn 中的 `load_iris` 函数加载 Iris 数据集。然后,我们使用 `train_test_split` 函数将数据分成训练集和测试集。我们使用 scikit-learn 中的 `LogisticRegression` 类在训练集上训练逻辑回归模型。然后,我们使用训练模型的 `predict` 方法对测试集进行预测。
为了计算二元交叉熵损失,我们使用逻辑回归模型的 `predict_proba` 方法获取测试集中每个数据点类别 1 的预测概率。然后,我们使用索引提取类别 1 的概率,并将它们与测试集的真实标签一起传递给我们的 `binary_cross_entropy` 函数。该函数计算损失并返回它,我们在终端上显示它。
输出
当您执行此代码时,它将产生以下输出:
Loss: 1.6312339784720309
二元交叉熵损失是衡量逻辑回归模型能够预测测试集中每个数据点类别的能力。损失越低,性能越好,损失为 0 表示性能完美。