机器学习原理与实践38.35软妹币
注:23级为大作业50分+闭卷考试50分
代码部分
看两个相对完整的
线性回归
2-1
2-3
2-5
2-8
2-9
2-10
逻辑回归
其他随缘
课后题
一 引言
1 机器学习中的学习指什么?
计算机程序的性能在执行过程中随经验有所提高,则认为该程序从经验中学习。
2 ML的应用?
人脸识别,个性化的推荐系统,自动驾驶,智慧医疗,智能家居
3 为什么使用向量或矩阵(而非使用循环)进行运算,可以节省程序运行时间?
numpy中array与python数据类型的结构不同
使处理器并列执行各个元素成为可能,提高效率
4 机器学习与人工智能、深度学习之间有何联系?
机器学习是人工智能的一个分支,深度学习是机器学习中的一个部分。
5 什么是机器学习?
研究如何使用算法和统计模型使计算机具备从经验中学习和自动改进的能力,以实现对数据进行预测、分类或决策等任务。
二 监督学习
1.监督学习的特点?(标签的作用)
有标记数据:监督学习需要使用有标记的数据进行模型的训练和测试。
建立预测模型
标签的作用:
模型训练:提供已知输出,按照输入和输出的对应关系进行训练
模型评估:将预测结果与标签进行对比
反馈和优化:标签的反馈信息可以帮助模型进行优化和改进。
2. 监督学习的例子?
上课学习新知识,老师举例子是训练,同学回去做作业遇到类似的情况做出反应就是监督学习。
1 什么是监督学习?
ML方法,使用带有标签的数据集来训练模型。通过已知数据的输入和输出之间的关系来预测未知数据的输出。
2 什么是回归,举例说明?
监督学习方法,预测连续型变量的输出值。需要确定一个输入变量和输出变量的函数关系。例:预测房价,根据地段,楼层,平数等特征来预测房价。
3 写出线性回归过程的函数的关系式,并解释其中的各个变量
4 什么是凸函数?
定义域内任意两点之间的连线上的函数值不大于这些点对应的函数值之间的线性插值的函数。
5 什么是凸优化问题?
目标函数是一个凸函数的优化问题。具有很好的数学性质,可以使用高效算法来解决。支持向量机,逻辑回归等都可以被视为凸优化问题。
6 写出线性回归训练过程中的最优化问题
7 写出线性回归中的批梯度下降法
8 写出线性回归中的随机梯度下降法
9 写出线性回归中的小批梯度下降法
10 什么是特征缩放?为什么要进行特征缩放?
将不同特征的取值范围进行归一化的过程。因为不同特征可能具有不同的取值范围和单位,如果不进行特征缩放,可能会导致某些特征对模型的影响过大,从而影响模型的性能和收敛速度。
11 写出最小最大归一化和标准化特征缩放的公式
最小最大归一化(Min-Max Normalization)和标准化(Standardization)是常用的特征缩放方法:
最小最大归一化公式:x’ = (x - min(x)) / (max(x) - min(x))
标准化公式:x’ = (x - mean(x)) / std(x),其中mean(x)为均值,std(x)为标准差。
12 画出多输出线性回归模型的示意图
多输出线性回归模型的示意图如下:
13 什么是分类?它与回归有什么不同?
分类是一种机器学习任务,其目标是将数据集中的样本分为不同的类别。与回归不同,回归的目标是预测一个连续的数值输出。
14 写出simoid函数及其导数
sigmoid函数及其导数如下:
• sigmoid函数:
• sigmoid导数:
15 写出逻辑回归分类过程的计算公式
逻辑回归分类过程的计算公式如下:
• 预测值
• 其中,w是特征权重向量,b是偏置项,x是输入特征向量,sigmoid是激活函数。
16 写出逻辑回归中的交叉熵代价函数
• 交叉熵代价函数:
• 其中,m是样本数量,y是真实标签,y_hat是预测标签,log是自然对数。
17 什么是精度?什么是召回率?
精度是分类模型的一个性能指标,它表示正确预测的样本数占总样本数的比例。
召回率也是分类模型的一个性能指标,它表示所有真实正例中被正确预测为正例的样本数占真实正例总数的比例。
18 简述支持向量机进行分类的思路
支持向量机进行分类的思路是通过找到一个超平面来将数据集分为不同的类别。这个超平面是在特征空间中找到的,它可以最大化两个类别之间的间隔,从而提高分类器的泛化性能。
19 什么是过拟合?什么是欠拟合?
过拟合是指模型在训练数据上表现良好,但在测试数据上表现较差的现象。过拟合的原因可能是模型过于复杂,或者训练数据过少。欠拟合是指模型无法捕捉到数据中的规律,表现为模型在训练和测试数据上都表现较差的现象。欠拟合的原因可能是模型过于简单,或者特征选择不当。
Ernest_Haiの补充
为什么引入交叉熵?
引入交叉熵代价函数的主要原因是它在训练神经网络时具有以下几个优点:
可以解决梯度消失问题
对参数更新更加敏感:加速模型的训练过程
更适合分类问题
线性回归中损失函数的设计以及为什么使用均方误差?
MSE计算简单、光滑且可微分,易于优化求解。
使用均方误差作为损失函数,与最小二乘法的思想一致
对差异进行平方,大误差放大,小误差惩罚小。使模型更关注较大的误差,提高模型拟合能力。
线性回归的梯度下降法是怎样的(带偏导的那个);批梯度下降、随机梯度下降、小批梯度下降的优缺点
批梯度下降
- 优点:
- 迭代中矩阵计算,提高计算效率。
- 收敛到全局最优解。
- 缺点:
- 对于大型数据集,耗时长,训练慢
- 一次性将所有数据加载到内存中,对大型数据集有麻烦
随机梯度下降:
- 优点:
- 计算速度快,因为只需要计算单个样本的梯度。
- 处理大型数据集good,不需要将所有数据加载到内存中。
- 缺点:
- 更新方向可能会非常不稳定,因为它只考虑了单个样本的梯度,可能会导致目标函数在更新过程中出现大幅波动。
- 随机梯度下降的收敛速度可能会变得较慢,因为它不利用矩阵运算的优势。
小批梯度下降:
- 优点:
- 可以结合批梯度下降和随机梯度下降的优点,同时考虑多个样本的梯度,并且计算速度相对较快。
- 更好地平衡计算效率和收敛速度。
- 缺点:
- 需要手动指定批量大小,这可能需要进行一些实验来找到最佳的大小。
- 对于某些问题,可能需要更复杂的更新策略,例如动量或自适应学习率方法。
(2022 开卷)
证明线性回归中的均方误差代价函数是凸函数
在逻辑回归中为什么使用simoid函数?是否可以换成其他函数?为什么?如果可以换,给出一个具体的函数的例子, 并给出充分的理由
具有一些重要的性质,使其成为逻辑回归模型的理想选择。
Sigmoid 函数的定义如下:
σ(z) = 1 / (1 + e^(-z))
其中,z 是输入变量。
以下是为什么在逻辑回归中使用 sigmoid 函数的原因:
映射到概率:Sigmoid 函数将输入变量 z 映射到一个介于 0 和 1 之间的概率值。适合用于二分类,可以将输出解释为样本属于某一类的概率。>0.5 正类,<0.5 负类。
平滑性:连续可导的,并且具有平滑的 S 形曲线。这使得逻辑回归模型在参数估计和优化过程中更易处理。平滑性还有助于模型的稳定性和收敛性。
可以考虑使用其他函数。例如,当面对多类别分类问题时,可以使用 Softmax 函数作为激活函数。Softmax 函数可以将多个输入变量映射到一个概率分布上,使得每个类别的概率之和为 1。
Softmax 函数的定义如下:
softmax(z_i) = e^(z_i) / Σ(1到n)(e^(z_j))
其中,z_i 是输入变量的第 i 维。
Softmax 函数在多类别分类问题中提供了更好的表达能力和解释性,可以将输出解释为样本属于每个类别的概率。
请你谈一谈对k近邻的理解(包括k近邻分类的原理,如何使用k近邻进行分类,使用k近邻分类的注意事项,如何选取k值,k近邻进行分类的局限性和优劣性等方面)
k近邻(k-nearest neighbors,简称k-NN)是一种常用的非参数化监督学习算法,用于分类和回归问题。k近邻分类的原理是基于样本的特征空间中的距离度量,通过找到与待分类样本最近的k个邻居来进行分类。
以下是关于k近邻分类的一些重要概念和注意事项:
原理:k近邻分类的原理是基于邻居的投票决定。对于一个待分类样本,首先计算它与训练集中每个样本之间的距离,然后选择距离最近的k个样本作为邻居。最后,根据这k个邻居的标签进行投票,将待分类样本分配给得票最多的类别。
距离度量:在k近邻算法中,常用的距离度量方法包括欧氏距离、曼哈顿距离、闵可夫斯基距离等。选择合适的距离度量方法取决于数据的特征和问题的要求。
k值的选择:选择合适的k值对于k近邻分类的性能至关重要。较小的k值会使模型更加复杂和敏感,容易受到噪声的影响;较大的k值可能会导致模型过于简单,无法捕捉到数据中的细节。通常通过交叉验证或其他评估方法来选择最优的k值。
注意事项:
特征归一化:在应用k近邻算法之前,对特征进行归一化处理是很重要的,以确保不同特征之间的尺度差异不会影响距离度量的结果。
类别不平衡问题:当训练集中某个类别的样本数量明显多于其他类别时,可能会导致分类结果偏向于数量较多的类别。可以考虑采用加权投票的方式来解决这个问题。
决策边界不规则:k近邻算法对于决策边界不规则的情况表现良好,但在高维空间中可能会遇到维数灾难的问题,导致性能下降。
局限性和优劣性:
优势:k近邻算法简单易理解,不需要进行参数估计,适用于多类别分类问题,对异常值不敏感。
局限性:k近邻算法计算复杂度高,对于大规模数据集效率较低;对于高维数据,由于维度灾难的问题,可能会导致性能下降;对于不平衡数据集和噪声敏感。
总之,k近邻算法是一种简单而强大的分类算法,但在实际应用中需要根据具体问题选择合适的距离度量、调整k值,并注意数据预处理和问题特点,以获得更好的分类结果。
什么是泛化?
线性回归模型可以用于拟合具有线性关系的数据,它的基本形式是 y = w0 + w1x1 + w2x2 + … + wnxn + ε,其中y表示因变量,xi表示自变量,wi表示自变量的系数,ε表示误差项。除了常见的一元线性回归和多元线性回归,还有以下几种公式可以用线性回归模型来替代:
二次方程:y = w0 + w1x + w2x^2 + ε,其中x^2表示自变量的平方。
多项式回归:y = w0 + w1x + w2x^2 + … + wnx^n + ε,其中xn表示自变量的n次方。
对数函数:y = w0 + w1ln(x) + ε,其中ln(x)表示自变量的自然对数。
指数函数:y = w0 + w1e^(wx) + ε,其中e表示自然常数。
正弦函数:y = w0 + w1sin(x) + ε,其中sin(x)表示自变量的正弦函数。
需要注意的是,以上公式中的自变量仍然需要满足线性关系,即自变量与因变量之间存在线性关系,只是通过对自变量进行变换,使其能够用线性回归模型来拟合。此外,对于非线性关系的数据,可以考虑使用非线性回归模型来拟合。
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 生成一组x值
x = np.linspace(-10, 10, 100)
# 计算对应的y值
y = sigmoid(x)
# 绘制曲线
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('sigmoid(x)')
plt.title('Sigmoid Function')
plt.grid(True)
plt.show()