机器学习pipeline可视化.docx
《机器学习pipeline可视化.docx》由会员分享,可在线阅读,更多相关《机器学习pipeline可视化.docx(16页珍藏版)》请在冰豆网上搜索。
机器学习pipeline可视化
超参数优化
超参数优化是机器/深度学习中最常见的动作之一。
机器学习模型的调优是最佳化问题的一种。
我们有一组超参数(例如:
学习率,隐藏单元的数量,等等)我们的U标是找出他们的值的正确组合,这可以帮助我们
得到最小值(如损失)或最高值(如函数的准确性)O
此类任务的最佳解决方案之一是使用平行坐标图(parallelcoordinatesplot)(图1)。
使用这种类型的图,我们可以很容易地一起比较不同的变量(例如特征),以发现可能的关系。
在超参数优化的情况下,这可以作为一个简单的工具来检查什么样的参数组合可以给我们提供最大的测试精度。
数据分析中平行坐标图的另一个可能用途是检査数据帧中不同特征之间的值之间的关系。
图1,是一个使用Plotly创建的实用示例。
importPlotly.expressaspx
fig=px.parallel_coordinates(df2,color='4nean_test_score'\labels=dicl(zip(list(df2・columns)9
list([二join(i・split('_')[l:
])foriindf2.columns]))),color_continuous_scale=px,colors.diverging.TeaIrose,color_continuous_inidpoint=27)
fig.showO
图1:
平行坐标超参数优化图
为了在Python中创建平行坐标图,可以使用不同的技术,如Pandas>YellowbrickxMatplotlib或Plotly。
最后,另一个可以用来创建这种类型的图的解决方案是Weights&BiasesSweepsoWeights&Biases是一个免费的工具,可以用来自动创建不同的机器学习任务(如学习率曲线,图模型等等)的图和日志。
个人和团体都适用O
DataWrapper
DataWrapper是一个免费的在线工具,专为创建专业图表设计。
不需要登录,所有的过程都可以在线完成。
今年这个工具额外创建了一个Pythonwrapper,可以使用以下方法轻松安装:
pipinstalldatawrapper
为了使用pythonAPI,我们还需要注册DataWrapper,进入设置并创建一个APIKey。
使用这个API键,我们就可以远程使用DataWrapper。
现在,我们可以很容易地创建一个条形图,例如,通过以下儿行代码,并传递一个Pandas数据帧作为create_chart函数的输入。
fromdatawrapperimportDatawrapper
dw=Datawrapper(access_token="TODO")
games_chart=dw.create_chart(title="MostFrequentGamePublishers",chart_type='d3・bars:
data=df)
dw.update_descnption(games_chart[*id'],source_naine='VideoGameSales',source_url='gregorut/videogamesales\byline=PierPaoloIppolito',)dw.publish_chart(games_chart['idl)
得到的图表如下所示。
MostFrequentGamePublishers
1.351
975
932
921
632
715
703
683
639
413
ElectronicArtft
ActMsion
NamcoBandaiQames
Ubteott
KonanniDigitalEntenamment
THQ
Nintendo
SonyComputerEntertainment
Sega
Take-TwoInteractiW
Chart,PtorP>otoIppoMo•SoxceVtdooOameSaM
Figure2:
DataWrapperBarChart
一旦我们的图表发布了,我们就可以在我们的DataWrapper帐户的创建的图表列表中找到它。
点击我们的图表,然后我们会找到一个不同选项的列表,我们可以使用以便轻松地共学我们的图表(例如:
嵌入,HTML,PNG,等等)。
Plotly预测表
在处理时间序列数据时,有时如果能够快速理解我们的模型在哪些数据点上表现不佳真的很方便,这样可以尝试理解它可能面临的限制。
一种可能的方法是创建一个汇总表,其中包括实际值和预测值,以及某种形式的度量,用于总结一个数据点的预测好坏。
使用Plotly,可以通过创建一个绘图函数轻松实现:
importchart_studio.plotlyaspy
importplotly.graph—Objsasgo
fromplotly.offlineimportinit_notebook_mode,iplot
init_notebook_mode(connected=True)
importplotly
defpredreport(y_pred,Y_Test):
diff=y_pped.flatten()-Y_Test.flatten()
perc=(abs(diff)/y_pred.flattenO)*100
priority=[]
foriinperc:
ifi>0.4:
priority•append(3)
elifi>0.1:
priority.append
(2)
else:
priority•append(l)print('"ErrorImportance
'%Difference\'"ErrorImportance'"]line_color=[np.array(colors)[0]],fill_color=[np.array(colors)[0]],align='left').
cells=dict(
values=[y_pred.flatten(),Y_Test・flatten(),pere,priority],
£ffy!
frporra
图3:
预测表
决策树
决策树是机器学习模型中最容易解释的类型之一。
山于它们的基本结构,很容易通过査看树的不同分支的条件来检査算法是如何决定的。
此外,决策
树也可以作为一种特征选择技术,考虑到算法将那些对我们期望的分类/回归任务最有价值的特征置于树的顶层。
通过这种方式,树底部的特征可以被丢弃,因为它携带的信息更少。
可视化分类/回归决策树的最简单方法之一是使用sklearn.tree中的export_graphviz。
在本文中,使用了dtreevz库提供的一种不同的、更完整的方法。
使用这个库,只需使用以下儿行代码就可以创建一个分类决策树:
fromdtreeviz.treesimpopt*
viz=dtreeviz(cl-fJ
X_train,y_train.values,target_r5ine='Genre*>featijre_names=list(X.columns)^class_names=list(labels-uniqu6())』histtype=*bar',orientation='TD")
Viz
得到的绘图如图4所示。
■■轉絃
1
*«・-
•:
txIMS
图4:
分类决策树
在图4中,不同的类用不同的颜色表示。
所有不同类的特征分布都表示在树的起始节点上。
只要我们向下移动每个分支,算法就会尝试使用每个节点图下面描述的特征最好地分离不同的分布。
沿着分布生成的圆表示在跟随某个节点后正确分类的元素数量,元素数量越大,圆的大小就越大。
图5展示了一个使用决策树回归器的例子。
图5:
决策树回归器
决策边界
决策边界是图形化地理解机器学习模型如何进行预测的最简单方法之一。
在Python中绘制决策边界的最简单方法之一是使用Mlxtendo这个库实际上可以用来绘制机器学习和深度学习模型的决策边界。
图6显示了一个简单的例子。
matplotlib.pyplotdspit
matplotlib.gridspecasgridsp&c
itertools
frommlxtend.plottingimportplot_deci&ion_regionsimportimportimpODt
gs=gridspec.Gridspec(2,2)
fig=pit.■figuPG(figsize=(10^8))
clfl=LogisticRegpession(random_state«l,
solvep='newton-eg'》
multi_class='multinomial*)
clf2=RandomForestClassifier(random_state=l,n_estifnators»100)
clf3=6dussidnNB()
clf4=SVC(gamma='auto')
labels=[■LogisticRegression"'RandomForest\"WaiveBayes",*SVM*]fOPelf,lab,grdin2ip<[clfl,clf2,clf3,cl千4],
labels^itentools.product([0,1],repeat=2)):
elf.fit(X_Train,Y_Train)
ax=pit.subplot(gs[grd[0]jgpd[l]])
■fig=plot—decision.Legioas(X_Train扌Y_Trainelf=clf,legend=2)
pit•title(lab)
pit.show()
"I
-2
0
-1
・2
-31-
-3-2-1
0-1-2-3
-2-101
NaiveBayes
■1
-2
-3
-3-2-1
图6:
绘制决策边界
Mlxtend的一些可能的替代方案是:
Yellowbrick^Plotly或者一个普通的Sklearn和Numpy实现。
绘制决策边界的一个主要局限性是它们只能在二维或三维空间中很容易地可视化。
山于这些限制,因此在绘制决策边界图之前,大多数时候可能需要降低输入特征的维数(使用某种形式的特征提取技术)。
人工神经网络
另一个技术,在创建新的神经网络架构时可视化他们的结构是非常有用的。
使用ANNVisualiser可以很容易地做到这一点(图7)。
model=Sequential{)
model,add(Dense(unit5=4Jactivation="relu',input_dini=7))
model,add{Dense(units=4^5ann_viz(niodeljview=TruG,filer-ame="example",title="ExampieANN")
111**^I-uyri
、•V/■•[
乂•X••