机器学习的损失函数

李航的统计机器学习方法说:
统计学习方法三要素:模型,策略,算法
模型是假设,策略就是验证这个假设好坏的方法,算法是知道了假设好坏程度,怎么让假设向好的方向演进.所以需要定量地知道模型的好坏程度.

模型好坏的理解

如何定义模型的好坏呢.比如拿来一堆真实数据 (Xi,yi) ,然后一个模型根据 Xi 预测 yi^ ,显然这个 yi^ 不一定和真实的 yi 相符.现在有一个问题,假设空间中,最好的那个模型,他能好到什么程度,这显然和训练数据有关,和模型自身也有关系,比如有些数据就是自相矛盾的,那模型再怎么牛逼,也无可奈何.其次,即使数据是可学习的,并且有个模型非常牛逼,对于这些真实数据,预测值和真实值都相符,它也不能保证对于未见到的值,它也能预测准确.说不定它只是死记硬背的呢.万里长征总有第一步,先研究一下如何定义模型的好坏.

损失函数(loss function)和风险函数

损失函数

损失函数度量的是一次预测的好坏.它并没有说是在训练集/测试集/验证集.

  1. 0-1 损失函数
  2. 平方损失函数
  3. 绝对损失函数
  4. 对数损失函数 这个比较有意思有篇介绍. 如果模型认为一个事件太会发生(p很小),但是它发生了,就要给他很大的惩罚.
  5. 合页损失函数

代理损失函数

对于一些问题

风险函数(risk function)

从”风险”两个字,就可以看出风险函数是一种期望,是对一个事物的提前估量.

Rexp=Ep[L(y,f(X))]

经验风险(empirical risk)

经验风险是训练数据集中的损失的平均.
根据大数定理,自然的想法,是希望经验风险越小越好.但是如果训练集数据少,有可能过拟合.所以需要区分下面两个概念

经验风险最小

结构经验风险最小

李航书中说,极大似然估计是一种经验风险最小的例子.不是很理解.
结构经验风险=经验风险+结构带来的风险

### 机器学习损失函数的实现与应用 在机器学习领域,损失函数是模型优化的核心组成部分。通过定义适当的损失函数,可以衡量模型预测值与真实值之间的差异,并以此为目标进行参数优化。以下是关于头歌平台中机器学习损失函数的实现与应用相关内容。 #### 损失函数的基本概念 损失函数通常由经验风险函数和正则化项组成。经验风险函数表示的是模型预测值与真实值之间的差距,而正则化项用于防止过拟合[^1]。常见的正则化项包括L1正则化(Lasso回归)和L2正则化(Ridge回归)。整个目标函数的形式如下: ```python J(θ) = (1/n) * Σ L(y_i, f(x_i; θ)) + λ * R(θ) ``` 其中,`L` 是损失函数,`R(θ)` 是正则化项,`λ` 是正则化系数。 #### 常见的损失函数 1. **Log对数损失函数** Log对数损失函数(也称为逻辑回归损失函数)主要用于二分类任务。其形式为: ```python L(y, p) = -[y * log(p) + (1 - y) * log(1 - p)] ``` 其中,`y` 是真实标签,`p` 是模型预测的概率值。该损失函数在逻辑回归中广泛应用,并可通过梯度下降法进行优化。 2. **指数损失函数** 指数损失函数主要应用于AdaBoost算法中。其形式为: ```python L(y, f(x)) = exp(-y * f(x)) ``` 该损失函数对于异常点非常敏感,因此在噪声较多的数据集上表现不佳。Gradient Boosting对此进行了改进,允许使用任意连续可导的损失函数[^2]。 3. **均方误差损失函数** 均方误差损失函数(MSE)常用于回归任务。其形式为: ```python L(y, f(x)) = (y - f(x))^2 ``` #### 损失函数的实现 以逻辑回归为例,可以通过Python中的`sklearn`库实现损失函数的计算与优化。以下是一个简单的逻辑回归实现示例: ```python from sklearn.linear_model import LogisticRegression from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split # 生成数据集 X, y = make_classification(n_samples=1000, n_features=20, random_state=42) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 初始化逻辑回归模型 model = LogisticRegression() # 训练模型 model.fit(X_train, y_train) # 输出模型参数 print("Coefficients:", model.coef_) print("Intercept:", model.intercept_) ``` 上述代码展示了如何使用`sklearn`库实现逻辑回归模型,并自动优化损失函数[^3]。 #### 应用场景 损失函数的应用场景广泛,包括但不限于以下方面: - 分类任务:如逻辑回归、支持向量机等。 - 回归任务:如线性回归、岭回归等。 - 集成学习:如Gradient Boosting、XGBoost等。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值