KernelML——一种广义机器学习算法

简介: 通过阅读本文,我们可以了解一个名为KernelML的Python软件包,该软件包旨在为分析师和数据科学家提供针对于复杂损失函数和非线性系数的广义机器学习算法。

最近,我创造了一个自定义的“粒子优化算法”,并制作了一个叫做KernelML的Python包。创造这种算法是为了给数据分析师和数据科学家提供一个针对复杂损失函数和非线性系数的广义机器学习算法。优化算法通过简单机器学习和概率模拟的组合,使用损失函数、输入和输出矩阵以及随机采样器(可选)来寻找最优参数。目前,我在研究更多功能,希望项目最终能够开源。

使用示例:

以经纬度坐标的聚类问题作为范例,K均值的聚类方法使用欧氏距离来区别观测值。但是,经纬度坐标间的欧氏距离并不能直接映射为Haversine距离。这意味着,如果将0和1之间的坐标进行归一化,则距离无法精确的在聚类模型中得以表示。最好的解决方案就是找到坐标投影,使该点质心的Haversine距离等于欧式空间中的投影距离。

9d0839c160c74420aa9d276474941b3ef02e8d94

以上坐标变换在聚类解决方案中的缩放和使用,将相对于中心的Haversine距离转化为欧式距离。

另一个更简单的问题是找到非线性系数的最优值,即最小二乘线性模型中的幂变换。这样做的原因很简单,整数的幂变换不容易得到最佳拟合变换。通过将幂变换转换成为任意实数,准确性大大提升,模型也能更好地验证数据。

fc5964c46cc01261088b650cb207972e4916e394

为了更好地解释幂变换的含义,上图提供了该模型的公式。

算法:

KernelML的核心思想很简单。在模型中使用参数更新历史记录来决定如何更新下一个参数集。在末端使用模型导致偏差变化问题,具体地说,参数偏差在每次迭代更新中变大。这个问题可以在每次迭代后解决,需要在最佳参数集周围进行蒙特卡洛模拟。

收敛问题:

该模型在每次迭代后保存最佳参数和用户定义的损失,同时还记录了所有参数的历史更新记录。但问题是如何使用这些数据来定义收敛。一个可能的解决方案的代码如下

convergence = (best_parameter-np.mean(param_by_iter[-10:,:],axis=0))/(np.std(param_by_iter[-10:,:],axis=0))
if np.all(np.abs(convergence)<1):
print('converged')
break

该公式使用最后10个参数和最佳参数创建Z分数。如果所有参数的Z分数小于1,那么该算法可以说已经收敛。当存在理论上最好的参数集时,这种收敛解决方案效果非常好。下面的例子是在使用该算法进行聚类时所遇到的问题

8b8e34dccc4c7e9555cac05e104527e1f6e91566

图1:使用KernelML,2-D多变量正态分布(蓝色),聚类解决方案(其他颜色)

我们不会深究聚类方案的质量,因为显然它不代表数据。聚类解决方案使多维直方图与6个正态分布的平均概率之间的差异达到最小,每个轴都是3。在这里,分布可以很容易地“交换”坐标点,这可能会增加收敛时间。也许有人会问,为什么不采用3-多元正态分布?模拟分布参数存在问题,因为一些参数具有约束条件。协方差矩阵需要是正的、半确定的,并且需要存在逆矩阵。正态分布中的标准差必须为正。该模型中使用的解决方案通过对每个单独参数进行自定义模拟来整合对参数的约束。

为什么采用KernelML而不是最大期望?

非正态分布(如泊松)可能不适合多元正态聚类解决方案中的其他维度。另外,随着维数的增加,一个聚类是具有非零值特征的唯一聚类的概率也增加。这对EM算法提出了一个问题,因为它试图更新协方差矩阵。唯一特征和其他维度之间的协方差将为零,或者另一个聚类接受具有此非零值的观察值的概率为零。

概率优化算法的优点:

参数的概率模拟与完全参数化的模型相比具有一些很大的好处。首先,正则化包含在先前的随机模拟中。例如,如果先前对参数的随机模拟在-1和1之间,则可以推论参数将以同样重要的方式更新。此外,在算法收敛的同时,每次迭代都会产生一组参数,以全局或局部最小损耗为样本进行采样。这有两个主要的好处:1)可以为每个参数建立置信区间;2)每个参数集的预测输出可以是统一模型中的有用特征。


数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

文章原标题《Kernel Machine Learning (KernelML) - Generalized Machine Learning Algorithm》,译者:Anchor C.,审校:虎说八道。

文章为简译,更为详细的内容,请查看原文


相关文章
|
2天前
|
机器学习/深度学习 存储 人工智能
【人工智能】机器学习算法综述及常见算法详解
【人工智能】机器学习算法综述及常见算法详解
|
5天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第6天】在数据科学和人工智能的广阔天地中,支持向量机(SVM)以其强大的分类能力与理论深度成为机器学习领域中的一个闪亮的星。本文将深入探讨SVM的核心原理、关键特性以及实际应用案例,为读者提供一个清晰的视角来理解这一高级算法,并展示如何利用SVM解决实际问题。
28 7
|
5天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机算法
【5月更文挑战第6天】 在数据科学和人工智能领域,支持向量机(SVM)是一种强大的监督学习模型,它凭借其出色的分类能力在众多机器学习任务中占据重要地位。本文旨在深入剖析支持向量机的工作原理,探讨其在高维数据处理中的优势以及面对大规模数据集时的应对策略。通过对核技巧、软间隔以及优化问题的讨论,我们将揭示SVM如何优雅地处理线性不可分问题,并保持模型的泛化性能。
|
9天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
10天前
|
机器学习/深度学习 运维 算法
【Python机器学习专栏】异常检测算法在Python中的实践
【4月更文挑战第30天】本文介绍了异常检测的重要性和在不同领域的应用,如欺诈检测和网络安全。文章概述了四种常见异常检测算法:基于统计、距离、密度和模型的方法。在Python实践中,使用scikit-learn库展示了如何实现这些算法,包括正态分布拟合、K-means聚类、局部异常因子(LOF)和孤立森林(Isolation Forest)。通过计算概率密度、距离、LOF值和数据点的平均路径长度来识别异常值。
|
10天前
|
机器学习/深度学习 数据可视化 算法
【Python机器学习专栏】t-SNE算法在数据可视化中的应用
【4月更文挑战第30天】t-SNE算法是用于高维数据可视化的非线性降维技术,通过最小化Kullback-Leibler散度在低维空间保持数据点间关系。其特点包括:高维到二维/三维映射、保留局部结构、无需预定义簇数量,但计算成本高。Python中可使用`scikit-learn`的`TSNE`类实现,结合`matplotlib`进行可视化。尽管计算昂贵,t-SNE在揭示复杂数据集结构上极具价值。
|
10天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】关联规则学习:Apriori算法详解
【4月更文挑战第30天】Apriori算法是一种用于关联规则学习的经典算法,尤其适用于购物篮分析,以发现商品间的购买关联。该算法基于支持度和置信度指标,通过迭代生成频繁项集并提取满足阈值的规则。Python中可借助mlxtend库实现Apriori,例如处理购物篮数据,设置支持度和置信度阈值,找出相关规则。
|
10天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】层次聚类算法的原理与应用
【4月更文挑战第30天】层次聚类是数据挖掘中的聚类技术,无需预设簇数量,能生成数据的层次结构。分为凝聚(自下而上)和分裂(自上而下)两类,常用凝聚层次聚类有最短/最长距离、群集平均和Ward方法。优点是自动确定簇数、提供层次结构,适合小到中型数据集;缺点是计算成本高、过程不可逆且对异常值敏感。在Python中可使用`scipy.cluster.hierarchy`进行实现。尽管有局限,层次聚类仍是各领域强大的分析工具。
|
10天前
|
机器学习/深度学习 算法 数据挖掘
【Python 机器学习专栏】K-means 聚类算法在 Python 中的实现
【4月更文挑战第30天】K-means 是一种常见的聚类算法,用于将数据集划分为 K 个簇。其基本流程包括初始化簇中心、分配数据点、更新簇中心并重复此过程直到收敛。在 Python 中实现 K-means 包括数据准备、定义距离函数、初始化、迭代和输出结果。虽然算法简单高效,但它需要预先设定 K 值,且对初始点选择敏感,可能陷入局部最优。广泛应用在市场分析、图像分割等场景。理解原理与实现对应用聚类分析至关重要。
|
10天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。