机器学习:从真实标记数据更新权重

时间:2016-08-17 17:25:08

标签: python machine-learning

问题的定义:

  • 我有一些数据可以说2个功能,但没有标记。
  • 我手动创建权重并用分数标记数据
  • 我将数据呈现给有订单的用户并且用户给出了他自己的分数
  • 根据用户的反馈,我想更新权重,分配新分数并按新顺序返回列表。
  • 每次用户提供新标签时都应该继续

从一个角度来看,是成对排名问题的在线学习。

一个简单的插图:

假设我有以下未标记的数据:

import numpy as np
X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])

我手动创建权重并标记数据(这并不意味着此权重是正确的'所以我们不确定标签是否正确)。通过手动创建权重,标签如下:

Y = np.array([1, 1, 2, 2])

我正在使用SGD训练sklearn随机梯度下降算法,其中“铰链”丢失会产生线性SVM(用于“学习排名'”)

from sklearn import linear_model
clf = linear_model.SGDClassifier()
clf.fit(X, Y)

一段时间后,我会获得以前某些数据的正确标签(将其命名为true_data并使用partial_fit将其放入以前的模型中:

x_true_data = np.array([[-1,-1]])
y_true_data = np.array([1])
clf.partial_fit(x_new,y_new)

这会更新权重。我有些担忧:

  • 有没有办法奖励'如果前面的算法能够正确预测结果,或者如果不是true_data则反之?与adaboost类似的东西。
  • 如果true_data数据不多(5-20​​之间)
  • ,此算法的可靠性如何
  • 我可以调整学习率,以便提供更高的价值'到true_data
  • 还有另一种方法来思考这个问题吗?我应该考虑除SVM之外的其他算法吗?

我可以提供一些有用的链接,但如果我继续沿着这条路走下去,我就不会清楚自己的想法:

How to update an SVM model with new data

log.regression vs SGDClassifier

欢迎任何反馈。

0 个答案:

没有答案