
- 機器學習基礎
- 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=-\left ( \frac{1}{m} \right )\times \Sigma \left ( y\times log\left ( p \right )+\left ( 1-y \right )\times log\left ( 1-p \right ) \right )$$
其中“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 表示效能完美。