三星fold2大屏漏夜能用住嘛?

使用XGB Regressor Fit建模训练,本文以实践为主,原理略过,重点看代码和参数,欢迎读者反馈指导。

回顾需求,工控案例简述

由于各个工控系统分散独立控制各自设备,
其数据采集自采自用,与早期政企信息化建设原理一样,形成了大量信息孤岛,但是,存在较大差别是工控往往是实时系统,虽然产生了大量数据,同时也存在各个工控系统的时钟不一致的现象。为了解决数据相关需求,需要尽量模拟统一时钟的数据,因此,拟采用XGBoost线性回归模型预测某时刻的重要数据。

例如监控某罐体设备液位变换,每10分钟测量罐内液体容量(液位),以此回归预测某时刻,也就是可能不在正常工作测量的时刻,从取液业务时估算某时刻液位,从整体上来说,相当于解决数据缺失问题。

通过此预测,可以相互验证罐体是否漏夜等安全报警信息,从另一个角度报警。

值得注意的区别列表包括:

  • xgboost.train进行持续训练,不仅允许eval函数的最小化,还允许最大化。

机器学习模型被互联网行业广泛应用,一般做机器学习应用的时候大部分时间是花费在特征处理上,其中很关键的一步就是对特征数据进行归一化,为什么要归一化呢?维基百科给出的解释:

  • 归一化后加快了梯度下降求最优解的速度;
    如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。
  • 归一化有可能提高精度;
    一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

哪些机器学习算法不需要(需要)做归一化?

概率模型(树形模型)不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。而像Adaboost、SVM、LR、Knn、KMeans之类的最优化问题就需要归一化。

StandardScaler原理作用:去均值和方差归一化。且是针对每一个特征维度来做的,而不是针对样本。

标准差标准化(standardScale)使得经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:

其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

对于RandomForest和XGBoost来说,是否进行归一化对结果影响不大。这也是树模型的一大特征。

由于存在时间先后的问题,对于存在时间特性的分类或者回归问题不能简单的使用StratifiekdKFold或者KFold进行交叉验证,更不能shuffle,会带来一定的时序特征交叉的问题。

TimeSeriesSplit是k-fold的一个变体,它首先返回k折作为训练数据集,并且 (k+1) 折作为测试数据集。请注意,与标准的交叉验证方法不同,连续的训练集是超越前者的超集。另外,它将所有的剩余数据添加到第一个训练分区,它总是用来训练模型。这个类可以用来交叉验证以固定时间间隔观察到的时间序列数据样本。

  • n_splits:int,默认值= 5,表示分割的数目。 必须至少为2。在版本0.22中n_splits的默认值从3更改为5(0.21版中默认值是3。
  • max_train_size:int,可选,表示单个训练集的最大大小。

3.2. 关于交叉验证与时序问题

在机器学习建模过程中,通行的做法通常是将数据分为训练集和测试集。测试集是与训练独立的数据,完全不参与训练,用于最终模型的评估。在训练过程中,经常会出现过拟合的问题,就是模型可以很好的匹配训练数据,却不能很好在预测训练集外的数据。如果此时就使用测试数据来调整模型参数,就相当于在训练时已知部分测试数据的信息,会影响最终评估结果的准确性。通常的做法是在训练数据再中分出一部分做为验证(Validation)数据,用来评估模型的训练效果。

验证数据取自训练数据,但不参与训练,这样可以相对客观的评估模型对于训练集之外数据的匹配程度。模型在验证数据中的评估常用的是交叉验证,又称循环验证。它将原始数据分成K组(K-Fold),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型。这K个模型分别在验证集中评估结果,最后的误差MSE(Mean Squared Error)加和平均就得到交叉验证误差。交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现,可以做为模型优化的指标使用。

平均绝对百分比误差,以及奇异点绘图效果如下:
从图中,我们可以看到数据呈周期形式波动。

如果数据总量较小时,其他方法无法继续提升性能,可以尝试K-Fold。其他情况就不太建议了,例如数据量很大,就没必要更多训练数据,同时训练成本也要扩大K倍(主要指的训练时间)。


 
 
 
 
 
 
 
 
 
 
 

通过训练分析,得出特征重要程度。
上图采用XGBoost 回归分析得到,与预估理论分析比较接近。

对于graphviz,也简单pip install graphviz后,虽然不会报错,但是在调用plot_tree时会报错。解决方案如下:graphviz需要先下载一个windows版本的安装包,下载地址如下。然后在命令行中输入以下代码将下载的graphviz添加到系统环境变量中即可。
然后下载graphviz这个软件,直接下载镜像文件安装就好,要记得安装路径,并将路径添加到系统path中;

违法和不良信息举报电话: 举报邮箱:

京网文【2017】号 互联网新闻信息服务许可编号:

互联网药品信息服务(京)-经营性- 京教研[2002]7号 电信业务审批[2001]字第379号

增值电信业务经营许可证B1.B2- 电信与信息服务业务许可编号:

广播电视节目制作经营许可证(京)字第828号 甲测资字1100078

使用XGB Regressor Fit建模训练,本文以实践为主,原理略过,重点看代码和参数,欢迎读者反馈指导。

回顾需求,工控案例简述

由于各个工控系统分散独立控制各自设备,
其数据采集自采自用,与早期政企信息化建设原理一样,形成了大量信息孤岛,但是,存在较大差别是工控往往是实时系统,虽然产生了大量数据,同时也存在各个工控系统的时钟不一致的现象。为了解决数据相关需求,需要尽量模拟统一时钟的数据,因此,拟采用XGBoost线性回归模型预测某时刻的重要数据。

例如监控某罐体设备液位变换,每10分钟测量罐内液体容量(液位),以此回归预测某时刻,也就是可能不在正常工作测量的时刻,从取液业务时估算某时刻液位,从整体上来说,相当于解决数据缺失问题。

通过此预测,可以相互验证罐体是否漏夜等安全报警信息,从另一个角度报警。

值得注意的区别列表包括:

  • xgboost.train进行持续训练,不仅允许eval函数的最小化,还允许最大化。

机器学习模型被互联网行业广泛应用,一般做机器学习应用的时候大部分时间是花费在特征处理上,其中很关键的一步就是对特征数据进行归一化,为什么要归一化呢?维基百科给出的解释:

  • 归一化后加快了梯度下降求最优解的速度;
    如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。
  • 归一化有可能提高精度;
    一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

哪些机器学习算法不需要(需要)做归一化?

概率模型(树形模型)不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。而像Adaboost、SVM、LR、Knn、KMeans之类的最优化问题就需要归一化。

StandardScaler原理作用:去均值和方差归一化。且是针对每一个特征维度来做的,而不是针对样本。

标准差标准化(standardScale)使得经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:

其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

对于RandomForest和XGBoost来说,是否进行归一化对结果影响不大。这也是树模型的一大特征。

由于存在时间先后的问题,对于存在时间特性的分类或者回归问题不能简单的使用StratifiekdKFold或者KFold进行交叉验证,更不能shuffle,会带来一定的时序特征交叉的问题。

TimeSeriesSplit是k-fold的一个变体,它首先返回k折作为训练数据集,并且 (k+1) 折作为测试数据集。请注意,与标准的交叉验证方法不同,连续的训练集是超越前者的超集。另外,它将所有的剩余数据添加到第一个训练分区,它总是用来训练模型。这个类可以用来交叉验证以固定时间间隔观察到的时间序列数据样本。

  • n_splits:int,默认值= 5,表示分割的数目。 必须至少为2。在版本0.22中n_splits的默认值从3更改为5(0.21版中默认值是3。
  • max_train_size:int,可选,表示单个训练集的最大大小。

3.2. 关于交叉验证与时序问题

在机器学习建模过程中,通行的做法通常是将数据分为训练集和测试集。测试集是与训练独立的数据,完全不参与训练,用于最终模型的评估。在训练过程中,经常会出现过拟合的问题,就是模型可以很好的匹配训练数据,却不能很好在预测训练集外的数据。如果此时就使用测试数据来调整模型参数,就相当于在训练时已知部分测试数据的信息,会影响最终评估结果的准确性。通常的做法是在训练数据再中分出一部分做为验证(Validation)数据,用来评估模型的训练效果。

验证数据取自训练数据,但不参与训练,这样可以相对客观的评估模型对于训练集之外数据的匹配程度。模型在验证数据中的评估常用的是交叉验证,又称循环验证。它将原始数据分成K组(K-Fold),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型。这K个模型分别在验证集中评估结果,最后的误差MSE(Mean Squared Error)加和平均就得到交叉验证误差。交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现,可以做为模型优化的指标使用。

平均绝对百分比误差,以及奇异点绘图效果如下:
从图中,我们可以看到数据呈周期形式波动。

如果数据总量较小时,其他方法无法继续提升性能,可以尝试K-Fold。其他情况就不太建议了,例如数据量很大,就没必要更多训练数据,同时训练成本也要扩大K倍(主要指的训练时间)。


 
 
 
 
 
 
 
 
 
 
 

通过训练分析,得出特征重要程度。
上图采用XGBoost 回归分析得到,与预估理论分析比较接近。

对于graphviz,也简单pip install graphviz后,虽然不会报错,但是在调用plot_tree时会报错。解决方案如下:graphviz需要先下载一个windows版本的安装包,下载地址如下。然后在命令行中输入以下代码将下载的graphviz添加到系统环境变量中即可。
然后下载graphviz这个软件,直接下载镜像文件安装就好,要记得安装路径,并将路径添加到系统path中;

我要回帖

更多关于 三星折叠屏fold怎么关机 的文章

 

随机推荐