过拟合

双向LSTM在时间序列异常值检测的应用

别等时光非礼了梦想. 提交于 2020-04-20 01:41:31
最近在做时间序列异常值检测,除了常规的统计学算法以外,也想尝试通过机器学习或深度学习的方式去解决问题。   于是想,可不可以直接使用一个拟合效果非常棒的模型先去预测该时间序列的未来走势,再将预测后的值(predict_value)当前值(value)做对比,只要超过一定阈值就判定该值为异常值。   尝试了xgboost、ARIMA 和 LSTM 三者中,拟合效果最好的是LSTM,简单记录一下建模和调参过程。   1.加载数据:源数据结构如下,只要 y 值。          2.加载数据,由于我这里代表时间的字段是从piontStart里面拿出去,并且需要去掉最后'000'再用time.localtime()转换成时间戳,不是重点,简单看一下就行。       3.准备训练和测试数据         4.建模阶段                5.训练阶段            这里有我之前调参时的Train_Score 和 Test_Score 对比记录                   可以看到,使用双层结构的 LSTM 有非常严重的过拟合现象发生,单层LSTM已经可以很好的对时间序列进行拟合       batch_size 的大小也会对模型的收敛产生不小的影响 look_back(即 time_step) 的大小会对过拟合的程度造成很大影响,如果步长取的太短也会造成过拟合

双向LSTM在时间序列异常值检测的应用

随声附和 提交于 2020-04-20 00:36:21
最近在做时间序列异常值检测,除了常规的统计学算法以外,也想尝试通过机器学习或深度学习的方式去解决问题。   于是想,可不可以直接使用一个拟合效果非常棒的模型先去预测该时间序列的未来走势,再将预测后的值(predict_value)当前值(value)做对比,只要超过一定阈值就判定该值为异常值。   尝试了xgboost、ARIMA 和 LSTM 三者中,拟合效果最好的是LSTM,简单记录一下建模和调参过程。   1.加载数据:源数据结构如下,只要 y 值。          2.加载数据,由于我这里代表时间的字段是从piontStart里面拿出去,并且需要去掉最后'000'再用time.localtime()转换成时间戳,不是重点,简单看一下就行。       3.准备训练和测试数据         4.建模阶段                5.训练阶段            这里有我之前调参时的Train_Score 和 Test_Score 对比记录                   可以看到,使用双层结构的 LSTM 有非常严重的过拟合现象发生,单层LSTM已经可以很好的对时间序列进行拟合       batch_size 的大小也会对模型的收敛产生不小的影响 look_back(即 time_step) 的大小会对过拟合的程度造成很大影响,如果步长取的太短也会造成过拟合

数据挖掘比赛/项目全流程介绍

梦想的初衷 提交于 2020-04-19 11:56:54
【说在前面】本人博客新手一枚,象牙塔的老白,职业场的小白。以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] 1. 数据预处理 1.1 选择数据样本(企业级应用) 例如客观选择某一时间段内的所有样本集合等(避免人为主观选择) 例如在评价样本中去除恶意/随意评价样本等(避免错误样本的干扰) 1.2 可视化特征分布 dataframe.info/dataframe.describe等(查看数据样本的整体分布情况) dataframe.plot/matplotlib/seaborn等(包括柱状图/散点图/折线图等) 1.3 缺失值处理 如果某样本的缺失记录占比较大: 可统计为“缺失量” 可直接删除该样本 如果某特征的缺失记录占比较大: 可二值化为“有/无” 可直接删除该样本 如果某样本/特征的缺失记录占比较小: 可根据领域知识补全 数值型:可根据均值/众数/模型预测等补全 类别型:可以定义为新的类别等 可不处理,有些模型对缺失值不敏感:例如树模型/神经网络等 1.4 异常值处理 异常值判定:需根据数据分布/业务场景等 RobustScaler/robust_scale等 之后会推出异常值检测专题 可直接删除该样本 可采用缺失值的处理方式 注意数据不一致问题 注意数值型可用盖帽/对数变换等压缩 可不处理,有些模型对异常值不敏感:例如KNN/随机森林等 2. 特征工程 2.1

计算机视觉面试考点(7)Batch Normalization

好久不见. 提交于 2020-04-18 19:35:43
计算机视觉工程师在面试过程中主要考察三个内容:图像处理、机器学习、深度学习。然而,各类资料纷繁复杂,或是简单的知识点罗列,或是有着详细数学推导令人望而生畏的大部头。为了督促自己学习,也为了方便后人,决心将常考必会的知识点以通俗易懂的方式设立专栏进行讲解,努力做到长期更新。此专栏不求甚解,只追求应付一般面试。希望该专栏羽翼渐丰之日,可以为大家免去寻找资料的劳累。每篇介绍一个知识点,没有先后顺序。想了解什么知识点可以私信或者评论,如果重要而且恰巧我也能学会,会尽快更新。最后,每一个知识点我会参考很多资料。考虑到简洁性,就不引用了。如有冒犯之处,联系我进行删除或者补加引用。在此先提前致歉了! Batch Normalization 神经网络中的一个层,被称为BN层 原理 训练网络的时候要对数据进行归一化 原因:使输入数据的分布是相同的 分布不相同的话,举个例子: 同样的图像内容,网络对暗一点的和亮一点的图像的理解也就不同了 以上做法只考虑了网络的输入,没有考虑网络中每一层的输入 BN层就是对每一层的分布进行调整 对每一层分布归一化的好处: 加快训练速度。对于每一个神经元来说,每次的分布都类似,那么神经元不用总是大幅度调整去适应不同的输入分布。也就是加快了网络训练速度。 缓解梯度消失。经过BN层的数据会大概率落在sigmoid激活函数导数较大的区域,缓解了梯度消失。 缓解过拟合

机器学习及flinkML算法学习

走远了吗. 提交于 2020-04-18 17:48:24
参考文章: 机器学习及flinkML算法学习 基于Flink流处理的动态实时亿级全端用户画像系统 机器学习概念 机器学习算法根据训练数据(training data)使得表示算法行为的数学目标最大化,并以此来进行预测或者做出决定。机器学习分为分类、回归、聚类等,每种都有不一样的目标。 应用场景和处理流程 所有的算法都需要定义每个数据点的特征(feature)集->输入; 正确的定义特征才是机器学习中最有挑战的部分。 大多数算法都是专为数据特征(就是一个代表各个特征值的数字向量)定义的,因此提取特征并转化为特征向量是机器学习过程中重要的一步。 输入数据分为“训练集”和“测试集”,并且只使用前者进行训练,这样就可以用后者来检验模型是否过度拟合了训练数据。 机器学习流水线会训练出多个不同版本的模型,然后分别对其进行评估。Ml提供几个算法进行模型评估。 常见的算法 分类算法 基于已经被标注的其他数据点作为例子来识别一个数据点属于几个类别中的哪一种;比如判断一封邮件是否为垃圾邮件。 垃圾邮件分类做法: HashingTF 文本数据构建词频特征向量 LogisticRegressionWithSGD 使用随机梯度下降法实现逻辑回归。 监督学习 SVM使用通信高效的分布式双坐标上升(CoCoA) 多元线性回归 优化框架 L-BFGS Generalized Linear Models

11种离散型变量编码方式及效果对比

早过忘川 提交于 2020-04-18 13:34:22
首先介绍一个关于离散型编码的Python库,里面封装了十几种(包括文中的所有方法)对于离散型特征的编码方法,接口接近于Sklearn通用接口,非常实用。下面是这个库的链接: Category Encoders 1. Label Encoder / Ordered Encoder 这个编码方式非常容易理解,就是把所有的相同类别的特征编码成同一个值,例如女=0,男=1,狗狗=2,所以最后编码的特征值是在[0, n-1]之间的整数。 这个编码的缺点在于它随机的给特征排序了,会给这个特征增加不存在的顺序关系,也就是增加了噪声。假设预测的目标是购买力,那么真实Label的排序显然是 女 > 狗狗 > 男,与我们编码后特征的顺序不存在相关性。 2. OneHot Encoder / Dummy Encoder / OHE 大家熟知的OneHot方法就避免了对特征排序的缺点。对于一列有N种取值的特征,Onehot方法会创建出对应的N列特征,其中每列代表该样本是否为该特征的某一种取值。因为生成的每一列有值的都是1,所以这个方法起名为Onehot特征。Dummy特征也是一样,只是少了一列,因为第N列可以看做是前N-1列的线性组合。但是在离散特征的特征值过多的时候不宜使用,因为会导致生成特征的数量太多且过于稀疏。 3. Sum Encoder (Deviation Encoder, Effect

ICLR2020|告别死记硬背,元学习才能学会学习

点点圈 提交于 2020-04-17 20:01:17
      作者 | 殷明章    编辑 | 丛末   本文介绍的是 ICLR 2020 spotlight 论文《Meta-Learning without Memorization》(无记忆的元学习),来自德克萨斯大学奥斯汀分校在读博士生殷明章。      论文: https://openreview.net/pdf?id=BklEFpEYwS   代码: https://github.com/google-research/google-research/tree/master/meta_learning_without_memorization   让我们回顾片刻在学校学习的经历。每一天我们去上课,回答老师的问题;回家后我们解答作业问题,对照答案检查正确与否。日积月累,我们不仅学到了知识,更学会了如何学习 (learning to learn)。当面对新任务时,我们可以利用之前解决问题的经验并加上少量的练习,迅速学会新的技能。这种 “快速适应 (fast adaptation)” 能力被认为是智能的重要体现。在人工智能领域,元学习 (meta-learning) 是一种使机器 “学会学习” 的有效手段。   在这篇论文里,我们发现一个表征能力强大的人工神经网络除了 “快速适应” 外,还可以通过 “记忆” 的方式来解决训练集里的多项任务。不幸的是

周志华:Boosting学习理论的探索——一个跨越30年的故事

谁说我不能喝 提交于 2020-04-17 19:57:25
      作者 | 周志华    编辑 | 丛末   本文作者为机器学习专家、南京大学人工智能学院院长周志华教授,他在这篇文章中尝试用通俗故事的方式讲述一个机器学习理论中重要问题的探索历程。读者或能从中感受到机器学习理论探索的曲折艰辛,体会到理论进展对算法设计的指引意义。    1    溯源   1989年,哈佛大学的莱斯利·维利昂特(Leslie Valiant,计算学习理论奠基人、2010年ACM图灵奖得主)和他的学生迈克尔·肯斯(Michael Kearns,后来担任贝尔实验室人工智能研究部主任)提出了一个公开问题:“弱可学习性是否等价于强可学习性?”   这个问题大致上是说:如果一个机器学习任务存在着比“随机猜测”略好一点的“弱学习算法”,那么是否就必然存在着准确率任意高(与该问题的理论上限任意接近)的“强学习算法”?   直觉上这个问题的答案大概是“否定”的,因为我们在现实任务中通常很容易找到比随机猜测稍好一点的算法(比方说准确率达到51%)、却很难找到准确率很高的算法(比方说达到95%)。   出人意料的是,1990年,麻省理工学院的罗伯特·夏柏尔(Robert Schapire)在著名期刊Machine Learning上发表论文,证明这个问题的答案是“YES”!更令人惊讶的是,他的证明是构造性的!   也就是说,夏柏尔给出了一个过程

文本分类模型第三弹:BoW(Bag of Words) + TF-IDF + LightGBM

青春壹個敷衍的年華 提交于 2020-04-15 09:35:52
【推荐阅读】微服务还能火多久?>>> 一、前言 本文是文本分类模型的第三弹,利用词袋模型(BoW),词频逆文档频率(TF-IDF)与 LightGBM 模型进行文本分类。 原本计划的第三弹内容为 TextCNN 网络,介于最近刚刚利用 LightGBM 完成了一个简单的文本分类的任务,就趁热记录一下,作为第三弹的内容。 这里是文本分类系列: 文本分类模型第一弹:关于Fasttext,看这一篇就够了 文本分类模型第二弹:HAN(Hierarchy Attention Network) 文本分类模型第三弹:BoW(Bag of Words) + TF-IDF + LightGBM 二、相关论文及理论 1.LightGBM 这里是 LightGBM 提出的论文《 LightGBM: A Highly Efficient Gradient Boosting Decision Tree 》,LightGBM 本质上也是 梯度提升树(GBDT)的优化模型,GBDT 的本质是回归树模型,在做分类任务时,通过“回归相应类别”的概率值,来曲线完成分类任务。LightGBM 与上一代 kaggle 神器 Xgboost 相比,由于采用了直方图算法(用于特征处理),和 Leaf-wise 的树分裂方法(用于模型构建),模型准确度更高,训练耗时更低。其不仅应用于传统的机器学习回归及二分类,多分类任务,在

[一起面试AI]NO.5过拟合、欠拟合与正则化是什么?

坚强是说给别人听的谎言 提交于 2020-04-14 13:27:09
【推荐阅读】微服务还能火多久?>>> Q1 过拟合与欠拟合的区别是什么,什么是正则化 欠拟合指的是模型不能够再训练集上获得足够低的 「 训练误差 」 ,往往由于特征维度过少,导致拟合的函数无法满足训练集,导致误差较大。 过拟合指的是模型训练误差与测试误差之间差距过大;具体来说就是模型在训练集上训练过度,导致泛化能力过差。 「 所有为了减少测试误差的策略统称为正则化方法 」 ,不过代价可能是增大训练误差。 Q2 解决欠拟合的方法有哪些 降低欠拟合风险主要有以下3类方法。 加入新的特征,对于深度学习来讲就可以利用因子分解机、子编码器等。 增加模型复杂度,对于线性模型来说可以增加高次项,对于深度学习来讲可以增加网络层数、神经元个数。 减小正则化项的系数,从而提高模型的学习能力。 Q3 防止过拟合的方法主要有哪些 「 1.正则化 」 正则化包含L 1 正则化、L 2 正则化、混合L 1 与L 2 正则化。 「 L 1 正则化 」 目的是减少参数的绝对值总和,定义为: 「 L 2 正则化 」 目的是减少参数平方的总和,定义为: **混合L 1 与L 2 **正则化是希望能够调节L 1 正则化与L 2 正则化,定义为: 因为最优的参数值很大概率出现在 「 坐标轴 」 上,这样就会导致某一维的权重为0,产生 「 稀疏权重矩阵 」 。而L 2 正则化的最优的参数值很小概率出现在坐标轴上