超参数优化
超参数优化是机器/深度学习中最常见的动作之一。机器学习模型的调优是最佳化问题的一种。我们有一组超参数(例如:学习率,隐藏单元的数量,等等......)我们的目标是找出他们的值的正确组合,这可以帮助我们得到最小值(如损失)或最高值(如函数的准确性)。
此类任务的最佳解决方案之一是使用平行坐标图(parallel
coordinates plot)(图1)。使用这种类型的图,我们可以很容易地一起比较不同的变量(例如特征),以发现可能的关系。在超参数优化的情况下,这可以作为一个简单的工具来检查什么样的参数组合可以给我们提供最大的测试精度。数据分析中平行坐标图的另一个可能用途是检查数据帧中不同特征之间的值之间的关系。
图1,是一个使用 Plotly 创建的实用示例。
import plotly.express as px
fig = px.parallel_coordinates(df2, color=\
labels=dict(zip(list(df2.columns),
list(['_'.join(i.split('_')[1:]) for i in df2.columns]))), color_continuous_scale=px.colors.diverging.Tealrose, color_continuous_midpoint=27)
fig.show()
图1: 平行坐标超参数优化图
为了在 Python 中创建平行坐标图,可以使用不同的技术,如 Pandas、 Yellowbrick、 Matplotlib 或 Plotly。
最后,另一个可以用来创建这种类型的图的解决方案是Weights & Biases Sweeps。Weights & Biases是一个免费的工具,可以用来自动创建不同的机器学习任务(如学习率曲线,图模型等等)的图和日志。个人和团体都适用。
Data Wrapper
Data Wrapper是一个免费的在线工具,专为创建专业图表设计。不需要登录,所有的过程都可以在线完成。今年这个工具额外创建了一个 Python wrapper,可以使用以下方法轻松安装:
pip install datawrapper
为了使用 Python API,我们还需要注册 Data Wrapper,进入设置并创建一个 API Key。使用这个 API 键,我们就可以远程使用Data Wrapper。
现在,我们可以很容易地创建一个条形图,例如,通过以下几行代码,并传递一个 Pandas 数据帧作为 create _ chart 函数的输入。
from datawrapper import Datawrapper
dw = Datawrapper(access_token = \
games_chart = dw.create_chart(title = \= 'd3-bars', data = df)
dw.update_description( games_chart['id'], source_name = 'Video Game Sales', source_url = 'gregorut/videogamesales', byline = 'Pier Paolo Ippolito',) dw.publish_chart(games_chart['id'])
得到的图表如下所示。
一旦我们的图表发布了,我们就可以在我们的 Data Wrapper 帐户的创建的图表列表中找到它。点击我们的图表,然后我们会找到一个不同选项的列表,我们可以使用以便轻松地共享我们的图表(例如:嵌入,HTML,PNG,等等)。
Plotly预测表
在处理时间序列数据时,有时如果能够快速理解我们的模型在哪些数据点上表现不佳真的很方便,这样可以尝试理解它可能面临的限制。
一种可能的方法是创建一个汇总表,其中包括实际值和预测值,以及某种形式的度量,用于总结一个数据点的预测好坏。
使用 Plotly,可以通过创建一个绘图函数轻松实现:
然后调用这个函数会得到以下输出(请随意测试图3中的表) : Error Importance 1 reported in 34 cases Error Importance 2 reported in 13 cases Error Importance 3 reported in 53 cases
图3: 预测表
决策树
决策树是机器学习模型中最容易解释的类型之一。由于它们的基本结构,很容易通过查看树的不同分支的条件来检查算法是如何决定的。此外,决策
树也可以作为一种特征选择技术,考虑到算法将那些对我们期望的分类/回归任务最有价值的特征置于树的顶层。通过这种方式,树底部的特征可以被丢弃,因为它携带的信息更少。
可视化分类/回归决策树的最简单方法之一是使用 sklearn.tree 中的 export_graphviz。在本文中,使用了 dtreevz 库提供的一种不同的、更完整的方法。
使用这个库,只需使用以下几行代码就可以创建一个分类决策树:
得到的绘图如图4所示。
图4: 分类决策树