第二十四周周报:文献阅读+监督学习之回归和分类

目录

摘要

Abstract

文献阅读:水文气候时间序列具有多时间尺度的特征

前提知识

多尺度

时间序列

研究背景

研究目的

研究方法

研究思路

文献贡献

Supervised Learning(监督学习)

回归问题

线性回归

线性回归数学原理

分类问题

逻辑回归

逻辑回归的理论推导

回归问题与分类问题的区别

Pytorch实现线性回归任务

总结


摘要

这周阅读了一篇关于水文的时间序列以及多时间尺度特征的论文,该文献提出了一种新颖而详细的,用以推进和丰富水文气候背景下的调查方法框架。我首先对文献中提出的时间序列以及多尺度等前提知识进行学习了解,然后从研究背景、目的、方法、思路等方面对文献进行分析理解。除了文献阅读之外,我这周继续学习机器学习,重新学习监督学习中的分类和回归问题,对这两种问题用到的线性回归和逻辑回归从数学理论方面进行学习。

Abstract

This week, I read a paper on the time series and multi time scale characteristics of hydrology, which proposes a novel and detailed framework for advancing and enriching investigation methods in the context of hydrology and climate. I first study and understand the prerequisite knowledge of time series and multi-scale proposed in the literature, and then analyze and understand the literature from aspects such as research background, purpose, methods, and ideas. In addition to literature reading, I continue to learn machine learning this week, relearning the classification and regression problems in supervised learning, and studying the linear regression and logistic regression used in these two problems from the perspective of mathematical theory.

文献阅读:水文气候时间序列具有多时间尺度的特征

title:Hydroclimatic time series features at multiple time scales

author:Georgia Papacharalampous , Hristos Tyralis , Yannis Markonis , Martin Hanel

time:2023       Journal Title:Journal of Hydrology     Volume number:Vol.618

前提知识

多尺度

所谓多尺度,实际就是对信号的不同粒度的采样。通常在不同的尺度下我们可以观察到不同的特征,从而完成不同的任务。粒度更小/更密集的采样可以看到更多的细节,粒度更大/更稀疏的采样可以看到整体的趋势。使用多尺度,就可以提取更全面的信息,既有全局的整体信息,又有局部的详细信息。

4e2592fc539847ec82b066cb30612cf7.png

例如对于一张水果图片,如果要完成的任务只是判断图中是否有前景,那么12×8的图像尺度就足够了。如果要完成的任务是识别图中的水果种类,那么64×48的尺度也能勉强完成。如果要完成的任务是后期合成该图像的景深,则需要更高分辨率的图像,比如640×480。从另一个角度来理解,在现实生活中,我们看图片或者电子地图,我们可以通过改变尺度来获取我们感兴趣的点。计算机也是这样,不过它需要用多尺度来认识以及寻找目标物体的最佳尺度。如果看整张图片,我们可以提取全局信息,而如果只需要关注局部信息,那就可以将其缩放与原图大小一致,再提取其特征,则是原图的某一局部区域的详细特征。

时间序列

同一统计指标数值按照时间先后顺序排列而成的数据。本质上是反映一个变量随时间序列变化的趋势。时间序列包含很多特征中包含诸多成分,有:

  • 趋势:指时间序列在较长一段时间内呈现出来的持续向上或者持续向下的变动;
  • 季节性:指时间序列在一年内重复出现的周期性波动,如气候条件、生产条件、节假日等;
  • 残差:也称为不规则波动,指除去趋势、季节性、周期性外的随机波动。不规则波动通常总是夹杂在时间序列中,致使时间序列产生一种波浪形或震荡式的变动。

时间序列可以分为平稳序列和非平稳序列两大类:

  • 平稳序列:序列中的各观察值基本上在某个固定的水平上波动,虽然在不同的时间段波动的程度不同,但并不存在某种规律,波动可以看成是随机的
  • 非平稳序列:包含趋势、季节性或周期性的序列,它可能只含有其中一种成分,也可能含有几种成分。

研究背景

在最近二十年中,由于计算机能力的提高和大型水文气候数据集的发布,水文气候时间序列特征得到了显著增强,这方面的研究也在加速进展,但这些研究大多集中在:单个时间序列特征(如季节性、趋势);单一时间序列类型(例如,温度、降水或流量);单一时间尺度(如日、月、季、年或气候)。而关注多个特征和时间序列类型的多尺度水文气候时间序列分析,以及相关的水文气候见解,这目前在文献中缺失。

通过调查和研究获得时间尺度(这些时间尺度通常分别被称为“日”,“月”和“季节”)的详细特征,并且已经确定了所检查的时间序列类型之间的各种相似性和差异性。此外,基于特征的聚类已被用于研究温度、降水和水流特征在被研究的大陆尺度区域和跨时间分辨率的空间变异性,并基于可解释的机器学习获得的结果讨论了使用各种特征评估水文气候相似性的重要性。据了解可知,基于多种特征的多时间分辨率聚类分析和关于聚类中特征相对重要性的跨尺度可解释机器学习探索都是研究水文气候相似性的新方法。

研究目的

提出了一种新颖而详细的方法框架,以推进和丰富水文气候背景下的此类调查。这一具体框架主要基于多尺度水文气候分析的新特征汇编,可以在时间依赖性、时间变化、“可预测性”、块度、稳定性、非线性(和线性)、趋势、尖峰、曲率和季节性等方面促进很大程度上可解释的特征调查和比较。

研究方法

通过计算来自美国连续511个地理位置的34年时间序列记录的9个时间分辨率(即1天、2天、3天、7天、0.5个月、1个月、2个月、3个月和6个月)和3种水文气候时间序列类型(即温度、降水和流量)的特征汇编的值,获得了多面特征。根据所获得的信息和知识,确定了所研究的时间序列类型在特征值随时间分辨率增加(或减少)的演变模式方面的异同。将计算的特征作为无监督随机森林的输入,用于检测所检查的水文气候时间序列之间的任何有意义的簇。这种聚类在该研究中发挥了说明作用,因为它有助于识别空间格局(与它们一起构成水文气候研究的重要科学目标)及其跨尺度比较。除此之外,应用可解释的机器学习来比较特征在不同时间分辨率下聚类时间序列中的有用性,这也对提出的方法框架内起着至关重要的作用,因为它们允许在不同的时间分辨率下解释水文气候的相似性。

研究思路

  1. 在考虑了该方面技术要求(即特征值不应依赖于时间序列长度和时间序列的量级,并且即使在水文学中出现的最大时间序列长度,其计算需求也应较低)之后,在平衡了单一时间分辨率下大样本调查对可解释性和特征重要性信息的需求之后,提出并彻底应用一种新颖而详细的方法框架来推进和丰富多尺度水文气候调查。
  2. 从多尺度时间序列分析的特点、多时间尺度的水文气候资料、特征计算与总结、聚类和空间探索等方面对调查的方法和数据进行分析。利用包括温度、降水和流量时间序列的大型水文气候数据集,使用新特征汇编进行多尺度水文气候调查。
  3. 从水文气候时间序列特征、空间水文气候格局及其特征重要性对研究的结果进行分析,证明了对于温度和降水时间序列,在很大程度上是可以预期的。并且随着季节模式变得更加具体,可预测性有望提高,以及证明空间水文气候模式的可靠性。
  4. 最后通过进一步的讨论得到结论,考虑到多尺度时间序列分析对加深我们对水文气候行为的感知的相关性具有重要作用,只有在尽可能多的时间尺度上研究了一个水文气候过程的行为,我们才能真正理解它,而所提出的特征汇编可以有效地支持水文随机模拟方法的评估。

文献贡献

提出了一种新的研究水文气候时间序列跨尺度特征的方法框架,并进行了全面的应用。编写了一个多时间尺度的多面自动水文气候时间序列分析特征汇编,该编译是所建议框架的核心,包括各种可解释的特征。

本文献在弥补多尺度水文气候方面,特别是关于之前缺失的特征和跨时间序列类型在其特征演变模式中随着时间分辨率的增加(或减少)而确定的相似性。考虑到了多尺度时间序列分析对提高我们对水文气候的理解的重大相关性,以及在评估时间序列模拟方法,特别是时间序列分解方法中的相同分析的实用性。除此之外,未来的研究可以将这项工作的调查扩展到其他时间分辨率和时间序列类型。它还可以计算本工作的特征,以评估各种时间序列分解方法。



Supervised Learning(监督学习)

监督学习就是学习输入、输出,也就是从输入到输出的映射。监督学习的数据集就是有标签的,这个数据集由“正确答案”组成,也就是是人们给机器一大堆标记好的数据,比如一大堆照片,标记住那些是猫的照片,那些是狗的照片,然后让机器自己学习归纳出算法或模型,然后所使用该算法或模型判断出其他照片是否是猫或狗。监督学习过程如下图流程所示。

5be383d0f2bc4cf1be8ba68979ade15f.png

监督学习问题的类型分为两种:回归问题和分类问题。

  • 对输入变量和输出变量均为连续变量的预测问题称为 回归问题。
  • 输出变量为有限个离散变量的预测问题称为 分类问题。

回归问题

回归问题,我们试着推测出一个连续值的结果,一般应用于预测等任务。回归的目的是为了找到最优拟合的曲线,这个曲线可以最好的接近数据集中的各个点。回归是对真实值的一种逼近预测,值不确定,当预测值与真实值相近时,误差较小时,认为这是一个好的回归。

线性回归

下图收集一些房价的数据:横轴表示房子的面积,单位是平方英尺,纵轴表示房价,单位是千美元。那基于这组数据,假如你有一个朋友,他有一套750平方英尺房子,现在他希望把房子卖掉,他想知道这房子能卖多少钱。机器学习算法可以在这组数据拟合一条直线,根据这条线我们可以推测出,这套房子可能卖$150,00(也可能拟合的是二次方程的曲线效果更好,因此算法不是唯一的)。在房价的例子中,我们给了一系列房子的数据,我们给定数据集中每个样本的正确价格,即它们实际的售价,然后运用学习算法,算出更多的正确答案。

5cbfc7cfcb7e42cbacb9238a3084b152.png

线性回归数学原理

线性回归模型

线性回归模型是用一条曲线拟合一个或多个自变量x与因变量y之间的关系。若曲线是一条直线,则为一元线性回归;若是超平面,则是多元线性回归。不管是一维还是多维,线性回归的预测函数的一般表达式为:

bf6c232fc77c4d89905ddd4036b2aaf0.png

最小二乘法

而在机器学习时,我们通常使用高维数据集,当我们输入d个特征的时候,将预测结果y记为:
eq?y%3Dwx+b(W为权重即成为向量的转置,x也是向量对应于单个样本的特征)。损失函数是用来判断一条拟合曲线的拟合效果,我们的目标就是最小化损失函数,所以要找到对于的权重参数使得损失函数最小。

efaf1ecfe23a48e99f08d6e51608caab.jpeg

矩阵求导

bd3812888e27489ab16b0741239f81c0.png

7beea6dfd6e64e5cb96c8f0cd075c6e0.jpeg

分类问题

分类问题是指给定输入变量(特征)和一个离散的输出变量(标签),建立一个函数来预测输出变量的类别。换句话说,分类问题的目标是预测一个离散的输出值,例如将一张图片分为猫和狗、预测一个电子邮件是垃圾邮件还是正常邮件等。分类问题通常使用分类算法,例如逻辑回归、支持向量机、决策树分类等。与回归问题中可能有无限种输出不同,分类问题的输出是有限的。

逻辑回归

逻辑回归是用来完成分类任务。逻辑回归虽然叫回归但它是分类算法

在下图这个数据集中,横轴表示肿瘤的大小,纵轴上标出 1 和 0 分别表示是或者不是恶性肿瘤。我们之前见过的肿瘤,如果是恶性则记为 1,不是恶性,或者说良性记为 0。有 5 个良性肿瘤样本,在 1 的位置有 5 个恶性肿瘤样本。现在有一个人检查出乳腺肿瘤。假设说她的肿瘤大概这么大,那么机器学习的问题就在于,你能否估算出肿瘤是恶性的或是良性的概率,这也就是一个分类问题。

75f4a1c1c7f740a49c7724eee1ecca45.png

分类指的是,我们试着推测出离散的输出值例如0和1,事实证明在分类问题 中,可能会有两个以上的可能输出类别。例如在判断癌症是恶性的时候可以输出癌症的类别,所以你希望预测离散输出 0、1、2。0 代表良性,1 表示第一类癌症,2 表示第 2 类癌症,这也是分类问题。

6dfdbee09cad4f16b234e8df4a5e0d8a.png

回归的不同之处在于分类预测的输出是有限集合,但输出并不一定是0或1,当我们预测一张图片是猫还是狗的时候,输出可以是cat或者dog。 

在这个例子中,我们知道病人的年龄和肿瘤的大小,良性用圈表示,恶性用叉表示。假设有一个人很不幸有一个瘤(粉色表示),在给定的数据集上,学习算法可以在数据上画出一条直线,设法将恶心肿瘤和良性肿瘤分开,观察粉点位置在是良性区域,预测良性肿瘤的概率大于恶性肿瘤的概率。

7a5bde983ffe4e0ca54de5375b3b65bb.png

逻辑回归的理论推导

例如二分类的问题,给出了,特征自变量X{x1,x2,……,xn}以及分类标签Y {0,1},现需要根据手头上有的特征eq?x来判别它应该是属于哪个类别,也就是对于分类标签的0还是1。将问题进行转化,也就是需要找到一个模型或者说是一个关于eq?x的函数,而这个函数的结果只有0和1两种。

通常求解回归问题的常规步骤为三步:

  1. 寻找预测函数eq?h_%7B%5Ctheta%20%7D%28x%29
  2. 构造损失函数eq?J%28%5CTheta%20%29
  3. 想办法使得eq?J%28%5CTheta%20%29函数最小并求得回归参数eq?%5CTheta

逻辑回归函数

如何将一个线性函数eq?y%3D%5Ctheta%20%5E%7BT%7DX的结果控制在(0,1)之间呢?通过sigmoid函数,将线性函数的结果eq?y%3D%5Ctheta%20%5E%7BT%7DX放入eq?g%28x%29%3D%5Cfrac%7B1%7D%7B1+e%5E%7B-x%7D%7D,可以将线性值转化为(0,1),就构造了逻辑回归函数eq?h_%7B%5Ctheta%20%7D%28x%29得到的这个结果类似一个概率值。

96a1ac2d189e460d8acf21fea9fd1403.png

损失函数

 我们称eq?J%28%5CTheta%20%29损失函数(loss function),也被称为代价函数(cost function)或平方误差函数(Squared error function):

743678432f7a4525a3d03bf49aa0ac6b.png

当我们只有一个输入特征eq?X_%7B1%7D时 ,也就只有参数 eq?%5CTheta%20_%7B0%7D 和 eq?%5CTheta%20_%7B1%7D,这时假设函数为eq?H_%7B%5CTheta%20%7D%28X%29%3D%5CTheta%20_%7B0%7D+%5CTheta%20_%7B1%7DX%5E%7B%281%29%7D,对应的损失函数eq?J%28%5CTheta%20%29eq?J%28%5CTheta%20%29%3D%28%5CTheta%20_%7B0%7D+%5CTheta%20_%7B1%7DX%5E%7B%281%29%7D-Y%5E%7B%281%29%7D%29%5E%7B2%7D。这里eq?X%5E%7B%281%29%7D 和 eq?Y%5E%7B%281%29%7D都是我们的输入数据,是已知的,也就是eq?J%28%5CTheta%20%29是一个关于eq?%5CTheta%20_%7B1%7D的一元二次方程,如果我们有两个输入特征或三个输入特征时,对应的损失函数的图像是三维、四维的,那么这样我们怎么样求出使eq?J%28%5CTheta%20%29最小的 gif.latex?%5CTheta值呢。

对于像这样的一般的线性回归以最小二乘法表示的损失函数是一个开口向上的一元二次函数,一般我们可以通过直接对损失函数求导,让导数等于0 求得最小值。但是对于有些回归方程的损失函数,我们无法通过解析的方法求出最小值(例如logistic回归的损失函数),所以我们需要使用梯度下降计算函数的最小值。

要解决二分类问题时,函数eq?h_%7B%5Ctheta%20%7D%28x%29的值有特殊的含义,它表示结果取1的概率,因此对于输入x分类结果为类别1和类别0的概率分别为:

eq?P%28y%3D1%7Cx%3B%5Ctheta%20%29%3Dh_%7B%5Ctheta%20%7D%28x%29

eq?P%28y%3D0%7Cx%3B%5Ctheta%20%29%3D1-h_%7B%5Ctheta%20%7D%28x%29

因为在二分类问题中,y要么取0要么取1,因此可以把两个类别进行整合,得到一个更直观的表达。eq?P%28y%7Cx%3B%5Ctheta%20%29%3D%28h_%7B%5Ctheta%20%7D%28x%29%29%5E%7By%7D%29%281-h_%7B%5Ctheta%20%7D%28x%29%29%5E%7B1-y%7D。此时P就是某个样本的概率值,我们只要最大化样本的概率就可以得到最好的分类模型了。

梯度下降法

梯度下降法(Gradient Descent)是一种常用的优化算法,用于最小化代价函数(Cost Function)或损失函数。在逻辑回归等机器学习模型中,梯度下降法常用于更新模型参数,以找到使代价函数最小化的权重和偏置。

1634264bcacd42f382a3d47aeecab250.png

梯度下降法的基本思想是通过迭代更新参数,沿着代价函数的负梯度方向移动,以逐步接近代价函数的最小值。具体而言,梯度下降法包括以下步骤:

  1. 初始化参数:将权重向量w和偏置b初始化为任意值。
  2. 计算梯度:对于每个参数,计算代价函数关于该参数的偏导数(梯度)。这可以使用链式法则来计算,根据代价函数的形式不同而有所不同。
  3.  更新参数:根据梯度的方向和学习率(learning rate),更新参数的值。学习率决定了每次参数更新的步长,较大的学习率可能导致无法收敛,而较小的学习率可能导致收敛速度过慢。
  4. 重复步骤2和3:重复计算梯度和更新参数的过程,直到达到停止条件。停止条件可以是达到一定的迭代次数,或者代价函数的变化小于某个阈值等。

回归问题与分类问题的区别

回归问题和分类问题的区别在于输出变量的类型。回归问题的输出变量是连续数值型,例如预测房价的问题,输出就是0到无穷之间的任意正数。而分类问题的输出变量是离散的也就是标称型,例如预测肿瘤类型,输出只有良性和恶性两种。在机器学习中,通常需要根据任务的要求选择合适的算法和评估指标来解决回归或分类问题。

Pytorch实现线性回归任务

1.构造数据

其中x和y都是三行一列的矩阵,也可以看作列向量,一个中括号放入一个数据,代表的就是一行。

x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[2.0], [4.0], [6.0]])

2.构造模型

class LinearModel(torch.nn.Module): #线性模型从Moudule继承而来
    #初始化
    def __init__(self):
        super(LinearModel, self).__init__()  #调用父类的初始化
        self.linear = torch.nn.Linear(1, 1)  #构造一个对象,包含权重和偏置
        #Linear的参数为,输入的维度(特征数量,不是样本数量)和输出的维度,以及是否有偏置(默认为True)
    #前馈过程中进行的计算
    def forward(self, x):  #这里实际上是一个override
        y_pred = self.linear(x)  #在这里计算w * x + b 线性模型
        return y_pred

model = LinearModel()   #这里的model是callable可调用的 调用方法为:model(x)

3.构造损失函数和优化器

criterion = torch.nn.MSELoss(size_average=False) #是否要求均值
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
#优化器不会构建计算图, 在这里需要告诉优化器对那些Tensor进行梯度下降
#model.parameters()函数会检查模型中的成员变量,将成员变量里相应的权重加入训练的结果中

4.更新梯度

线性模型eq?y%3Dw*x+b为仿射函数,需要确定x和y的维度,即可确定w的维度。将计算得到的y放入loss函数,并对得到的loss进行反向传播。若计算得到的loss为一个向量,需要将其转化为标量,做法为:将所有loss求和取平均值(也可以只加和不求均值)。

for epoch in range(100):
    y_pred = model(x_data)
    loss = criterion(y_pred, y_data)
    print(epoch, loss)

    optimizer.zero_grad()   #梯度归零
    loss.backward()
    optimizer.step()  #根据梯度和预先设置的学习率自动更新

5.输出和测试

#输出权重和偏置
print('w = ', model.linear.weight.item())
#weight是一个矩阵,需要显示数值用item()
print('b = ', model.linear.bias.item())

#测试
x_test =torch.Tensor([[4.0]])   #(1, 1)矩阵
y_test = model(x_test)
print('y_pred = ', y_test.data) #(1, 1)矩阵

测试结果

0d912002e2af4c4583239b3f8a6755e3.png

总结

这周通过阅读水文方向的时间序列问题的论文,认识到机器学习方法在水文方面的应用,以及多尺度时间序列特征对于预测方法的重要作用。对于之前学习的机器学习内容已经不是很熟悉了,这周开始对机器学习进行二次学习,按照监督学习和无监督学习两个大类学习,下周将继续学习监督学习中的其他模型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值