我正在寻找一些关于搜索引擎学习排名方法的建议。我用以下数据创建了一个数据集:
query_dependent_score, independent_score, (query_dependent_score*independent_score), classification_label
query_dependent_score
是 TF-IDF 分数,即相似性 b/w 查询和文档。
independent_score
是文档的查看时间。
将有3个班级:
- 0(不相关),
- 1(相关的种类),
- 2(最相关)
我总共有 750 个查询,我收集了每个查询的前 10 个结果,所以我总共有 7500 个数据点。
我一直在考虑估计一个相关函数,例如:
w0 + w1*query_dependent_score + w2*independent_score + w3*(query_dependent_score*independent_score)
我可以清楚地看到这就像一个分类问题,但我想要一些关于这是否是解决这个问题的正确方法的信息。
我参考了机器学习技术来计算加权平均权重?一些想法。
以下是我编写的代码:
from sklearn.linear_model import LogisticRegression
import numpy as np
DATASET_PATH = "..."
search_data = np.genfromtxt(DATASET_PATH, delimiter=',', skip_header=1, usecols=(1, 2, 3, 4))
document_grades = search_data[:, 3:4]
document_signals = search_data[:, :3] # This has 3 features.
total_rows = np.shape(search_data)[0]
split_point = int(total_rows * 0.8)
training_data_X, test_data_X = document_signals[:split_point, :], document_signals[split_point:, :]
training_data_y, test_data_y = document_grades[:split_point, :], document_grades[split_point:, :]
clf = LogisticRegression(multi_class="multinomial", solver="lbfgs")
clf.fit(X=training_data_X, y=training_data_y.ravel())
print(clf.classes_) # [0, 1, 2]
print(clf.coef_) # This is a 3 x 3 matrix?
print(clf.intercept_) # An array of 3 elements?
基于sklearn
的文档coef_
应该给我的值w1
,w2
和w3
,并且intercept_
应该给我的值w0
。
但是我有一个矩阵和一个用于这些权重的数组。我不确定如何获取相关函数的权重值?
我正在研究第一次学习排名,所以欢迎任何建议。