本系列目的在于总结每一个分类器的特点(优点、缺点、使用数据类型、使用时的注意事项等)。相关代码自己搜。
python:建议使用2.7
python常用函数库:NumPy、scikit-learn等
python集成环境:anaconda
优点:
1、简单、易于理解
缺点:
1、容易欠拟合,效果不很好
2、要求error函数在当前点是有定义、并且可微
使用数据类型:
1、连续型(不用做离散化处理;但要做归一化)
2、离散型
使用时注意事项:
0、梯度只是方向,步长还要alpha控制,alpha控制不好,很容易造成不收敛
1、注意,我们关心的其实是error的梯度,希望让error尽快变小,所以使用梯度下降,而且方向为error的梯度(回想回归系数w的更新公式)。
2、梯度下降的改进:
基本的随机梯度下降:
来一个样本更新一次梯度
也是一种在线学习算法
改进的随机梯度下降:
alpha随迭代次数逐渐减小,但不要为零:alpha=4/(1.0 + i + j) + 0.01
随机的选择训练样本
使用随机梯度下降,一般需要多跑几遍程序,或使用交叉验证;因为样本选择是随机的,要避免偶然情况。
3、如何处理数据中的缺失值:
类别缺失,只能忽略该样本(此处只考虑有监督学习)
某些特征值缺失:
忽略该样本
用该特征的均值代替
用特殊值代替,如-1、0等
在LR中,特征缺失,我们采用0来替代,这样做有两个直觉:
不会影响系数的更新:we i g h t s = we i g h t s + alpha * e r r o r * d a t a M a t r i x [randIndex] = we i g h t s
不影响分类的结果:由于sigmoid(0) = 0.5,即它对结果的预测不具有任何倾向性