KernelML-分层密度分解
目的,问题陈述和潜在的应用程序来自 datasciencecentral.com上的这篇文章。目标是使用内核的加权总和来近似任何多元分布。在此,内核是指参数化分布。这种使用核的衰减加权总和来近似分布的方法类似于 泰勒级数 ,泰勒级数可以使用函数的导数在一个点附近近似函数。KernelML是一种粒子优化器,它使用参数约束和采样方法来最小化可自定义的损失函数。该软件包使用Cythonized后端,并通过Numba并行化跨多个内核的操作。KernelML现在可以在Anaconda云和PyPi(pip)上使用。请参阅KernelML 文档页面上的扩展。
目标
近似任何经验分布
建立参数化的密度估算器
离群值检测和数据集降噪
我的方法
我提出的解决方案已合并到python软件包KernelML中。示例代码可以在这里找到。
我的解决方案使用以下内容:
粒子群\遗传优化器
使用IID核的多Agent逼近
强化学习
粒子群\遗传优化器
大多数内核具有控制分布平均值和变化的超参数。尽管这些参数可能是可区分的,但我还是决定不使用基于梯度的方法。方差参数的梯度可能会消失,并且限制方差会使参数不可微。使用混合整数或粒子群策略来优化内核的超参数是有意义的。我决定使用统一分发内核,因为它对更高维度的异常值具有鲁棒性。
在过去的一年中,我独立开发了一种优化算法来解决非线性受限优化问题。它绝不是完美的,但是从头开始构建它使我可以:1)根据任务进行修改2)更好地理解我要解决的问题。
使用IID核的多Agent逼近
我最初的方法是使用多主体策略来同时拟合任何多变量分布。代理,在这种情况下,是内核,是独立的且相同分布的(IID)。我制定了一种算法,称为密度分解,以使任意数量的代理适合于分布。优化方法和细节可以在这里找到。以下视频逐帧显示了该解决方案在优化过程中的外观示例。
该算法在非稀疏,连续分布上似乎表现良好。一个问题是该算法使用了IID内核,这在对偏斜数据进行建模时是一个问题。每个内核具有相同的1 / K权重,其中K是内核数。从理论上讲,可以一次优化数百个内核,但是这种解决方案缺乏效率和粒度。
强化学习
我决定使用分层的,强化的方式来拟合经验多元分布。初始奖励R_0是经验分布,折现奖励R_1代表R_0处的初始多主体算法未捕获的数据点。等式(1)示出了奖励的更新过程。

关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!