逻辑回归
做排序的话用LR和NN比较多,像GBDT这种模型也是可以输出概率值。
能不能找一函数将连续的y值约束到某一个范围内,常见的范围是0-1(概率)。
这是非凸函数,即有很多个洼点。
损失函数不一定都要求是非凸的,神经网络里面用的loss function就是非凸的,不过他用的是SGD,保证随机找一个接近全局最优点即可。
在负样本的情况下,如果h_θ(x)预测出来是正样本概率很高0.99,那么损失函数负log之后的损失值也会非常大。
如果预测的值和我真实的值差别越大,那么损失函数计算的结果值就会越大。
但是现实中的分类一般是多分类,不是二分类,在多分类的情况下,使用的是上面式子的拓展形式。
在样本不均衡的情况,通过下采样等方式让样本尽量均衡。
上采样,通过拷贝样本来达到样本均衡会带来一个问题 过拟合。千万不要在样本的量级相差极大的情况下,试图用上采样的方式去解决unbalance的问题。
SVM与分类
神经网络与分类
SVM+kernel理论上可以做非线性分割,但是他比较慢,另外如果样本不是很合适的话,效果也会不太好。工业界,特别是数据量大的时候,大部分用的都是linear LR或者linear SVM。 如果要完成一些非线性切分的话,你需要手动的去构造一些特征,已经设定好的,高次的,可以完成非线性切分的这样一些映射,但是在工业界你很难知道怎样去构造这些特征。
神经网络完成非线性切分
神经网络层数与分类理解
神经网络之BP算法
分批次,在每个批次上求梯度。BP算法是来帮助求梯度的。 神经网络里面最优化算法叫SGD,而SGD要使用到梯度,所以求梯度要借助于BP算法。
BP 算法执行的流程
在手工设定了神经网络的层数,每层的神经元的个数,学习率 η(下面会提到)后,BP 算法会先随机初始化每条连接线权重和偏置,然后对于训练集中的每个输入 x 和输出 y,BP 算法都会先执行前向传输得到预测值,然后根据真实值与预测值之间的误差执行逆向反馈更新神经网络中每条连接线的权重和每层的偏好。在没有到达停止条件的情况下重复上述过程。
其中,停止条件可以是下面这三条:
● 权重的更新低于某个阈值的时候
● 预测的错误率低于某个阈值
● 达到预设一定的迭代次数
分类与排序
如果数据量不是那么大的话,可以用RBF kernel,用注意加正则化项。如果数据量特别大的话,建议把特征离散化,拉高维度,然后用linear SVM。
神经网络的学习能力特别强,但它是个黑盒不具解释性,可调性不高。
神经网络要注意控制层数和样本的个数。
LR的损失函数是交叉熵,SVM使用的是hinge loss。LR天生可以产出概率,而SVM需要根据样本到超平面的距离去做一个映射。LR简单,可解释性强。 SVM会有点慢,但他的健壮性很强,他不会因为样本的不同分布,而使得决策边界左右移动。