Я использую библиотеку scikit-learn
для выполнения гребенчатой регрессии с весами на отдельных образцах. Это может быть сделано: esimator.fit(X, y, sample_weight=some_array)
. Интуитивно я ожидаю, что большие веса означают большую релевантность для соответствующей выборки.
Однако я протестировал описанный выше метод на следующем двумерном примере:
from sklearn import linear_model
import numpy
import matplotlib.pyplot as plt
#Data
x= numpy.array([[0], [1],[2]])
y= numpy.array([[0], [2],[2]])
sample_weight = numpy.array([1,1, 1])
#Ridge regression
clf = linear_model.Ridge(alpha = 0.1)
clf.fit(x, y, sample_weight = sample_weight)
#Plot
xp = numpy.linspace(-1,3)
yp=list()
for x_i in xp:
yp.append(clf.predict(x_i)[0,0])
plt.plot(xp,yp)
plt.hold(True)
x = list(x)
y = list(y)
plt.plot(x,y,'or')
Я запускаю этот код и запускаю его снова, удваивая вес первого образца:
sample_weight = numpy.array([2,1, 1])
Полученные линии уходят от выборки, которая имеет больший вес. Это противоречит здравому смыслу, поскольку я ожидаю, что выборка с большим весом будет иметь большее значение.
Я неправильно использую библиотеку или в ней есть ошибка?