特定 group/range 的 ML 准确度
ML accuracy for a particular group/range
我以前在 google 上搜索的一般术语,例如本地化精度、自定义精度、有偏差的成本函数似乎都是错误的,也许我什至没有问正确的问题。
假设我有一些数据,可能是:
- 著名的鸢尾花分类问题
- 猫科动物图片
- 下面是我预测房价的数据集:
在所有这些场景中,我对一个 set/one 数据回归范围的准确性非常感兴趣。
对于鸢尾花,我真的需要 Iris "setosa" 才能正确分类,真的不在乎 Iris virginica 和 Iris versicolor 是否都错了。
对于猫科动物,我真的需要模型来告诉我你是否发现了一只老虎(出于显而易见的原因),无论它是波斯猫还是布偶猫我都不在乎。
对于房价一,我希望将高端房屋误差的准确性降至最低。因为这些错误代价高昂。
我该怎么做?如果我希望 Setosa 被正确分类,删除 virginica 或 versicolour 似乎都是错误的。尝试不同的算法,如 Linear/SVM 等都很好,但它只会提高整体准确性。但我确实需要,例如,正确预测“老虎”,即使以牺牲模型的“整体”准确性为代价。
有没有一种方法可以让我在回归问题的局部化区域或分类问题的特定类别中获得高精度的自定义成本函数?
如果无法回答这个问题,如果您能指出一些我可以 search/research 的术语,我们将不胜感激。
您可以使用权重来实现这一点。如果您使用 scikit-learn 的 SVC class,您可以在构造函数中传递 class_weight
。您还可以在 fit-method.
中传递 sample_weight
例如:
from sklearn import svm
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
clf = svm.SVC(class_weight={0: 3, 1: 1, 2: 1})
clf.fit(X, y)
这样 setosa 比其他 classes 更重要。
回归示例
from sklearn.linear_model import LinearRegression
X = ... # features
y = ... # house prices
weights = []
for house_price in y:
if house_price > threshold:
weights.append(3)
else:
weights.append(1)
clf = LinearRegression()
clf.fit(X, y, sample_weight=weights)
我以前在 google 上搜索的一般术语,例如本地化精度、自定义精度、有偏差的成本函数似乎都是错误的,也许我什至没有问正确的问题。
假设我有一些数据,可能是:
- 著名的鸢尾花分类问题
- 猫科动物图片
- 下面是我预测房价的数据集:
在所有这些场景中,我对一个 set/one 数据回归范围的准确性非常感兴趣。
对于鸢尾花,我真的需要 Iris "setosa" 才能正确分类,真的不在乎 Iris virginica 和 Iris versicolor 是否都错了。
对于猫科动物,我真的需要模型来告诉我你是否发现了一只老虎(出于显而易见的原因),无论它是波斯猫还是布偶猫我都不在乎。
对于房价一,我希望将高端房屋误差的准确性降至最低。因为这些错误代价高昂。
我该怎么做?如果我希望 Setosa 被正确分类,删除 virginica 或 versicolour 似乎都是错误的。尝试不同的算法,如 Linear/SVM 等都很好,但它只会提高整体准确性。但我确实需要,例如,正确预测“老虎”,即使以牺牲模型的“整体”准确性为代价。
有没有一种方法可以让我在回归问题的局部化区域或分类问题的特定类别中获得高精度的自定义成本函数?
如果无法回答这个问题,如果您能指出一些我可以 search/research 的术语,我们将不胜感激。
您可以使用权重来实现这一点。如果您使用 scikit-learn 的 SVC class,您可以在构造函数中传递 class_weight
。您还可以在 fit-method.
sample_weight
例如:
from sklearn import svm
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
clf = svm.SVC(class_weight={0: 3, 1: 1, 2: 1})
clf.fit(X, y)
这样 setosa 比其他 classes 更重要。
回归示例
from sklearn.linear_model import LinearRegression
X = ... # features
y = ... # house prices
weights = []
for house_price in y:
if house_price > threshold:
weights.append(3)
else:
weights.append(1)
clf = LinearRegression()
clf.fit(X, y, sample_weight=weights)