这种情况经常出现,令人惊讶的是似乎没有标准解决方案。假设我有一堆数值属性--可以想象使用这个来根据像学生/教师比率或污染等多个组成部分得分来排名大学或城市--并且想把它们转换为单个得分。
我想拿一些例子进行插值以获得一致的评分函数。
也许有标准的多维曲线拟合或数据平滑库之类的东西,使此过程变得简单明了?
更多例子:
- 将两个血压数字转换为一个得分,表示您的血压接近最佳状态
- 将身体尺寸测量转换为一个单一的度量,表示您离理想身材有多远
- 将一组时间(100米短跑等)转换为某种运动的健康得分
这种情况经常出现,令人惊讶的是似乎没有标准解决方案。假设我有一堆数值属性--可以想象使用这个来根据像学生/教师比率或污染等多个组成部分得分来排名大学或城市--并且想把它们转换为单个得分。
我想拿一些例子进行插值以获得一致的评分函数。
也许有标准的多维曲线拟合或数据平滑库之类的东西,使此过程变得简单明了?
更多例子:
S(X; X0,X1,X2,... Xn)
,其中X
是未知的,Xi
是已知的样本,具有已知的分数Si
;插值是这样的,即S(Xi; X0,X1,X2,... Xn)= Si
。S(Xi; X0, X1, X2, ... Xn) ~ Si
达到一定的精度。优点是这些函数更加平滑,实际上可以“修正”输入数据中的错误。如果您的标签信息是序数(即排名数据),那么您应该使用学习排序方法之一。其中一个是SVM Rank。
它的工作原理是:将数据集放入svmlight格式的文件中,并通过svm_rank_learn
训练分类器。您可能需要调整参数,这可能会给您更好的准确性。然后,将另一个数据集(具有未知排名)馈送到svm_rank_classify
中,将为您提供分数,您可以将其用于排名或单独使用。
另一件要提到的事情是,默认情况下SVM Rank使用线性核函数,这意味着评分函数将是属性的加权组合。您可以尝试其他内核(如径向基函数),但SVM Rank的作者警告您:
您原则上可以使用SVMrank中的内核选项'-t',就像在SVMlight中一样,但它非常缓慢,您最好使用SVMlight。