二元交叉熵损失函数
深度学习中的二元分类损失函数通常采用二元交叉熵(Binary Cross-Entropy)作为损失函数。
二元交叉熵损失函数的基本公式是:
L(y, y_pred) = -y * log(y_pred) - (1 - y) * log(1 - y_pred)
其中,y是真实标签,y_pred是模型预测的概率。
二元交叉熵的原理
当预测错误时:如y_pred=1, y=0 和 y_pred=0,y=1.
则二元交叉熵损失函数结果为正无穷大。
二元分类代码例子
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# 加载数据集
data = load_breast_cancer()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建模型
model = LogisticRegression()
# 定义损失函数
loss_fn = lambda y_true, y_pred: -y_true * log(y_pred) - (1 - y_true) * log(1 - y_pred)
# 训练模型
for epoch in range(100): # 假设我们进行100轮训练
# 前向传播
y_pred = model.predict(X_train)
loss = loss_fn(y_train, y_pred)
# 反向传播
model.update(X_train, y_train)
# 输出训练进度
if (epoch+1) % 10 == 0:
print(f"Epoch {epoch+1}/{100}, Loss: {loss}")