本帖最后由 cheng 于 2019-5-30 00:21 编辑
我有500w全量数据样本,每个样本中都有“真实月薪”这个字段数据,我通过对这个字段进行统计,分了共9档(数据呈右偏态分布)[如下图所示],对这些样本打标记;
然后把label作为目标变量y,训练了一个回归模型,预测这个label;
因为是回归模型,预测出的label值是连续值(分类问题的话预测值就是0-8的离散值),e.g., 是1.42359,4.93830 这种float number
请问:
1. 为什么经过模型训练后(70%训练集,30%测试集)的label的方差,相比之前全量数据9档的方差,要变小了?
2. 需要找到一个方法,将预测出的薪酬label重新映射回月薪值/合理的薪酬区间,薪酬区间该如何设计能把方差重新拉大一点?
第1问现在理解了:
“你设想一下,如果有 50 个工资是 5999 的人,50 个工资是 6001 的人。。。
这样就是 50 个 label 1 ,50 个 label 2
但是你预测出来可能就是 100 个 label 1.4~1.6 。。。
这当然。。。方差就小了。。。”
但第2问还是不太确定,领导提出了2种思路:
1)用动态规划算法,自动找到每个label应从属的最佳薪酬区间(完全不理解)
2)把低薪的区间往低里拉宽,高薪的往高里拉宽,可以引入一个超参数a,比如a=1是区间不动,a=1.2就是把区间拉长1.2倍,a=0.8就是缩短0.8倍,但是得找到一个最优的中间点,假如6000是中间点,那么往左:原本是4000-6000, 乘上a=1.2后,这个区间被拉长成了1600-6000;往右:原本是6000-7000,被拉长成了6000-8400;这个方法不知道怎么找到最优的中间点和最优的a。
我猜一下,是不是要找到原始全量样本真实薪酬的均值作为最优中间点、比较模型前后label方差缩小了多少倍,这里就乘以多少倍来放大?
我另一个想法是:
想象一个以 label 为x轴,以其对应的真实薪酬数据为y轴,那么原始的分档数据是一条上升的折线;
现在要找到一个预测的label(float num) VS 真实薪酬y 的最优拟合曲线,它有着更大的斜率,使得方差也变大;
直接用了多项式拟合找到这条曲线的表达式,然后输入x=0-8,去倒推y的值,将这些y值作为新的薪酬区间的临界点;
图3是多项式拟合后的(x, y)的值
不知道思路对不对?
|