基于二阶优化的机器学习框架
项目描述
峰值引擎
peak-engines是机器学习框架,专注于应用高级优化算法来构建更好的模型。
安装
pip install peak-engines
拟合逻辑回归超参数
可以有效地近似逻辑回归的留一法交叉验证。在高层次上,它是这样工作的:对于给定的超参数C,我们
- 找到
b优化给定逻辑回归的参数C。 - 对于每个数据索引,我们在删除第 i 个数据条目的情况下计算对数似然
i的粗麻布H_{-i}和梯度。g_{-i}(我们可以重用从 (1) 计算的粗麻布,以最少的工作量完成此操作。) - 我们应用矩阵求逆引理来有效地计算逆
H_{-i}^{-1}。 - 我们使用
H_{-i}^{-1}和采取牛顿方法g_{-i}的一步来近似逻辑回归系数,其中第 i 个条目被删除。b_{-i} - 最后,我们使用
b_{-i}'s 来近似样本外预测并估计留一法交叉验证。
有关 更多详细信息,请参阅 Kamiar Rad 和 Arian Maleki通过近似留一法对样本外预测误差的可扩展估计。
此外,我们可以将 Approximate Leave-One-Out 指标与超参数区分开来,并迅速攀升至最佳性能C。以下是使用peak-engines 的方法:
加载示例数据集
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import StandardScaler
X, y = load_breast_cancer(return_X_y=True)
X = StandardScaler().fit_transform(X)
找到表现最好的 C
model = peak_engines.LogisticRegressionModel()
model.fit(X, y)
print('C =', model.C_[0])
印刷
C = 0.66474879
如果我们通过蛮力计算 LOOCV 并与 ALOOCV 进行比较,我们可以看到近似值有多准确
拟合岭回归超参数
通过将交叉验证表示为优化目标并计算导数, 峰值引擎能够有效地找到正则化参数,从而在留一法或广义交叉验证中获得最佳分数。此外,它可以扩展以处理多个正则化器。这是它如何工作的示例
import numpy as np
from sklearn.datasets import load_boston
X, y = load_boston(return_X_y=True)
from peak_engines import RidgeRegressionModel
model = RidgeRegressionModel(normalize=True)
# Fit will automatically find the best alpha that minimizes the Leave-one-out Cross-validation.
# when you call fit. There's no need to provide a search space because peak_engines optimizes the
# LOOCV directly. It the computes derivatives of the LOOCV with respect to the hyperparameters and
# is able to quickly zero in on the best alpha.
model.fit(X, y)
print('alpha =', model.alpha_)
印刷
alpha = 0.009274259071634289
拟合扭曲线性回归
让X和y表示回归数据集的特征矩阵和目标向量。在误差正态分布的假设下,普通最小二乘法 (OLS) 找到最大化数据集似然性的线性模型
当错误不是正态分布时会发生什么?好吧,模型将被错误指定,没有理由认为它的可能性预测是准确的。这就是扭曲线性回归可以提供帮助的地方。它在 OLS 中引入了一个额外的步骤,它使用由ψ 参数化的可延展的单调函数f转换目标向量,并调整参数以最大化转换后数据集的可能性
通过引入额外的转换步骤,扭曲线性回归比 OLS 更通用,同时仍然保留了强大的结构和可解释性。这是你如何使用它
加载示例数据集
from sklearn.datasets import load_boston
X, y = load_boston(return_X_y=True)
拟合扭曲的线性回归模型
import peak_engines
model = peak_engines.WarpedLinearRegressionModel()
model.fit(X_train, y_train)
可视化变形函数
import numpy as np
import matplotlib.pyplot as plt
y_range = np.arange(np.min(y), np.max(y), 0.01)
z = model.warper_.compute_latent(y_range)
plt.plot(y_range, z)
plt.xlabel('Median Housing Value in $1000s')
plt.ylabel('Latent Variable')
plt.scatter(y, model.warper_.compute_latent(y))
教程
文章
例子
- example/ridge_regression/california_housing.ipynb:测量不同岭回归模型预测住房价值的性能。
- example/ridge_regression/pollution.ipynb:建立岭回归模型来预测空气质量的死亡率。
- example/warped_linear_regression/boston_housing.ipynb:建立一个扭曲的线性回归模型来预测住房价值。
- example/warped_linear_regression/abalone.ipynb:使用扭曲线性回归预测海螺的年龄。
文档
项目详情
关
peak_engines -0.2.8-cp32-abi3-manylinux1_x86_64.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | dfc086ef678495bd98585c44439e1060f72a4f6464fd50e0d671f5d67d09494c |
|
| MD5 | 908997a76c33ed8a7b499ef076230d86 |
|
| 布莱克2-256 | e6e041a6c8c9eb7188ece08dc7dc7b46e29000bf048ccbddb758ebcb41f62862 |
关
peak_engines -0.2.8-cp32-abi3-macosx_10_9_intel.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | b0aa2ca6b228953dd73625002c54568f31f7da4fffca1efb6c8a7b728ae766f5 |
|
| MD5 | c7c08559de6c805a5f5672343ae09d06 |
|
| 布莱克2-256 | 21b3b28cfda3a336d6770da34465cda4ec132408e28d2d101da9c15500454457 |
关
peak_engines -0.2.8-cp27-cp27mu-manylinux1_x86_64.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 494cfb20e08d98a7c8ba836665c598811a7f5010a0955ce45c748086857bd901 |
|
| MD5 | e493ccd17fc0f44859eb27b552630da1 |
|
| 布莱克2-256 | 95a35af0985586d6e3b29ca26e637feb0375bcdc8f93936bd167d924ed2ef3e0 |
关
peak_engines -0.2.8-cp27-cp27mu-macosx_10_9_intel.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 5a72b2c4423c59ef6aedb5b62390d86347c82242b6ece047180cdf45dfa8aa3f |
|
| MD5 | 3ff8b0d0f654e06572d987f964913378 |
|
| 布莱克2-256 | 9deb675a5eb22a2d6a52d7adc8578e5aea7878bd32d34158c72f2f8a056d468f |
关
peak_engines -0.2.8-cp27-cp27m-manylinux1_x86_64.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | b0a6d39dbed3b2f5aea97811d70be94ed9013a5610121c39535a730da8d9254e |
|
| MD5 | 2b277454d89615d50169a84f77a04473 |
|
| 布莱克2-256 | 7a5179f7c79b4a99c28b525a8f498fa6a51325a0c673e773ac4a5183d0ac7e0d |
关
peak_engines -0.2.8-cp27-cp27m-macosx_10_9_intel.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 79600d7242d574cd46f4bbc051f4b7ff67c1da38230d9722e25d8758e6a967d3 |
|
| MD5 | b341b65d0f4f6ec867a6b8d46764908c |
|
| 布莱克2-256 | 57dfc7afeb593097fb4f17c11fcb63d9dadb067726a1b91c437683970c5080cf |