整理了一些工作中做策略时常用到的函数类型,并画出了各种函数的分布图,在设计策略时可根据某个数据项的期望影响值来匹配以下的函数即可。
一、对数函数
常见的几种对数函数曲线如下:
Fig1. y=log(x+1)、y=x/log(x+1)和y=x/log(x+2)在原点附近的变化趋势 Fig2. y=log(x+1)、y=x/log(x+1)和y=x/log(x+2)原理原点的变化趋势由上面两图可以看出:
1、当x=0时,y=log(x+1)和y=x/log(x+2)都为0,y=x/log(x+1)的值为ln(10);
2、随着x的增加,y=x/log(x+1)和y=x/log(x+2)的变化趋势一致,且曲线看上去几乎为一条;
3、y=log(x+1)的曲线始终贴着x轴在延伸。当x较小时,y=log(x+1)的变化较大;当x不断增大时,函数曲线变化得越来越慢。
从对数函数的变化趋势来看,其应用的场景可以是:变量x在某个阈值范围时,y值变化明显;随着x的增加,y的变化降低或几乎无影响的场景。
在具体应用中可基于业务场景对函数的参数进行适当调整,下面可以详细看下各类函数在不同参数下的变化。
1、y=A*log(x+1)+C
Fig3. y=A*log(x+1)+C如Fig3所示:
1.1、当x较小时,A可用来调节函数的凸度,A越大函数的曲线越凸;
1.2、当x较大时(即函数趋于稳定时),A越大,离x轴越远;
1.3、C可用来上下平移。
2、y=A/log(Bx+1)+C
Fig4. y=A/log(Bx+1) +C如Fig4所示:
2.1、A可用来调节曲线与x轴的距离,A越大曲线离x轴越远,但与y轴的距离变化不大;
2.2、B可用来调节函数凹点离原点的距离,B越小,曲线离原点越远,凹度越小,且离x和y轴的距离几乎相同;B越大,曲线离原点越近,凹度越大,但曲线靠近y轴的速度要大于靠近x轴的速度;
2.3、C可用来上下平移。
3、y= A*x/log(Bx+1)+C
Fig5. y=A/log(Bx+1) +C Fig6. y=A*(x+B)/log(x+1)如Fig5、Fig6所示:
3.1、A可用来调节曲线与x轴的距离,A越大,曲线离x轴越远;x=0处;
3.2、B可用来调节x=0时,y值离原点的距离;B越大,x=0时的y值越大(也可以用A来调节,但A增大的同时,曲线远离x轴的增速远大于离原点的增速);
3.3、曲线x/log(x+1)不过原点,曲线x/log(x+2)会过原点
3.4、C可用来上下平移。
二、指数函数
指数函数在策略中用的不多,但基于指数函数的变形函数却很好用,例如sigmoid函数:1/(1+e^(-x)),其在机器学习及神经网络中就有广泛的使用。目前工作中不常用,下图是不同参数的指数函数曲线的变化趋势,若是谁有好的应用场景也可告诉我^_^
y=A*e^(B*x)+C
Fig7. y= A*e^(B*x)+C从Fig7. 中可以看出:
1、A可以用来调整与y轴的交点的大小,同时保持曲线调整前后的相对位置不变;
2、B可用来调节曲线与y轴的距离,B越大,曲线离y轴越近。
3、C可用来上下平移。
三、幂函数
幂函数中比较常见的是开根号的形式,该形式经常被用作降热类的策略中,从下图曲线中可以看出来,当x不断增大时,x^(1/2)和x^(1/3)的值并没有增大太多,而是沿着x轴逐渐增加的。
Fig8. y=x²,y=x^3,y=x^(1/3)和y=x^(1/2)自变量在区间[0,1]的变化趋势 Fig9. y=x²,y=x^3,y=x^(1/3)和y=x^(1/2)在x较大时的变化趋势从以图Fig8、Fig9中可以看出来:
1、当幂小于1时,幂的值越小,曲线离x轴越近;当幂大于1时,幂的值越大,曲线离y轴越近;
2、当变量在[0,1]范围且变量间的差很小时,指数函数是用来做区分度较好的选择。当变量聚集在[0,0.5],可选择幂小于1的数;当变量聚集在[0.5,1],可选择幂大于1的数。
ps:图Fig9中也加入了指数函数,可以看出e^x和x^3大概在[1.86,6.41]和[4.5,93.4]相交,即x在[1.86,4.5]时,x^3的值大于e^x。
四、混合对比
将三类函数的曲线画在一起后,它们的相对关系如下图:
Fig10. 三类函数在x取值较小时的变化趋势对比 Fig11. 三类函数在x取值较大时的变化趋势对比可以看出, y=x²,y=x^3,y=x^(1/3)和y=x^(1/2)在x在正数区间内, e^x、2^x和x^2的变化趋势相近;e^(-x)、x^(1/2)和1/log(x+1)的变化趋势相近。2^x和x^2在[2,4]和[4,16]相交,即x在[2,4]时,x^2的值大于2^x。
另外还有些常用的有界函数,如取值范围在[-1,1]的双曲正切函数tanh(x)和阶跃函数sgn(x),取值范围在[0,1]的sigmoid函数等。
以上函数的具体应用还需大家去不断地探索发掘,若有其他好的应用也可留言分享给大家^_^
网友评论