一、损失函数
什么是损失函数?
【深度学习】一文读懂机器学习常用损失函数(Loss Function)-腾讯云开发者社区-腾讯云
损失函数(loss function)是用来估量模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:
LogLoss对数损失函数
Sigmoid 和softmax 函数以及交叉熵损失logloss_关于sigmoid函数是连续的-CSDN博客
平方损失函数MSE
最小二乘法是线性回归的一种。最小二乘法(OLS)将问题转化成了一个凸优化问题。
案例:
假设我们有一组数据点进行回归预测:
- 实际值(真实值)y: 10, 20, 30
- 预测值 y^: 12, 18, 29
残差 {10-12=-2,20-18=2,30-29=1}
MES=1/3(-2*-2 +2 *2 +1*1 )=9/3=3
这个值越小表示拟合的越好
>> % 实际值
y = [10, 20, 30];
% 预测值
y_hat = [12, 18, 29];
% 计算平方损失
square_loss = (y - y_hat).^2;
% 显示每个数据点的平方损失
disp('每个数据点的平方损失:');
disp(square_loss);
% 计算均方误差(MSE)
mse = mean(square_loss);
% 显示均方误差
disp('均方误差(MSE):');
disp(mse);
每个数据点的平方损失:
4 4 1
均方误差(MSE):
3
>>
指数损失函数
特点
- 对错误预测的惩罚:如果预测值 y^\hat{y}y^ 与实际标签 yyy 不符,损失函数的值会显著增加。
- 指数增长:损失函数的值随着预测错误的程度(即 y⋅y^y \cdot \hat{y}y⋅y^ 负值)指数级增长,强调了模型对错分类样本的关注。
案例:
假设你正在使用 AdaBoost 算法进行分类任务。你有一个实际标签 yyy 和一个预测值 y^\hat{y}y^,需要计算对应的指数损失。
示例数据
% 定义实际标签和预测值
y = 1; % 实际标签
y_hat = -0.8; % 预测值
% 计算指数损失
exponential_loss = exp(-y * y_hat);
% 显示结果
disp('指数损失函数的值:');
disp(exponential_loss);
案例2:
% MATLAB 计算指数损失函数示例
% 实际标签和预测值
y = [1, -1, 1, -1]; % 实际标签(示例)
y_hat = [-0.8, 0.5, -1, 0.2]; % 预测值(示例)
% 计算每个样本的指数损失
exponential_loss = exp(-y .* y_hat);
% 显示每个样本的指数损失
disp('每个样本的指数损失函数值:');
disp(exponential_loss);
% 计算平均指数损失(如果需要)
mean_exponential_loss = mean(exponential_loss);
disp('平均指数损失函数值:');
disp(mean_exponential_loss);
Hinge损失函数(SVM)
Hinge 损失函数(Hinge Loss Function)主要用于支持向量机(SVM)等分类任务,特别是在二分类问题中。它用于衡量分类器的预测结果与实际标签之间的差距,特别是在数据点被正确分类时,如何进一步推动模型在边界上的决策能力
定义
Hinge 损失函数的公式为:
案例一
% 定义实际标签和预测值
y = 1; % 实际标签
y_hat = 0.5; % 预测值
% 计算 Hinge 损失
hinge_loss = max(0, 1 - y * y_hat);
% 显示结果
disp('Hinge 损失函数的值:');
disp(hinge_loss);
案例二
% 定义实际标签和预测值
y = [1, -1, 1, -1]; % 实际标签
y_hat = [0.5, -0.3, 1.2, -0.8]; % 预测值
% 计算每个样本的 Hinge 损失
hinge_loss = max(0, 1 - y .* y_hat);
% 显示每个样本的 Hinge 损失
disp('每个样本的 Hinge 损失函数值:');
disp(hinge_loss);
% 计算平均 Hinge 损失(如果需要)
mean_hinge_loss = mean(hinge_loss);
disp('平均 Hinge 损失函数值:');
disp(mean_hinge_loss);
二、成本函数
代价函数是用来衡量整个训练集上预测输出与实际输出之间的误差的函数。代价函数通常是由损失函数对整个训练集上的样本进行求和或平均得到的
三、最大似然估计
大似然估计(MLE)是一种统计方法,用于通过观察数据来估计模型的参数。其核心思想是找到使得观测数据出现概率最大的参数值。简单理解就是:你通过数据来“猜测”最可能的模型参数,使得在这些参数下,观测到当前数据的可能性最大。这样,估计的参数就最符合实际观察到的数据。
似然函数分类
如何理解「最大似然估计」?参数估计、似然函数、最大似然估计_似然函数和最大似然估计定义-CSDN博客
正态分布的最大似然估计
案例分析:
假设我们有以下观测数据:x=[2.3,2.9,3.1,3.0,2.8]。
定义似然函数
构造对数似然函数
最大化对数似然函数
matlab:
>> % 给定数据
x = [2.3, 2.9, 3.1, 3.0, 2.8];
% 计算样本均值(MLE for mu)
mu_hat = mean(x);
% 计算样本方差(MLE for sigma^2)
sigma2_hat = var(x, 1); % 使用1作为第二个参数以计算总体方差
% 输出结果
fprintf('最大似然估计的均值 (mu) 是: %.4f\n', mu_hat)
fprintf('最大似然估计的方差 (sigma^2) 是: %.4f\n', sigma2_hat)
最大似然估计的均值 (mu) 是: 2.8200
最大似然估计的方差 (sigma^2) 是: 0.0776
四、有无监督学习
有监督学习(Supervised Learning)和无监督学习(Unsupervised Learning)是机器学习中的两个基本类别,它们主要通过以下方式区分:
有监督学习(Supervised Learning)
定义:有监督学习是指在训练模型时,使用的训练数据包括输入数据和对应的目标输出(标签)。模型通过学习这些输入输出对来进行预测或分类。
特点:
- 标签数据:训练数据集中每个样本都有一个对应的标签或目标值。
- 目标:从输入数据和标签中学习到一个映射函数,能够对新的、未见过的数据进行准确预测或分类。
- 应用场景:分类(如垃圾邮件检测、人脸识别)和回归(如房价预测、温度预测)任务。
常见算法:
- 分类算法:逻辑回归、支持向量机(SVM)、决策树、随机森林、k近邻(k-NN)、神经网络等。
- 回归算法:线性回归、岭回归、LASSO回归等。
示例:
- 分类:通过大量标记为“猫”或“狗”的图片来训练一个模型,以便能对新的图片进行分类。
- 回归:利用历史房价数据来训练一个模型,预测未来某个地区的房价。
无监督学习(Unsupervised Learning)
定义:无监督学习是指在训练模型时,使用的训练数据只有输入数据,没有对应的目标输出(标签)。模型通过分析数据中的结构、模式或特征来进行学习。
特点:
- 无标签数据:训练数据集中没有任何标签或目标值。
- 目标:发现数据中的潜在结构、模式、群体或特征,无需事先了解目标输出。
- 应用场景:聚类(如客户细分)、降维(如特征选择)、异常检测(如欺诈检测)等任务。
常见算法:
- 聚类算法:k均值(k-means)、层次聚类(Hierarchical Clustering)、DBSCAN等。
- 降维算法:主成分分析(PCA)、t-SNE(t-Distributed Stochastic Neighbor Embedding)、线性判别分析(LDA)等。
- 异常检测:孤立森林(Isolation Forest)、一类支持向量机(One-Class SVM)等。
示例:
- 聚类:对顾客进行分群,以便理解不同顾客群体的行为特征。
- 降维:将高维数据(如图像数据)降到低维度,以便进行可视化或进一步分析。
总结
- 有监督学习:利用带标签的数据来训练模型,目标是预测或分类。
- 无监督学习:利用无标签的数据来发现数据中的模式或结构,目标是探索数据的内在特征。
理解这些区别可以帮助你选择合适的机器学习方法,根据任务的需求和数据的特性来应用相应的算法。