LR注意点

下面这个人的笔记做的还不错

http://www.cnblogs.com/jianzhitanqiao/p/5488659.html

1. Logistic回归的决策函数是sigmoid函数,那么它的判定边界怎么求

突然想通了,是f(z) = sigmoid(z)

当z >0时,输出1

当z<0时,输出0

那么函数z=0就是判定边界

关于z的解析式可以是高次的多项式函数

逻辑回归的损失函数:---如果将sigmoid函数代入最小二乘会得到一条并不收敛的曲线

sigmoid最小二乘损失函数

Logistic回归损失函数若使用最小二乘得到的是非凸函数,容易陷入局部的极小值。

解决方法:

似然函数costfunc

似然函数进行极大似然估计


加入L2正则

LR对于样本的处理

样本太大怎么办?

1. 采样再 LR

2. 分布式上 spark mllib

3. 将特征 离散化为 0-1,这样虽然训练数据量没有变,特征向量还变长了,

但是 因为 0-1 操作,使得计算速度变快

4. 连续值的特征,最好 scaling一样,使得因子图 不是 特别的细长,而是 圆形,这样利于优化的速度,这个也是可以 加速训练的

--注意样本的平衡

·-》对样本分布敏感

--》下采样 --》上采样

--》修改loss func 给予不同权重

--》采样后的预测结果,用排序作ok,用作判定请还原

--使用LR 的tech关于特征的聚类

提前,将一些特征先 hash,比如 uuid?

---LR也能用于特征选择(去除theta为0的特征,选择theta大的特征)

-------------关于模型调优

假设只看模型:

---选择合适的正则化(L1,L2,L1+L2):L2的准确度高一些,但是收敛时间长一些。L1是截断性效益【可以做一定程度的特征选择,数据量特别大用L1】

--正则化系数C(lambda)【表示惩罚程度有多高】

--收敛阈值e,迭代次数

--调整loss func给定不同权重

Bagging或其他方式的模型融合

--最优化算法选择(‘newton-cg’,'lbfgs'--spark里面用的这个,'liblinear'--默认使用梯度下降,'sag')

小样本liblinear

大样本sag

多分类‘newton-cg’和‘lbfgs’【也可以用liblinear和sag的one-vs-rest】


-----liblinear--常用库【台湾大学】

--------存储方式:libsvm稀疏向量存储格式,海量数据下单机速度还ok

-------高维度离散化特征,准确率逼近非线性切分

------参数调节方便

SKlearn中的LR实际上就是liblinear封装的

L1正则和L2正则的区别

L2正则是一种缩放效应,会让大部分特征都拿到权重但是,幅度小

L1正则是截断式效应,有可能很多特征的权重会变为0






2. SVM适合数据量比较小的情况,因为计算量大

并且对于非均衡样本,效果较差

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容