我正在分析社交网络中超过6周的用户到userx的距离。

注意:“无路径”表示这两个用户尚未连接(至少是由朋友的朋友)。

              week1      week2    week3    week4    week5   week6
user1        No path    No path  No path   No path   3       1
user2        No path    No path  No path     5       3       1
user3         5          4         4         4       4       3
userN         ...


我想看看用户与userx的连接程度如何。

为此,我最初考虑使用回归斜率的值进行解释(即回归斜率越低越好)。

例如;考虑user1user2它们的回归斜率计算如下。

用户1:

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
X = [[5], [6]] #distance available only for week5 and week6
y = [3, 1]
regressor.fit(X, y)
print(regressor.coef_)


输出为-2.

用户2:

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
X = [[4], [5], [6]] #distance available only for week4, week5 and week6
y = [5, 3, 1]
regressor.fit(X, y)
print(regressor.coef_)


输出为-2.

如您所见,两个用户都获得相同的slope值。但是,user2userx之前一周已与user1连接。因此,应该以某种方式授予user1

因此,我想知道是否有更好的方法来计算我的问题。

如果需要,我很乐意提供更多详细信息。

最佳答案

好吧,如果您想奖励连接持续时间,则可能需要花一些时间进行计算。最简单/最直接的方法是将系数乘以时间:

outcome_measure <- regressor.coef_ * length(y)


如果将其除以2,则其在概念上将与曲线下的面积(AUC)相同:

outcome_measure <- (regressor.coef_ * length(y))/2


因此,第一种方法将得到-4和-6,第二种方法将得到-2和-3。

有点偏离主题,但是如果您使用线性回归进行统计分析(不仅仅是为了获得系数),我可能会添加某种检查以确认其假设是正确的。

关于math - 如何获得趋势的标准化斜率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55275661/

10-12 17:42