-
2021-07-27 06:22:01
在使用电脑的时候,有的时候因为工作需要或者是当前系统时间不准等情况下要自行设置下电脑系统下的时间,但是还有用户不是很了解在windows10系统中怎么去修改电脑时间和日期。今天小编就给大家介绍下载windows10中修改时间和日期的方法,一起来看看吧。
>>>windows10系统使用教程大全
windows10系统修改时间和日期方法介绍
方法一:设置中修改
第一步、点击最下角打开开始菜单,选择【设置】
第二步、在【设置】界面中找到【时间和语言】
第三步、在【时间和语言】选项中的【日期和时间】的右侧中找到【更改】选项,如果是灰色的,那么将上面的【自动设置时间】选项设置成关闭
第四步、点击【更改】,会显示【更改日期和时间】窗口,在里面进行设置,然后点击【确定】就可以了
方法二:控制面板修改
第一步、鼠标右击左下角windows图标,选择【控制面板】
第二步、在【控制面板】中将右上角查看方式设置成【大图标】,然后选择【日期和时间】
第三步、在【日期和时间】界面中点击【更改日期和时间】,然后再【日期和时间设置】界面中就可以更改i时间与日期了。
以上就是小编整理的关于windows10系统屏幕分辨率调整方法介绍的相关内容,想了解更多的相关资讯与攻略请关注游戏窝手游网。
更多相关内容 -
时间序列预测方法最全总结!
2021-03-12 00:15:38时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息,包括连续型预测(数值预测,范围估计)与离散型预测(事件预测)等,具有非常高的商业价值。需要明确一点的是,与回归分析预测模型...时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息,包括连续型预测(数值预测,范围估计)与离散型预测(事件预测)等,具有非常高的商业价值。
需要明确一点的是,与回归分析预测模型不同,时间序列模型依赖于数值在时间上的先后顺序,同样大小的值改变顺序后输入模型产生的结果是不同的。如之前的文章所介绍,时间序列可以分为平稳序列,即存在某种周期,季节性及趋势的方差和均值不随时间而变化的序列,和非平稳序列。如何对各种场景的时序数据做准确地预测,是一个非常值得研究的问题。
本文为大家总结时间序列预测的有关方法,浅析这些技术并探索如何可以提高这些方法的预测效果。
01
基本规则法
要预测一个时间序列,我们首先需要发现其变化的规律。最基本的方法,就是通过人工经验,挖掘时序数据的演化特征,找到时序变化的周期,从而预估时间序列的未来走势。具体的观察一个时间序列,当序列存在周期性时,提取时间序列的周期性特征进行预测。
图 | 抽取时序的周期进行拟合
02
传统参数法
之前我们介绍了时间序列的统计分析方法,该方法可以将时间序列的演化变为数学参数,天然的,我们可以通过拟合好的模型,进行时间序列的预测。
传统的参数预测方法可以分为两种,一种拟合标准时间序列的餐顺方法,包括移动平均,指数平均等;另一种是考虑多因素组合的参数方法,即AR,MA,ARMA等模型。这类方法比较适用于小规模,单变量的预测,比如某门店的销量预测等。总的来说,基于此类方法的建模步骤是:
首先需要对观测值序列进行平稳性检测,如果不平稳,则对其进行差分运算直到差分后的数据平稳; 在数据平稳后则对其进行白噪声检验,白噪声是指零均值常方差的随机平稳序列; 如果是平稳非白噪声序列就计算ACF(自相关系数)、PACF(偏自相关系数),进行ARMA等模型识别, 对已识别好的模型,确定模型参数,最后应用预测并进行误差分析。
这类方法一般是统计或者金融出身的人用的比较多,对统计学或者随机过程知识的要求比较高。而在数据挖掘的场景中比较难适用,因为需要大量的参数化建模。比如有一个连锁门店的销售数据,要预测每个门店的未来销量,用这类方法的话就需要对每个门店都建立模型, 这样就很难操作了。
03
时间序列分解
时间序列分解法是数年来一直非常有用的方法,一个时间序列往往是一下几类变化形式的叠加或耦合:
长期趋势(Secular trend, T):长期趋势指现象在较长时期内持续发展变化的一种趋向或状态。 季节变动(Seasonal Variation, S):季节波动是由于季节的变化引起的现象发展水平的规则变动 循环波动(Cyclical Variation, C):循环波动指以若干年为期限,不具严格规则的周期性连续变动 不规则波动(Irregular Variation, I): 不规则波动指由于众多偶然因素对时间序列造成的影响
图 | 原始时间序列
时间序列分解模型
// 加法模型
加法模型的形式如下:
加法模型中的四种成分之间是相互独立的,某种成分的变动并不影响其他成分的变动。各个成分都用绝对量表示,并且具有相同的量纲。
// 乘法模型
乘法模型的形式如下:
乘法模型中四种成分之间保持着相互依存的关系,一般而言,长期趋势用绝对量表示,具有和时间序列本身相同的量纲,其他成分则用相对量表示。
// 加乘混合模型
以上两种方式的混合
时间序列的长期趋势分析
图 | 拟合的时序趋势
// 移动平均法
在原时间序列内依次求连续若干期的平均数作为其某一期的趋势值,如此逐项递移求得一系列的移动平均数,形成一个平均数时间序列。
// 时间回归法
使用回归分析中的最小二乘法,以时间t或t的函数为自变量拟合趋势方程。常用的趋势方程如下:
一阶线性方程 二次(多次)方程曲线 指数曲线
时间序列季节变动分析
时间序列短期会受季节等短期因素影响,从而存在一些周期性
图 | 拟合的季节变动
// 乘法模型-季节指数
乘法模型中的季节成分通过季节指数来反映。常用的方法称为移动平均趋势剔除法。步骤如下:
计算一动平均值
从序列中剔除移动平均值
时间序列循环变动分析
时序长期来看会存在一个循环往复,通常通过剩余法来计算循环变动成分C:
如果有季节成分,计算季节指数,得到季节调整后的数据TCI 根据趋势方程从季节调整后的数据中消除长期趋势,得到序列CI 对消去季节成分和趋势值的序列CI进行移动平均以消除不规则波动,得到循环变动成分C
图 | 拟合的长期循环变动
时间序列不规则变动分析
除了以上三种变动信息,剩下的为不规律的时序变动信息。如有需要,可以进一步分解出不规则变动成分:
对于一个时间序列,剔除长期趋势,季节性,循环变动因素之后,剩下的就是不规则变动因素
图 | 拟合的不规则变动
Prophet
这里特别提一个Facebook 所服务化的时间序列预测工具,Prophet,具体可以参考官网说明。该方法类似于STL时序分解的思路,增加考虑节假日等信息对时序变化的影响。
04
机器学习
近年来时间序列预测方法,多采用机器学习方式。机器学习的方法,主要是构建样本数据集,采用“时间特征”到“样本值”的方式,通过有监督学习,学习特征与标签之前的关联关系,从而实现时间序列预测。常用的场景有:
// 单步预测
在时间序列预测中的标准做法是使用滞后的观测值
,作为输入变量来预测当前的时间的观测值
。这被称为单步单变量预测。
// 多步预测
另一种预测问题类型是使用过去的观测序列
来预测未来的观测序列
。这就是多步预测或序列预测。
// 多变量预测
另一个重要的时间序列称为多元时间序列,即每个时间有多个观测值:
这意味着我们通过不同的测量手段得到了多种观测值,并且希望预测其中的一个或几个值。例如,我们可能有两组时间序列观测值
,
,我们希望分析这组多元时间序列来预测
。
基于以上场景,许多监督学习的方法可以应用在时间序列的预测中,比如svm/xgboost/逻辑回归/回归树/...
05
深度学习
深度学习方法近年来逐渐替代机器学习方法,成为人工智能与数据分析的主流,对于时间序列的分析,有许多方法可以进行处理,包括:循环神经网络-LSTM模型/卷积神经网络/基于注意力机制的模型(seq2seq)/...
// 循环神经网络
循环神经网络(RNN)框架及其变种(LSTM/GRU/...)是为处理序列型而生的模型,天生的循环自回归的结构是对时间序列的很好的表示。所采用的方式也是监督学习,不过不需要人为的构建时序特征,可以通过深度学习网络拟合时序曲线,捕捉时间先后顺序关系,长期依赖,进行特征学习与预测。
// 卷积神经网络
传统的卷积神经网络(CNN)一般认为不太适合时序问题的建模,这主要由于其卷积核大小的限制,不能很好的抓取长时的依赖信息。但是最近也有很多的工作显示,特定的卷积神经网络结构也可以达到很好的效果,通常将时间序列转化为图像,再应用基于卷积神经网络的模型做分析。
Gramian Angular Field (格拉姆角场GAF)
将笛卡尔坐标系下的一维时间序列,转化为极坐标系表示,再使用三角函数生成GAF矩阵。计算过程:
数值缩放:将笛卡尔坐标系下的时间序列缩放到[0,1]或[-1,1]区间 极坐标转换:使用坐标变换公式,将笛卡尔坐标系序列转化为极坐标系时间序列 角度和/差的三角函数变换:若使用两角和的cos函数则得到GASF,若使用两角差的cos函数则得到GADF
Short Time Fourier Transform (短时傅里叶变换STFT)
在语音信号处理场景使用很广泛,其目标主要将时间序列转为时频图像,进而采用卷积网络进行特征分析。
// 时间卷积网络
时间卷积网络(TCN)是一种特殊的卷积神经网络,针对一维空间做卷积,迭代多层捕捉长期关系。具体的,对于上一层t时刻的值,只依赖于下一层t时刻及其之前的值。和传统的卷积神经网络的不同之处在于,TCN不能看到未来的数据,它是单向的结构,不是双向的。也就是说只有有了前面的因才有后面的果,是一种严格的时间约束模型,因此又被称为因果卷积。
// 基于注意力机制的模型
在RNN中分析时间序列需要我们一步步的顺序处理从 t-n 到 t 的所有信息,而当它们相距较远(n非常大)时RNN的效果常常较差,且由于其顺序性处理效率也较低。基于注意力机制(Attention)的模型,采用跳步的方式计算每个数值之间的两两关联,然后组合这些关联分数得到一个加权的表示。该表示通过前馈神经网络的学习,可以更好的考虑到时序的上下文的信息。
以上步骤如下动图所示:
// 结合CNN+RNN+Attention,作用各不相同互相配合
主要设计思想:
CNN捕捉短期局部依赖关系
RNN捕捉长期宏观依赖关系
Attention为重要时间段或变量加权
06
一些需要注意的难点
理解时间序列预测问题是要用历史数据预测未来数据
时间序列问题的训练集、测试集划分
特征工程方法及过程
如何转化为监督学习数据集
LSTM计算过程理解,包括输入输出维度、参数数量等
seq2seq过程的理解,decoder实现
attention注意力机制的原理及实现,包括encoder-decoder attention, self attention, multi-head attention等
时间卷积网络的含义,dilated-convolution 和 causal-convolution
prophet预测原理,各参数对模型拟合效果、泛化效果的影响
时间序列基本规则法中周期因子得计算过程
传统方法如周期因子、线性回归、ARMA等的预测结果表现为,预测趋势大致正确,但对波动预测不理想,体现在波动的幅度差异、相位偏移。
时间序列分解方法。理解加法模型和乘法模型,判断分解模型的选取及分解技巧。
// 工具
tslearn:开源的时间序列机器学习python工具包
tsfresh:开源的时间序列特征提取python工具包
pyts:开源的时间序列分类Python工具包。提供预处理工具及若干种时间序列分类算法
“整理不易,点赞三连↓
-
【时间序列】时间序列数据的缺失填补方法总结
2021-05-21 00:16:01在前几次分享中我们知道,很多时序算法都依赖完整的时序数据进行建模,许多业务也需要数据保持完整性,以更好地进行可视化与分析。然而在真实场景中,由于采集能力或网络传输的原因,时序数据常常会有缺...在前几次分享中我们知道,很多时序算法都依赖完整的时序数据进行建模,许多业务也需要数据保持完整性,以更好地进行可视化与分析。然而在真实场景中,由于采集能力或网络传输的原因,时序数据常常会有缺失、断点的情况。如何处理这些有缺失的时间序列呢?
图 | 两种不同类型的时序数据缺失
有关时间序列的补缺工作大体上分为:删除或填充这两类。删除所考虑的不是进行填补,而是将缺失值作为特征之一输入到时序模型,例如异常检测,行为分析等;而填充是找到时序变化的规律,将值补充进去,分为统计方式填充与机器学习填充两种方式。
本文就上面时序补缺的两大类方向整理相关工作,供大家阅读。
01
缺失数据删除
最直接的缺失数据处理的方式,就是直接忽略这些缺失值,简称为直接删除法,该方法常用在离散型的时间序列处理中,比如用户购物行为序列,事件序列等,这类序列数据没有固定的采集间隔,一般会把数据点之间的间隔时间作为特征进行分析。
图 | 融入时间间隔信息的LSTM: TLSTM[1] (KDD 2017)
比如上图所展示了TLSTM模型,来自KDD 2017年的工作,其将数据
与
之间的间隔
作为特征进行输入。TLSTM中专门设计了一种新的门结构对这种间隔信息进行加权聚合。
当然,该类方法可能会舍弃数据中的一些重要信息,在监控/IoT/风控等这种稳定性要求高的业务中,不能适用,因为每个数据点所代表的信息都很重要。
02
缺失数据填补
将缺失的数据删除一般只适用于少部分对数据完整度要求不高的场景,大部分场景(例如监控、安全等)需要我们尽可能将缺失的数据填充。数据填充需要我们找到时间序列一定的变化规律,从而将值补充进去。这里与时间序列的预测有一点相似,不同的是,时间序列预测中我们看不到所要预测点后面的数据,而时序补缺中,我们可以分析缺失点前后的数据,从而更精准的对缺失数据进行填充。
数据填充基本分为统计方式填充与机器学习填充两种方式。
统计方式填充
a
基于统计学的填充方法是时间序列补缺中常用的方法,其计算复杂度低,易操作,在许多精度要求不高的业务场景中比较适用。
就近填充
就近填充包括:前推法LOCF,用缺失之前的最后一次观测值填补;与后推法NOCB, 使用缺失值后面的观测值进行填补。这个方法是时序当中最基本的方法。
特征值填充
特征值填充包括:均值、中值、常用值等。这类方法计算快,进行简单的统计即可实现数据的填补。其一般直接忽略数据的时序信息,假定时序数据里面基本没有很强趋势性。
线性插值
这个方法历史悠久。其假定时序之间变动有很强的趋势,通过拟合数据的趋势变化,进而进行填补。早期天文学缺失数据都用这个方法。线性插补的方法包括一元线性回归,多元线性回归,岭回归等,有关方法可以参考之前的文章:《TS技术课堂 | 时间序列回归》
季节性+线性插值
经济数据或者季节波动数据,常常不符合简单的线性变化强假设。对这样的数据进行补缺,一般的线性插值法效果比较差。这里需要模型同时捕捉时序数据的季节性和总体趋势性,进而对数据的演变模式更好的拟合,实现缺失值数据的补充。
除了这些统计方法, 一般来说每个领域里面缺失值的填补还要借鉴专业知识来判断。比如以国家军费缺失数据为例,如果你知道因为战乱带来的缺失。那么战时数据比和平年代数据就更合适,很简单就近填补。
机器学习填充
b
随着计算能力的大幅提升,现今许多的场景下的时间序列补缺都采用了机器学习的方式,常见的方法包括基于最近邻方法(KNN),循环神经网络(RNN),随机森林和矩阵分解的缺失值填充算法。
有监督数据填充
这类的方法的本质是以缺失点附近的数据作为特征,预测缺失点的数据,通过海量的历史数据中挖掘相似的变化模型,从而进行更精准的数据填充。包括:
KNN:找到缺失点附近数据最相似的若干个历史数据点,对缺失值进行填补
RNN:通过循环神经网络拟合时序数据的变化趋势,对缺失数据进行填补。这里一般多使用双向RNN
随机森林:这里以缺失点附近的数据作为特征,缺失数据作为要预测的值,在海量数据中训练一个高拟合随机树,对缺失点进行预测。
时序生成:近些年随着生成对抗网络(GAN)的兴起,许多方法开始尝试做时间序列的生成,通过生成模型捕捉时间序列的分布特征,对时序数据进行再生成,进而填补数据。
多值插补
多值插补是近些年兴起的时序数据补缺方法,其主要应用于包括时空数据在内的多维时间序列问题。其补全数据不仅只关注自身的时序演变,同时关注相邻时序,特别是有影响关系的时序指标之间的影响。例如在交通中,某一路段的交通量与其上游、下游路段的交通量直接相关。这类方法依赖于缺失数据不同属性间关系,寻找最类似样本,对于突发情况下的数据丢失,异常数据点(离群点)的补全有更好的适应性。
矩阵分解:不同的时间序列之间往往相互关联,通过矩阵分解等方法学习时序矩阵的整体特征,对时间特性矩阵进行低秩逼近,从而修补缺失数据。该类方法计算复杂度低
, 可以处理较大规模的数据。
图 | 时序正则化矩阵分解: TRMF[2](NeurIPS 2016)
组合分析:不同学科的数据补缺可能都有默认或者建议的方法,比如社会学或者人口学对于无应答的问卷数据,就是假定用类似用户数据进行填补。很多的场景下的数据填补需要给出填补数据的合理性。面对这样的情况,矩阵分解这类方法难以给出直观的解释。因此,近年来一些方法考虑分析多源时序数据实体之间的外在属性,构建可解释的关联关系,组合多源时序及其关系进行数据的填补。
图 | 基于社群关系的电力系统时间序列补缺[3](WWW 2019)
上图所示的WWW 2019的工作,其基于用户的邻里关系,关联不同用户的用电数据,对缺失的数据进行填补。
03
开源工具
开源社区有许多优秀的项目可以帮助我们对缺失数据进行补全。这里简单为大家列举若干热门的项目:
https://sklearn.org/modules/generated/sklearn.preprocessing.Imputer.html
Sklearn实现了多种基于统计方法的缺失数据补全算法
https://github.com/amices/mice
该仓库实现了基于链式方程法的多维时序补缺算法
https://github.com/stekhoven/missForest
该仓库实现了基于随机森林的一种非参数混合类型补缺算法
https://github.com/cran/softImpute
该仓库实现了通过迭代软阈值SVD的完成矩阵进行补缺的算法
https://github.com/zjunet/STI
该仓库实现了基于社群关系进行多源时间序列补缺的算法
https://github.com/xinychen/transdim
该仓库实现了当前主流的基于矩阵分解的时间序列缺失值填充算法和预测算法
...
04
总结
时间序列数据的补缺有很多不同的方法。在进行补缺之前,第一步需要我们对缺失的性质做出判断:如果是Missing at Random还是Missing Not at Random,一般前者删除,后者填充。但是填充不一定能带来更好结果,要先自己根据缺失比例和原因进行判断。
再者,如果你对数据生成机制很熟悉的情况下,可能一些简单方法就可以实现很好的数据补缺。对于本身纯粹依赖算法,不能给出解释机制的时间序列补缺是不能完全信服的,因为缺失本身表明这些样本信息不足。这里常常需要增加专业知识的判断,因为专业知识判断就相当于额外增补信息。
参考
[1] Inci M. Baytas, Cao Xiao, Xi Zhang, Fei Wang, Anil K. Jain, and Jiayu Zhou. Patient Subtyping via Time-Aware LSTM Networks. KDD 2017.
[2] Yu, H. F., Rao, N., & Dhillon, I. S.Temporal regularized matrix factorization for high-dimensional time series prediction. NeurIPS 2016.
[3] Zongtao, L; Yang, Y; Wei, H; Zhongyi, T; Ning, L and Fei, W. How Do Your Neighbors Disclose Your Information: Social-Aware Time Series Imputation. WWW 2019
END
公众号:AI蜗牛车
保持谦逊、保持自律、保持进步
个人微信
备注:昵称+学校/公司+方向
如果没有备注不拉群!
拉你进AI蜗牛车交流群
-
时间序列的聚类方法
2019-05-30 14:36:13时间序列是按照时间排序的一组随机变量,它通常是在相等间隔的时间段内,依照给定的采样率,对某种潜在过程进行观测的结果。 时间序列数据是实值型的序列数据,具有数据量大、数据维度高以及数据是不断更新的等特点...时间序列的聚类方法
时间序列是按照时间排序的一组随机变量,它通常是在相等间隔的时间段内,依照给定的采样率,对某种潜在过程进行观测的结果。
时间序列数据是实值型的序列数据,具有数据量大、数据维度高以及数据是不断更新的等特点。
时间序列聚类方法的分类
什么是聚类?聚类是一种无监督学习方法,聚类就是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使类内差异最小,类间差异最大。传统的聚类方法针对静态数据,所谓静态数据就是其特征不随时间变化。
由于时间序列的特征包含随时间变化的值,所以不是静态数据。对于时间序列的聚类来说,有两种思路:
- 一种是修改现有的聚类方法以适用于时间序列
- 一种是将时间序列转换为静态数据,然后在使用现有的聚类方法
前一种思路直接作用于原始数据,称为基于原始数据的方法,难点在于要找到适用于时间序列的距离/相似性度量。
第二种思路首先将原始的时间序列数据转换为低维的特征向量或若干模型参数,称为基于特征的或基于模型的方法。
由于金融交易数据普遍存在信噪比低、非线性、非平稳、非正态的特点,因此直接利用原始数据进行聚类往往效果不好。所以后两种方法是研究的重点。这两种方法都是通过一定的方式将原始时间序列转化为静态的特征或模型参数,然后通过传统的静态数据的聚类方法进行聚类。
基于模型的方法认为相似的时间序列应该产生相似的模型,所以通过比较模型之间的相似性可以达到时间序列聚类的目的。困难在与模型选择和参数确定两个问题。常用的模型:
- ARMA模型
- HMM模型
- 马尔科夫链
基于特征提取的聚类主要应用于高维时间序列,特别是高频金融时间序列,经过特征提取后可有效降维。针对时间序列的数学特性。对时间序列进行特征提取,用提取的特征项对时间序列进行时间序列的重新描述,然后对重新描述的时间序列聚类。
时间序列聚类的步骤
- 数据简化
- 两个时间序列相似性的度量
- 时间序列聚类的通用算法
- 评估聚类结果的标准
数据简化
- DFT 离散傅里叶变换
- DWT 离散小波变换
- SVD 奇异值分解
- PLA 分段线性估计
- PAA 分段聚合近似
- SAX 符号化聚合近似
相似性/距离度量
-
欧氏距离、Minkovski距离
-
Pearson相关系数
-
DTW(Dynamic time warping)
在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。在这种情况下,使用传统的欧几里得距离无法有效求解两个时间序列之间的距离。
大部分情况下,两个序列整体上具有非常相似的形状,但是这些形状在x轴上并不是对齐的。DTW的思想是把两个时间序列进行wraping,使特征点对齐,直观上理解,就是warping一个序列后可以与另一个序列重合,来得到两个时间序列性的最短距离。
矩阵第(m, n)个元素即是序列P和Q的DTW距离。通常使用一种动态规划的方法来寻找DTW路径,算法的时间复杂度是O(mn),迭代式如下:
举例来说,给定一个样本序列X和比对序列Y:
- X:3,5,6,7,7,1; Y:3,6,6,7,8,1,1
X/Y距离矩阵
聚类方法
常用于时间序列的聚类算法可以划分为如下几类:
- 划分方法 例如k-means算法:是一种典型的划分聚类算法,它用一个聚类的中心来代表一个簇,即在迭代过程中选择的聚点不一定是聚类中的一个点,该算法只能处理数值型数据
- 层次方法 例如CRUE算法:采用抽样技术先对数据集D随机抽取样本,再采用分区技术对样本进行分区,然后对每个分区局部聚类,最后对局部聚类进行全局聚类
- 基于模型的方法 主要是指基于概率模型的方法和基于神经网络模型的方法,例如SOM神经网络
k-means算法,也被称为k-均值或k-平均。该算法首先随机地选择k个对象作为初始的k个簇的质心;然后对剩余的每个对象,计算其与各个质心的距离,将它赋给最近的簇,然后重新计算每个簇的质心;这个过程不断重复,直到准则函数收敛。通常采用的准则函数为平方误差和准则函数,即SSE(sum of the squared error),其定义如下:
S S E = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 2 SSE = \sum\limits_{i=1}^k\sum\limits_{x \in C_i} ||x-\mu_i||_2^2 SSE=i=1∑kx∈Ci∑∣∣x−μi∣∣22
k-means算法的具体步骤:输入是样本集 D = { x 1 , x 2 , . . . x m } D=\{x_1,x_2,...x_m\} D={x1,x2,...xm},聚类的簇数 k k k,最大迭代次数 N N N
输出是簇划分 C = { C 1 , C 2 , . . . C k } C=\{C_1,C_2,...C_k\} C={C1,C2,...Ck}
- 从数据集D中随机选择k个样本作为初始的k个质心向量: { μ 1 , μ 2 , . . . , μ k } \{\mu_1,\mu_2,...,\mu_k\} {μ1,μ2,...,μk}
- 对于
n
=
1
,
2
,
.
.
.
,
N
n=1,2,...,N
n=1,2,...,N
a) 将簇划分C初始化为 C t = ∅ t = 1 , 2... k C_t = \varnothing \;\; t =1,2...k Ct=∅t=1,2...k
b) 对于i=1,2…m,计算样本 x i x_i xi和各个质心向量 μ j ( j = 1 , 2 , . . . k ) \mu_j(j=1,2,...k) μj(j=1,2,...k)的距离: d i j = ∣ ∣ x i − μ j ∣ ∣ 2 2 d_{ij} = ||x_i - \mu_j||_2^2 dij=∣∣xi−μj∣∣22,将 x i x_i xi标记最小的为 d i j d_{ij} dij所对应的类别 λ i \lambda_i λi。此时更新 C λ i = C λ i ∪ { x i } C_{\lambda_i} = C_{\lambda_i} \cup \{x_i\} Cλi=Cλi∪{xi}
c) 对于j=1,2,…,k,对 C j C_j Cj中所有的样本点重新计算新的质心 μ j = 1 ∣ C j ∣ ∑ x ∈ C j x \mu_j = \frac{1}{|C_j|}\sum\limits_{x \in C_j}x μj=∣Cj∣1x∈Cj∑x
d) 如果所有的k个质心向量都没有发生变化,则转到步骤3) - 输出簇划分 C = { C 1 , C 2 , . . . C k } C=\{C_1,C_2,...C_k\} C={C1,C2,...Ck}
k-means算法的性能分析
主要优点:
- 是解决聚类问题的一种经典算法,简单、快速。
- 对处理大数据集,该算法是相对可伸缩和高效率的。
主要缺点:
- 必须事先给出k值,但很多时候并不知道数据集应该分为多少个类别才最合适。聚类结果对初值敏感,对于不同的初始值,可能会导致不同结果。
- 初始聚类中心的选择对聚类结果有较大的影响,一旦初始值选择的不好,可能无法得到有效的聚类结果。可以多设置一些不同的初值,对比最后的运算结果,一直到结果趋于稳定来解决这一问题,但比较耗时,浪费资源。
- 只能处理等长的时间序列
评估聚类结果的标准
一般来说,在没有数据标签的情况下,对提取的聚类进行评估并不容易,它仍然是一个开放的问题。聚类的定义取决于用户,领域,而且是主观的。 例如,簇的数量,簇的大小,异常值的定义以及问题中时间序列之间相似性的定义都是主观的。
-
有ground truth 将聚类结果与ground truth比较
Rand Index
Mutual Information
Cluster Similarity Measure (CSM)
Cluster purity
Jaccard Score
…… -
无ground truth 用于比较不同聚类方法得到的结果
SSE(均方误差):对每个时间序列来说,就是到最近的集群的距离
Silhouette Coefficient(轮廓系数)
……
参考
Clustering of time series data—a survey
Time-series clustering – A decade review
https://www.cnblogs.com/pinard/p/6164214.html
https://www.jianshu.com/p/7c2640973f01 -
电脑时间与网络时间不同步解决办法
2021-06-23 00:40:21该楼层疑似违规已被系统折叠隐藏此楼查看此楼电脑系统时间同步更新时提示“RPC服务器不可用”解决办法原因1:电脑本身的时间和网络时间相差太大原因2:windows time 服务没有开启或者运行不正常 重新开启它在对电脑... -
获取当前时间的几种方法整理(Java)
2021-03-01 08:17:28在java中有很多方法可以取到系统时间,记一下最简单的那种//使用Calendar 获取当前日期和时间Calendar calendar = Calendar.getInstance(); // get current instance of the calendar//转换格式 使用format将这个... -
两种常用MySql查询时间段的方法
2021-01-18 18:08:32MySql查询时间段的方法很多,下面就为您介绍几种最常用的MySql查询时间段方法,如果您在MySql查询时间段方面遇到过问题,不妨一看。MySql的时间字段有date、time、datetime、timestamp等,往往我们在存储数据的时候... -
时间序列预测的8种常用方法简介
2020-12-08 22:01:17时间序列预测8种常用方法简介,包括朴素预测法、简单平均法、移动平均法、简单指数平滑法、霍尔特(Holt)线性趋势法、Holt-Winter方法、AMRIA。 -
js中比较时间的方法
2019-01-06 00:28:01<script> function compare(date1,date2){ var oDate1 = new Date(date1); var oDate2 = new Date(date2); if(oDate1.getTime() > oDate2.getTime()){ alert('第一个... -
JAVA获取当前时间的三种方法
2021-12-20 23:03:46在Java中显示当前时间的三种方式,各有优缺点。 -
Java调试技巧 打印代码执行时间方法
2019-11-13 16:03:39在调试代码时,我们想知道代码的执行时间,废话不多说,上代码,毫秒级检测 // 放在要检测的代码段前,取开始前的时间戳 Long startTime = System.currentTimeMillis(); // 放在要检测的代码段前,取结束后... -
Python在输入时设置等待时间的一种方法
2019-04-14 14:08:05Python在输入时设置等待时间的一种方法 # -*- coding: utf-8 -*- """ @author: __spyder__ """ import time import msvcrt import os def getInput( timeout = 5): start_time = time.time() input = '' while ... -
Android 计算方法运行时间
2017-07-11 11:11:22常规计算方法运行时间在一些耗时的操作中,我们需要计算方法运行了多少时间,以便于我们分析代码。常规的方法主要是在方法(函数)执行前得到当前时间戳 startTime ,方法执行后再次取当前时间 endTime , 方法运行... -
springboot 框架计算每个方法执行时间,显示在日志中
2018-11-22 10:22:50logger.info("调用Service方法:{},参数:{},执行耗时:{}纳秒,耗时:{}毫秒", pjp.getSignature().toString(),Arrays.toString(pjp.getArgs()),(end-begin),(end-begin)/1000000); return obj; ... -
时间序列预测方法总结
2019-06-05 19:33:26这本来是我回答的一个问题:有什么好的模型可以做高精度的时间序列预测呢? - BINGO Hong的回答 - 知乎 https://www.zhihu.com/question/21229371/answer/533770345 但觉得在那个答案下一直更新好麻烦,干脆就移到... -
在一定时间内只让方法调用一次
2018-05-25 14:51:54需求:假如一个方法在1s内被调用了100次,现在想让这个方法,在一定时间内(假如 1s ),只调用一次,该方法调用的参数是100次调用中的最后一次的参数原理:利用List存储一定时间内的该方法的参数,使用定时器,在... -
电脑开机时间太长一招解决办法!
2021-07-29 06:33:02开机时间越来越长,怎么办呢?下面为大家讲解两种方法来提高开机速度!方法一:最简单粗暴最原始的方法,就是禁止开机启动项1、首先同时按下组合键Win(窗口键)+R,启动运行任务栏,然后在运行框输入msconfig,点击... -
Java 获取当前时间的前几分钟的时间点的方法
2018-10-08 23:52:25问题描述 有时候比如知道当前时间是 12:25:12, 先获取5分钟前的时间即分钟数-5为12:20:12 ...好在Java提供了这一时间处理方法 /* 导包 */ import java.text.SimpleDateFormat; import java.util.Ca... -
win7系统电脑无法同步时间的解决方法
2021-07-05 06:24:19win7系统电脑无法同步时间的解决方法方法一、修改同步服务地址双击系统托盘右侧的时间,在“Internet时间”下的“服务中”输入国家授时中心服务器的IP地址(210.72.145.44),然后单击“确定”即可。win7系统电脑无法... -
PCL 代码运行时间计算方法汇总
2021-05-10 19:37:38PCL中常用代码运行时间计算方法汇总 -
java指定时间执行某方法
2018-04-24 19:26:08ScheduledExecutorService,是基于线程池...需要注意,只有当调度任务来的时候,ScheduledExecutorService才会真正启动一个线程,其余时间ScheduledExecutorService都是处于轮询任务的状态。public static void main(St... -
Python 显示实时时间方法
2020-03-29 18:24:07Python 显示实时时间方法: print('时间:', time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) 输出: -
前端时间格式转时间戳的几种方法
2019-02-13 11:44:57前端时间格式转时间戳的几种方法 <script type="text/javascript"> var date=new Date(); console.log(date);//Wed Feb 13 2019 11:40:45 GMT+0800 (中国标准时间) // 1:不推荐... -
utc时间(utc时间转换北京时间)
2021-01-16 03:02:06原发布者:lndl116025 UTC时间与北京时间的关系世界的每个地区都有自己的本地时间,在Internet及无线电通信时,时间的统一非常重要!整个地球分为二十四时区,每.协调世界时,又称世界统一时间、世界标准时间、国际... -
小程序获取当前时间方法
2019-03-11 17:22:13注意:这种方法在js中,月份是以0开始的,所有要加1 第二种:微信小程序在建立时会自动封装好一个时间函数(不需要担心是以0为开始) 在需要的文件下引用它:var util = require('../../utils/util.js') ... -
远程连接提示:两台计算机无法在分配的时间内连接解决方法
2018-10-09 16:39:36远程连接提示:两台计算机无法在分配的时间内连接解决方法,在这个发生之前,火狐浏览器突然也不能上网了,其他浏览器都正常。解决后两个问题同时解决。 今天在使用远程桌面连接的时候发生了连接失败的问题,每次连接... -
ArrayList各方法的时间复杂度
2019-06-12 21:58:52add(E e)方法 添加元素到末尾,平均时间复杂度为O(1)。 add(int index, E element)方法 添加元素到指定位置,平均时间复杂度为O(n)。 get(int index)方法 获取指定索引位置的元素,时间复杂度为O(1)。 remove... -
时间复杂度和空间复杂度的计算方法
2019-03-25 16:17:16什么是算法 算法的定义是这样的:解题方案的准确而完善的描述,是一系列解决问题的清晰指令。...既然算法是解决问题的描述,那么就像一千个人眼中有一千个阿姆雷特他大姨夫一样,解决同一个问题的办法也是多种多样... -
网站响应时间过长的原因及解决方法
2020-09-25 15:07:49网站响应时间过长的原因及解决方法 -
由于连接方在一段时间没有正确答复或连接的解决办法
2019-07-15 16:47:56安装好之后的checkout项目,一直出错:“由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败”,解决办法可查看一下四点: svn项目配置文件问题: 解决方法:检查重新配置svn项目中的authz、...