首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个非常小的数据集的统计推断

一个非常小的数据集的统计推断
EN

Data Science用户
提问于 2018-03-15 17:10:57
回答 2查看 329关注 0票数 0

我在机器学习方面已经工作了大约一年,但主要是使用大型数据集。但是,我目前正在处理一个非常小的数据集的问题。这是我的问题:我正在制造一种火箭燃料,含有4种成分,x1,x2,x3,x4,我想要最大限度地提高反应强度,y。我已经将它们混合在下面的排列中,以得到相应的值。

  1. (0.9)x1 + (0.0)x2 + (0.1)x3 + (0)x4 = 16.5
  2. (0.0)x1 + (0.9)x2 + (0.1)x3 + (0)x4 = 8.6
  3. (.45)x1 + (.45)x2 + (0.0)x3 + (0.1)x4 = 12.6
  4. (0.6)x1 + (0.3)x2 + (0.05)x3 + (.05)x4 = 18.9
  5. (0.3)x1 + (0.9)x2 +(0.0 5)x3+ (.05)x4 = 9.8我的下一个问题是,我应该如何设计我的下几种混合物以使反应强度最大化?你能提出任何算法或统计框架让我开始吗?非常感谢。
EN

回答 2

Data Science用户

发布于 2018-03-15 19:48:33

有两个单独的问题:

  1. 取样-选择可选的成分水平,以便下一次实验运行。如果您只有4个解释变量,只需绘制它们。要么是成对的,要么是一对3d图。在y或z轴上使用结果变量。然后,您将在数据中看到趋势。您可以决定获得更多的数据用于插值(在您已经拥有的数据点之间)或外推法(数据超出当前范围)。有一些框架,比如贝叶斯优化,但是考虑到小维度,这是太多的工作了。
  2. 推断-预测新数据的性能。考虑到到目前为止所见的数据(样本数据),估计参数。在您的例子中,这将估计这4种成分中的每一种的贡献,无论是单独的还是交互的。这些参数可以是标量系数或分布
票数 1
EN

Data Science用户

发布于 2019-01-21 17:41:29

这对于主动学习来说是一个完美的问题。基于贝叶斯优化的方法对于优化代价昂贵的黑匣子函数(即在实验室中进行实验)具有特别强大的作用。有几个BO包可能是有兴趣的,马丁·克里泽的博客有一个很好的概述。

我注意到你上一次实验中的特性加起来并不等于1,我假设这是一个错误。在演示中,我将该条目更改为x2 = 0.6。

下面是我在python中使用GPyOpt (一种基于高斯过程的包)提供的示例:

代码语言:javascript
复制
import numpy as np
import GPyOpt

x_init = np.array([[0.9,0.0,0.1,0.0],
                   [0.0,0.9,0.1,0.0],
                   [0.45,0.45,0.0,0.1],
                   [0.6,0.3,0.05,0.05],
                   [0.3,0.6,0.05,0.05]])

y_init = np.array([[16.5],[8.6],[12.6],[18.9],[9.8]])*(-1)

domain = [{'name': 'x1', 'type': 'continuous', 'domain': (0,1.0)},
        {'name': 'x2', 'type': 'continuous', 'domain': (0,1.0)},
        {'name': 'x3', 'type': 'continuous', 'domain': (0,1.0)},
        {'name': 'x4', 'type': 'continuous', 'domain': (0,1.0)}        
        ]

constraints = [
        {'name':'const_1', 'constraint': '(x[:,0] + x[:,1] + x[:,2] + x[:,3]) - 1 - 0.001'},
        {'name':'const_2', 'constraint': '1 - (x[:,0] + x[:,1] + x[:,2] + x[:,3]) - 0.001'}
        ]

bo_step = GPyOpt.methods.BayesianOptimization(
        f = None,
        domain = domain,
        constraints = constraints,
        X = x_init,
        Y = y_init
        )

x_next = bo_step.suggest_next_locations()

print(x_next)
print(np.sum(x_next))

备注:

(1) GPyOpt只接受某种形式的约束,这就是为什么在区间0.999,1.001上存在2的原因。

(2) GPyOpt的建立是为了最小化函数。因此,我将目标值乘以-1。

这个例子建议您的下一个实验应该在以下位置运行:

x1 = 0.69 x2 = 0.21 x3 = 0.08 x4 = 0.02

BO算法可以根据您对现有信息的偏好和探索空间的新领域进行调整,以给出不同的结果。我不知道GPyOpts标准设置是什么,所以如果您感兴趣,可能值得查看文档。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/29128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档