折纸大全,在工业大数据运用分布式和并行方法进行特征提取。,8万左右买什么车好

频道:最近大事件 日期: 浏览:236

特征提取操控经过消除体系中的冗余特征和噪声来挑选重要且有用的特征,以发生最佳猜测输出。

动机 - 为什么需求提取特征?

特征提取仍然是机器学习算法中用于辨认强弱相关特点的开端步进程之一。虽然在特征工程期间运用许多特征提取算法来进行规范分类和回归问题,可是关于时刻序列分类和回归问题,每个标签或回归方针一起与多个时刻序列和元信息相关联,问题变得越来越困难。

这样的场景在从工业重型制作设备,机械,物联网中取得的大型数据会集十分遍及,这些数据集常常进行保护或优化生产线优化,在不同的时刻序列中展现不同的成功和失利方针。

本文的首要方针仍然是了解从多个时刻序列中提取相关特征的进程以及运用实在数据集的模型。结构如下:

  • 评价时刻序列特征提取对分类和回归问题的重要性。
  • 模仿工业运用中机器人履行失利率的实践用例。
  • 在分布式实时环境中杰出显现模型的长处。

什么是时刻序列数据的特征提取及其重要性?

特征提取操控经过消除体系中的冗余特征和噪声来挑选重要且有用的特征,以发生最佳猜测输出。在时刻序列数据的布景下,它旨在:

  • 从时刻序列中提取特征特征,例如最小值,最大值,平均值,百分位数或其他数学推导。
  • 从坐落不一起刻序列规范的分布式异构信息源中整合特征提取和挑选进程,以猜测方针输出。
  • 答应依据其相关性从提取的特征中进行时刻序列聚类(非监督学习)。
  • 提取的相关和非相关特征能够协助咱们在分类和回归建模中辨认时刻序列特点和维度的有新见地。

​工业大数据,机器人和其他信息资源来发生很多的有不同速度与变异性(不一致)和实在性(不精确)的信息。需求细心地兼并和集成这些数据,以经过剖析和提取不一起刻距离中最有含义的特征来猜测体系状况。

特征提取与挑选进程

下图阐明晰特征提取和挑选进程中触及的进程。运用特征提取来组合现有特征以生成更有用的特征,特征挑选有助于挑选在现有特征中进行练习的最有用特征。

图1

图2

图1给出了运用来自n个不一起刻序列的数学运算创立特搜集的详细了解,然后是特征聚合和特征重要性/相关性测验,以对它们进行排序并抵达终究挑选的特征列表。图2给出了完好进程的高档表明,涵盖了可在可弹性分布式环境中运用的特征工程,排名和测验进程。

Tsfresh及其用法

咱们运用Tsfresh来建模时刻序列特征提取和相关性测验。Tsfresh是一种高效,可扩展的特征提取算法,用于时刻序列分类或回归问题。该算法在ML管道的最初构建有特征重要性过滤器,依据其重要性分数提取相关特征。

Tsfresh的算法能够归纳为:

  • 经过考虑其他功用和元信息来树立功用映射。
  • 经过量化其猜测方针输出的重要性的p值独立评价每个独自的特征向量。
  • 运用于工业进程 - 或许包含猜测机器的寿数,猜测连铸进程中钢坯的质量,猜测机器人和IIoT传感器的成功和失利率。

建模实践用例

在这里,咱们模仿经过传感器读数取得的机器人履行失利率。从这5个不同的数据源搜集并兼并的履行状况:

  • 把握方位的办法失利。
  • 部件搬运失利。
  • 搬运失利后部件的方位。
  • 挨近ungrasp方位的失利。
  • 部分运动失利

​此外,该数据集是多变量的,由6个不同的时刻序列数据组成。

每个特征都是数字,表明毛病检测后丈量的力或扭矩; 每个毛病实例的特征在于在毛病检测后当即开端以规矩的时刻距离搜集的15个力或扭矩样本,每个毛病实例的总调查窗口为315毫秒。

装置:

Installation : pip install tsfresh
import tsfresh.examples.robot_execution_failures as robot
robot.download_robot_execution_failures()
df_ts, y = robot.load_robot_execution_failures()
print(df_ts.head())
print(y.tail())

每次调查6个不同的时刻序列

每次调查的方针输出

为了阻隔和独自检查不成功的操作的成功操作,运用两个不同的图和两个不同的ID。

normal = df_ts[df_ts.id == 3][['time', 'F_x', 'F_y', 'F_z', 'T_x', 'T_y', 'T_z']]
normal[['time', 'F_x', 'F_y', 'F_z', 'T_x', 'T_y', 'T_z']].plot(x="time", kind="line")
plt.title('Success example (id 3)')
plt.savefig('normal.png')

成功的机器人举动

failure = df_ts[df_ts.id == 20][['time', 'F_x', 'F_y', 'F_z', 'T_x', 'T_y', 'T_z']]
failure[['time', 'F_x', 'F_y', 'F_z', 'T_x', 'T_y', 'T_z']].plot(x="time", kind="line")
plt.title('Success example (id 20)')
plt.savefig('failure.png')

失利机器人动作

鄙人一步中,从6个不同的时刻序列中提取相关的特搜集并显现。一些功用包含规模计数,规范偏差,方差,自相关,线性趋势,分位数和分位数的改变。

from tsfresh import extract_relevant_features
X = extract_relevant_features(df_ts, y, column_id='id', column_sort='time')
print(X.info())
print(X.head())

提取的功用

特征含义和相关性

特征显着性由显着性测验确认,这些显着性测验协助咱们确认是否能够回绝或承受给定特征的零假定。

在时刻序列特征提取的上下文中,过错增加的特征是特征Xφ,即便Hφ0为真,零假定Hφ0也被相应的特征重要性测验回绝。这种假阳性成果的危险是经过针对个别特征调整的假定查验来完结的。

可是,当一起比较多个假定和特征时,推理中的差错倾向于累积。在屡次测验中,一切回绝中的过错回绝的预期份额称为过错发现率(FDR),其作为过滤特征提取中的最终一个组件。

p值(称为特征挑选器)有助于确认在操控FDR时回绝哪些假定。关于每个特征,进行单变量特征挑选测验,其发生p值,然后由Benjamini Hochberg进程评价以确认要保存哪些特征以及删去哪些特征。

FDR_LEVEL = 0.05
X = extract_features(df_ts,
column_id='id', column_sort='time',
X_selected = select_features(X, y)
print(X.shape)
print(X_selected.shape)
default_fc_parameters=ComprehensiveFCParameters(),
impute_function=impute)
X = X.loc[:, X.apply(pd.Series.nunique) != 1]
df_pvalues_mann = calculate_relevance_table(X, y, fdr_level=FDR_LEVEL, test_for_binary_target_real_feature='mann')

print("Total \t", len(df_pvalues_mann))
print("Relevant \t", (df_pvalues_mann["relevant"] == True).sum())
print(Irrelevant \t", (df_pvalues_mann["relevant"] == False).sum(),
"( # constant", (df_pvalues_mann["type"] == "const").sum(), ")")
(88, 1968)
(88, 631) # 631 features selected from 1968
Total 1968
Relevant 631
Irrelevant 1337

具有p-score(运用Mann-Whitney)列表的相关特搜集由下式给出:

相关特征的p值

具有p-score(运用Mann-Whitney)列表的不相关特搜集由下式给出:

非相关特征的p值

Mann-Whitney U查验是对独立样本t查验的非参数代替查验。它用于比较来自相同整体的两个样本均值,并用于测验两个样本均值是否持平。

在tsfresh中运用Mann-Whitney U查验来核算二元方针的实值特征的特征重要性作为p值。


m = len(df_pvalues_mann.loc[~(df_pvalues_mann.type == "const")])
K = list(range(1, m + 1))
C = [sum([1.0 / i for i in range(1, k + 1)]) for k in K]
rejection_line_mann = [defaults.FDR_LEVEL * k / m * 1.0 / c for k, c in zip(K, C)]
df_pvalues_mann.index = pd.Series(range(0, len(df_pvalues_mann.index)))
df_pvalues_mann.p_value.where(df_pvalues_mann.relevant)\
.plot(style=".", label="relevant features")
df_pvalues_mann.p_value.where(~df_pvalues_mann.relevant & (df_pvalues_mann.type != "const"))\
.plot(style=".", label="irrelevant features")
df_pvalues_mann.p_value.fillna(1).where(df_pvalues_mann.type == "const")\
.plot(style=".", label="irrelevant (constant) features")
plt.plot(rejection_line_mann, label="rejection line (FDR = " + str(FDR_LEVEL) + ")")
plt.xlabel("Feature #")
plt.ylabel("p-value")
plt.title("Mann-Whitney-U")
plt.legend()
plt.plot()

挑选时,fdr_level是一个要调整的超参数。它是一切创立的特征中不相关特征的理论预期百分比。默许情况下,它设置为5%。可是,它或许需求增加到0.9,详细取决于所选分类器怎么处理非信息功用。

功用重要性过滤器也能够运用于规范分类或回归算法。在这里,我运用RandomForestClassifier来评价要素重要性。

clf = RandomForestClassifier()
clf.fit(X,y)
importance = pd.Series(clf.feature_importances_)
importance.sort_values(ascending = False)
print(importance)

提取的特征系数表明其重要性

经过条形图制作相对要素重要性,可得出以下特征重要性图。

imp_frame = importance.to_frame()
imp_frame.plot(kind = “bar”)
plt.xticks([])
plt.xlabel('Features')
plt.ylabel('Importances')
plt.title('Feature Importance Plot')
plt.savefig('importance.png')

显现特征与p值系数的相关性的特征重要性

分类

规范分类器Logistic回归,Boosting和Bagging可运用于提取的特搜集(X)。在将选定的特搜集(X)拆分为练习和测验子集之后,咱们运用RandomForestClassifier来阐明机器人履行失利和成功类。

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
testtrain_xy = train_test_split(X, y,test_size=.4,random_state=50)
X_train, X_test, y_train, y_test = testtrain_xy
print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)

(52,631)(36,631)(52,)(36,)

在测验数据集上评价练习的分类器,以经过精确度,召回率和f1分数来评价其功用。

clf = RandomForestClassifier()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print(classification_report(y_test, y_pred))
print(np.sum(y_test == y_pred), y_test.shape)

from sklearn.model_selection import cross_val_predict
predicted = cross_val_predict(clf, X, y, cv=5)
print(classification_report(y, predicted))

进一步的特征提取和模型分类也能够运用scikit-learn的Pipeline进行,FeatureAugmentor在开端时跟从任何分类器如RandomForest。

from sklearn.pipeline import Pipeline
from sklearn.ensemble import RandomForestClassifier
from tsfresh.transformers import RelevantFeatureAugmenter

​在拟合阶段,核算由set_params函数设置的一切或许的时刻序列特征(假如未经过传递feature_extraction_settings方针手动更改特征)。然后,运用核算办法核算它们对方针的重要性和相关性,而且经过运用适宜的算法(如Benjamini Hochberg)程序仅挑选相关的那些。

在改换进程(fit_transform)中,运用关于哪些特征与拟合进程相关的信息,而且从时刻序列中提取这些特征。然后将这些提取的特征增加到输入到分类器的输入数据样本中。

 pipeline = Pipeline([('augmenter', RelevantFeatureAugmenter(column_id='id', column_sort='time')),
('classifier', RandomForestClassifier())])
X = pd.DataFrame(index=y.index)
pipeline.set_params(augmenter__timeseries_container=df_ts)
pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
print(classification_report(y_test, y_pred))

管道中具有时刻序列特征提取的精度,召回,F分数(RelevantFeatureAugmentor和RandomForestClassifier)

定论

该模型可用于分布式工业大数据运用,用于以下意图:

  • 除了几个元信息之外,它还答应考虑每个标签的几种不同的时刻序列类型。
  • 并行分布式功用有助于功用提取和过滤可扩展。数据在分布式架构中处理,用于在广泛的根底架构上涣散数据,约束数据聚合和会集式根底架构上的处理。
  • 它答应从更专业的机器学习算法轻松组合特定于域的和或许的有状况特征映射。
  • 该算法有助于对具有有限范畴常识和低核算复杂度的不同工业大数据用例进行建模。
  • 该模型与样本数和时刻序列长度成线性份额。
热门
最新
推荐
标签