如何找到两个输入的模型函数

How to find out a model function for two inputs?

本文关键字:输入 两个 模型 函数 何找      更新时间:2023-09-26

我正在为系统的最终用户的控件做一些机器学习。我基本上是试图根据两个输入来计算延迟数。目前,我收集了一个用户与控件交互所需时间的列表(以毫秒为单位)。我想,基于这两件事,我可以得到一个延迟数。

1) 列表长度

2) 列表中的时间

(每次用户在控件上悬停时,我都会在列表中记录一个值。此外,他们可能会在系统上悬停,但不会在控件上停留)

延迟数只是一个表示在实际下载控件内容之前等待这么长时间的数字。因为如果用户不与控件交互,那么我想要更长的延迟因子,这样可以减少服务器的负载。

我一直纠结的问题是如何使用上面收集的两个值来确定延迟时间。

我想到了4个场景:

1) 如果长列表和平均时间较大,则放入中等延迟时间

2) 如果长列表和平均时间很小,那么放入一个短延迟时间

3) 如果短列表和平均时间较大,则放入长延迟时间

4) 如果短列表和平均时间较小,则放入中等延迟时间

如果列表为空,则可能使用中等延迟因子。

当然还有延迟时间的偏差因子(实际上是第三个输入),因为不同的控制有不同的优先级。

以上4种情况决定了4个极端,当然,内部是一个梯度。我需要一个函数的方程(2个输入(和偏置?)和1个输出,可能类似于b * f(x,y),其中xyf(x,y)[0,1]中)来建模这些信息。

有人知道我如何将上述输入转换为函数并从中获得延迟时间吗?

感谢

这是一个回归问题。您可以在任何机器学习库中使用众多回归模型中的一个。我个人使用scikit学习。您需要的是一个带标签的数据集(X,Y)。X是NxM矩阵,其中,对于作为特征的list_length和average_time,N是样本数量,M是2,X[i,0]是第i个训练样本的list_llength。Y是一个N向量,N[i]是系统需要应用的所需延迟量。给定X和Y,您可以使用scikit learn训练分类器,如您在所提供的链接中所见,然后给定新样本X,模型可以使用回归器的预测函数预测所需的延迟时间。

from sklearn import linear_model
clf = linear_model.LinearRegression()
clf.fit ([[0, 0], [1, 1], [2, 2]], [10, 100, 1000])
clf.predict([[0.5, 0.5]])

在这个从所提供的scikit学习链接复制的例子中,对于样本[0,0]、[1、1]、[2、2],期望的延迟分别为1011001000。拟合函数为您的数据训练和拟合线性模型,使用该模型可以预测新样本,如[0.5,0.5]。

如果您也创建了一个评估集(X,Y),您将能够评估模型的性能并选择最佳回归模型。

正如Afsin所说,这是一个回归问题。有一件事我不一定会同意,那就是回归的类型。我认为,与线性回归模型相比,尝试泊松/负二项回归模型会更好。

这是他们声明的维基百科链接

在统计学中,泊松回归是一种用于对计数数据建模的回归分析形式。

您可以将用户必须等待的秒数视为您试图建模的计数。如果你的数据显示出过度分散的迹象,那么你应该将你的数据建模为负二项回归模型。

下面是一个在R.中如何执行类似操作的示例

数据

age mar doc und cits    
29  Yes 362 7   2   
32  No  210 6   4   
26  Yes 359 6   1   
25  Yes 181 3   1   
30  No  429 7   1   
28  Yes 359 6   0   
30  No  210 4   0   
40  Yes 347 4   0   
30  No  210 5   2   

假设你正在尝试对博士后被引用的次数进行建模。上述数据将存储在一个名为博士后的变量中

citations<-postdoc$cits
married<-postdoc$mar
age<-postdoc$age
prestige<-postdoc$doc
selectivity<-postdoc$und

你必须把已婚视为一个因素,因为这是一个分类变量。根据阅读你的帖子,听起来你不必这么做,但我想我会提到它。

married<-factor(postdoc$mar,levels = c(0,1), labels = c("yes","no"))

这可能是一个可能的回归模型:

citation.model<-glm(citations ~ married+age+prestige+selectivity, family = poisson)

当然,我遗漏了很多,但这是最基本的想法。当然,你必须做一些检查,以确保你的模型非常合适。