机器学习pipeline可视化_第1页
机器学习pipeline可视化_第2页
机器学习pipeline可视化_第3页
机器学习pipeline可视化_第4页
机器学习pipeline可视化_第5页
已阅读5页,还剩11页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、超参数优化超参数优化是机器/深度学习中最常见的动作之一。机器学习模型的调 优是最佳化问题的一种。我们有一组超参数(例如:学习率,隐藏单元的数 量,等等)我们的U标是找出他们的值的正确组合,这可以帮助我们得到最小值(如损失)或最高值(如函数的准确性)O此类任务的最佳解决方案之一是使用平行坐标图(parallel coordinates plot)(图1)。使用这种类型的图,我们可以很容易地一起 比较不同的变量(例如特征),以发现可能的关系。在超参数优化的情况下, 这可以作为一个简单的工具来检查什么样的参数组合可以给我们提供最大的 测试精度。数据分析中平行坐标图的另一个可能用途是检査数据帧中不同特

2、 征之间的值之间的关系。图1,是一个使用Plotly创建的实用示例。import Plotly.express as pxfig = px.parallel_coordinates(df2, color=4nean_test_score labels=dicl(zi p(list(df2columns)9list(二 join(isplit(_)l:) for i in df2.columns), color_continuous_scale=px,colors.diverging.TeaIrose, color_continuous_inid point=27)fig.showOT-n Jc

3、XItCft HX图1:平行坐标超参数优化图为了在Python中创建平行坐标图,可以使用不同的技术,如Pandas Yellowbrickx Matplotlib 或 Plotly。最后,另一个可以用来创建这种类型的图的解决方案是Weights & Biases Sweepso Weights & Biases是一个免费的工具,可以用来自动创建 不同的机器学习任务(如学习率曲线,图模型等等)的图和日志。个人和团 体都适用OData WrapperData Wrapper是一个免费的在线工具,专为创建专业图表设计。不需要 登录,所有的过程都可以在线完成。今年这个工具额外创建了一个Python w

4、rapper,可以使用以下方法轻松安装:pip install datawrapper为了使用python API,我们还需要注册Data Wrapper,进入设置并创建 一个API Key。使用这个API键,我们就可以远程使用Data Wrapper。现在,我们可以很容易地创建一个条形图,例如,通过以下儿行代码, 并传递一个Pandas数据帧作为create _ chart函数的输入。from datawrapper import Datawrapperdw = Datawra pper(access_token = TODO)games_chart = dw.create_chart(ti

5、tle = Most Frequent Game Publishers, chart_type =d3bars: data = df)dw.update_descnption( games_chart*id, source_naine = Video Game Sales, source_url = gregorut/videogamesales byline = Pier Paolo Ippolito,) dw.publish_chart(games_chartidl)得到的图表如下所示。Most Frequent Game Publishers1.351975932921632715703

6、683639413Electronic ArtftActMsionNamco Bandai QamesUbteottKonanni Digital EntenammentTHQNintendoSony Computer EntertainmentSegaTake-Two InteractiWChart, Ptor Poto IppoMo Soxce Vtdoo Oame SaMFigure 2: Data Wrap per Bar Chart一旦我们的图表发布了,我们就可以在我们的Data Wrapper帐户的创 建的图表列表中找到它。点击我们的图表,然后我们会找到一个不同选项的 列表,我们可

7、以使用以便轻松地共学我们的图表(例如:嵌入,HTML, PNG, 等等)。Plotly预测表在处理时间序列数据时,有时如果能够快速理解我们的模型在哪些数据 点上表现不佳真的很方便,这样可以尝试理解它可能面临的限制。一种可能的方法是创建一个汇总表,其中包括实际值和预测值,以及某 种形式的度量,用于总结一个数据点的预测好坏。使用Plotly,可以通过创建一个绘图函数轻松实现:import chart_studio.plotly as pyimport plotly.graphObjs as gofrom plotly.offline import init_notebook_mode, iplot

8、init_notebook_mode(connected=True)import plotlydef predreport(y_pred, Y_Test):diff = y_pped.flatten() - Y_Test.flatten()perc = (abs(diff )/y_pred .flattenO )*100priority =for i in perc:if i 0.4:priorityappend(3)elif i 0.1:priority.append(2)else:reportedin , priority.count(l).priorityappend(l) print(

9、Error ImportancecasesXn)print(Error ImportaneecasesXn*)print(Error ImportancecasesXn)colors = rgb(102, 153, 255),5gb(0, 255, 0)gb(255, 153, 51) gb(255, 51, 0) fig = go.Figure(data = go.T able(header=diet (values = Actual Values *, Predictions ,reportedreportedinJ prioritycount(2),in , priority.count

10、G),% Difference Error Importance line_color=np.array(colors)0, fill_color=np.array(colors)0, align=left).cells=dict(values=y_pred.flatten(),Y_Testflatten(), pere, priority,line_color=np.apray(colons)priorityj ,fill_color=np wrray(colors)priority,init_notebook_node(connected=False)py.plot(fig, -filen

11、amepredictions_Tatle*, auto_open=True)+igshow()然后调用这个函数会得到以下输出(请随意测试图3中的表):Error Importance 1 reported in 34 casesError Importance 2 reported in13 casesError Importance 3 reported in53 casesffy!frporranizvMxaxxxxn2MjO10007UU 旳318 斶a仍也731删以如123灿咖22149032219US8I17%2238,70n000t0002UJ7519S0,05137217%328

12、91aO59M!74S1X75930M2714869999郴9Q03475 畑Ce5415271527199271网功RCC24276aOWi2273ia910722S80US3XOX0U2S8003VU1SS62U614gU374J10.曲72苦紳础图3:预测表决策树决策树是机器学习模型中最容易解释的类型之一。山于它们的基本结构, 很容易通过査看树的不同分支的条件来检査算法是如何决定的。此外,决策树也可以作为一种特征选择技术,考虑到算法将那些对我们期望的分类/回 归任务最有价值的特征置于树的顶层。通过这种方式,树底部的特征可以被 丢弃,因为它携带的信息更少。可视化分类/回归决策树的最简单方法

13、之一是使用sklearn. tree中 的export_graphviz。在本文中,使用了 dtreevz库提供的一种不同的、 更完整的方法。使用这个库,只需使用以下儿行代码就可以创建一个分类决策树:from dtreeviz.trees impopt *viz = dtreeviz(cl-f JX_train, y_train.values, target_r5ine= Genre* featijre_names = list(X. columns) class_names=list(labels-uniqu6() histtype= * bar, orientation =TD)Viz得到

14、的绘图如图4所示。轉絃1* -: txIMSG -Idl 4 丄.B E丄:3PjbftSherJI*neArixm:亦5 需e b-=71-iu:?:rfSoobfcWUitSnri力tibScabr-i?;t-iUfcwUitSnrip加昨f-lC2;3/M*SWSwrts图4:分类决策树在图4中,不同的类用不同的颜色表示。所有不同类的特征分布都表示 在树的起始节点上。只要我们向下移动每个分支,算法就会尝试使用每个节 点图下面描述的特征最好地分离不同的分布。沿着分布生成的圆表示在跟随 某个节点后正确分类的元素数量,元素数量越大,圆的大小就越大。 图5展示了一个使用决策树回归器的例子。*i!

15、畑i!-225 -073 Weiflhted_Pric6XSM“225Htooils 2 812Weigh ted_Prics 200 CIO 购L52.9Qn=415200 I Clos20788n=432200 aosG-270.93n *754CIOe30937n-299图5:决策树回归器决策边界决策边界是图形化地理解机器学习模型如何进行预测的最简单方法之一。 在Python中绘制决策边界的最简单方法之一是使用Mlxtendo这个库实际 上可以用来绘制机器学习和深度学习模型的决策边界。图6显示了一个简单 的例子。matplotlib.pyplot ds pitmatplotlib.gri

16、dspec as gridsp&citertoolsfrom mlxtend.plotting import plot_deci&ion_regions import import impODtgs = gridspec.Gridspec(2, 2)fig = pit .figuPG(f igsize=(108)clfl = LogisticRegpession(random_statel,solvep=newton-egmulti_class = multinomial *)clf2 = RandomForestClassifier(random_state=l, n_estifnators

17、100)clf3 = 6dussidnNB()clf4 = SVC(gamma=auto)labels = Logistic RegressionRandom Forest Waive Bayes,*SVM* fOP elf, lab, grd in 2ipclfl, clf2, clf3, cl千4,labels duct(0, 1, repeat=2):elf.fit(X_Train, Y_Train)ax = pit.subplot(gsgrd0j gpdl)fig = plotdecision.Legioas(X_Train扌 Y_Trainelf=clf,

18、legend=2)pittitle(lab)pit.show()Logistic Regression3Random ForestI-2-2-10SVM 04 A 130-12-3 1 -3-2-10 -1 -2 -3-2 -1 0 1Naive Bayes1-2-3-3-2-1图6:绘制决策边界Mlxtend的一些可能的替代方案是:Yellowbrick Plotly或者一个 普通的Sklearn和Numpy实现。绘制决策边界的一个主要局限性是它们只能在二维或三维空间中很容易 地可视化。山于这些限制,因此在绘制决策边界图之前,大多数时候可能需 要降低输入特征的维数(使用某种形式的特征提取技术

19、)。人工神经网络另一个技术,在创建新的神经网络架构时可视化他们的结构是非常有用 的。使用ANN Visualiser可以很容易地做到这一点(图7)。fromfromfromkeras.models import Sequential keras.layers import Dense ann_visuali2er.visualize Import ann_vizmodel = Sequential)model,add(Dense(unit5=4J activation=relu, input_dini=7)model, add Dense (unit s=45, / ; 、- / ?* 寿 *

20、 J、1-*/、./ 图7: ANN图Livelossplot在训练和验证过程中,能够自动绘制实时神经网络的损失和准确率,对 于即时了解网络是否随着时间的推移而取得进展有很大帮助。使用 Livelossplot可以很容易地做到这点。在图8中,是一个在Pytorch中训练一个变分自动编码器(VAE)时实时 创建的损失图的例子。Losstraining validation(min: 243437y max: 243.437, cur: 243.437) (min: 209.147少 max: 209.147, cur: 299.147)图8:实时VAE训练使用Livelossplot,可以很容易

21、地通过存储我们想要记录的所有指标 在字典中,并在每次迭代结束时更新图表来实现。如果我们有兴趣创建多个 图形(例如:一个是损失,另一个是整体的准确率)OFrom livelossplot import Plot Losses liveloss = PlotLosses()for epoch in rangeepoctis):lags = for phase intrairT, val: losses = if phase = train: model.train() else:model.eval()far i, (inp _) in enumerate(dataloadersphase): o

22、ut z_mu, z_var = model(inp) rec=F.binary_cross_entpopy(outj inp,reduction=sum)Zirp.shape0kl=-05*torch.mean(l+z_van-z_mupow(2)-torchexp(z_mu) loss = rec + kl losses.append(loss.itemC) if pbase = train:Optimizerze广。_gad()lossbackward()optimizer.Stsp()prefix =if phase = val:prefix = valjiogsfprefix + l

23、oss = npmean(losses)liveloss.updateClogs)liveloss serdOLivelossplot 还可以与其他库如 Keras, Pytorch-LightingT Bokeh 等一起使用。变分自动编码器变分自动编码器(VAE)是一种用于创建一些输入数拯的潜在表示的概率 生成模型(如图片),这种表示能够简明地理解原始数据并从中生成全新的 数据(例如用不同形象的汽车设il训练VAE模型,然后可以使模型创造全 新的想象的汽车设计)O继续从使用Livelossplot训练的变分Autoencoder示例,我们其至 可以通过检査潜在空间(图9)如何从一个迭代变化到

24、另一个迭代(即我们 的模型随着时间的推移改进了多少,以区分不同的类),使我们的模型更有 趣。这可以很容易地通过在前面的训练循环中添加以下函数来实现:def latent_space(modelj train_setit=):x_latent = model .enc (train_SGt.dat a .-float ()pit.figure(figsize=(ie 7)pit.scatter(x_latent0: ,0 .detach().nutnpy x_latent1:,1.detach()-numpy), c=train_set.targets)plt.colorbarOpit.titl

25、e(VAE Latent Space, font5ize=20)pitxlabel(fontsi2e=18)pit. ylabel( Y fontsize=18)pit savefig( *VAE_pace+stPCit)+ .png forniat= png dpi=200) pit.show()-200-400-600-eoo-10001-1200-1400-1600VAE Latent Spacer9W* i - I: * - :-300-200-100100200300400X500图9: VAE潜在空间进化如何从最后,一个类似的过程可以被应用,来实时可视化我们的VAE 迭代到迭代改进

26、生成真实的图像(图10) Odef manifold(modelj it= *, n = lS size=28):pGsult - torch.ZGnos(sizG * n size * n)# Defyining grid space-7, n)Sj s2 = torch.linspace(-7, 7, n), torch.linspace(7, grid_Xj grid =torch.std(s)*s, torch.std(52)*s2 for iJ y_ex in enumepate(grid_x):for jJ x_x in enumerate(grid_y):z_sample = t

27、orch.repeat_interleave(torch.tensor(x_ex, y_ex),nepeats=batch_size, dim0) x_dec = model.dec(z_sample)element = x_dec0.reshape(size, size).detach() resulti * size (i + 1) * s izej * size: (j 十 1) * size = elementpIt.figure(figsize=(12 J 12)pit .t itle*VAE Sam pies J font size=20)pit .xlalel(X fontsiz

28、e=lS)pit .y labelCY fontsize=lS)pit.imshow(result, cmap * Greys *)plT .savefig( * VAE *-i-str( it + * p ng * , format= * png* , dp 1 = 300)plt.show()VAE SamplesM-ZzzZZ7Z Z/Zz/Z/7/ ZZzz/Z/7ZZz/Z7ZZ Z亠Zz/ZZZZ /亠Z/ZZjA/r$Zz/ZZZZ/ZZZZ/ZZ/ZZZ /Z /9 / 夕/fZZ/?/t/?/孑孑夕?fff孑$t?歹您too-200”0-400 .100200300X500图

29、10:VAE渐渐改进生成新的数字神经网络Embeddings是为了学习如何将某种形式的类别数据转换为数 值数据而设讣的一类神经网络。与使用其他技术(如One Hot Encoding) 相比,使用Embeddings可能有相当大的优势,因为在转换数据时,它们能 够了解数据的特征,从而构建一个更简洁的表示(创建一个潜在空间)。最 著名的两种预训练的word embeddings是word2vec和Glove。一个简单的例子,我们现在要绘制一个代表不同图书作者的embed空 间。首先,我们需要在一些可用的数据上创建一个训练模型,然后访问模 型 embedded层(在这种悄况下称为embed)的训练

30、权重,并将它们存储在 一个数据帧中。完成这个过程后,我们只需绘制三个不同的坐标(图11)。impopt matplotlib.pyplot as pitfrom mpl_toolkits mplot3d import dxes3d Axes3Dembedding_weights=pdDataFrame(modelembed.weightdetach()-numpy() embedding_weights.columns = *X1,X2jX3*fig = pit.figure(iium=None, figsize=14, 12), dpi=S0jfacecolor= *w edgecolor=

31、*k)ax = pit.axes(projection=3d)for index J (x yZ)ir enumerate(zip(mbedding_w&ightsXI*, embedding_w&ightsX2, cmbedding_weiglits X3):1, color=b, 5=12) stP(dF. authors index), size=12.axscatt$r(Xjax.text(x y zorden=2.5j color=k)ax.5et_titleC*Word Embedding, fontsize=20)ax.set_xlabel(Xl, fontsize=20)ax set_ylabel(X2, Fortsize=2&)dx set_zlabel(X3, fortsize=20) pit .sh?w()Ward Embedding-IThcmnKMwy mr*rJMaMurX2在这个例子中,网络的embedding维数被直接设置为3,以便于创建三 维可视化。歼一种可能的解决方案可能是使用较高的embedding输出大小, 然后应用某种形式的特征提取技术(例如t-SNE, PCA等)以便观察结 果0另一个可以用来可视化分类数据的有趣技术是Wordclouds (图12)。 例如,这种类型的表示可以通过创建一个图书作者名字的字典以及在数据集中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论