(原创)
机器学习之分类算法原理小记:
(1)逻辑回归 Logistic regression
用逻辑函数进行二分类建模,逻辑函数将R->[0,1],代表为Sigmoid函数,构建损失函数(对数似然函数),利用梯度下降去优化参数
(2)朴素贝叶斯
利用贝叶斯公式算某些特征下某分类的概率,进而决定属于哪个分类,算概率的时候naive的认为这些特征是独立的。
拉普拉斯平滑化(Laplace smoothing),引入拉普拉斯系数避免算某些概率的时候算出来0
(3)支持向量机
线性可分的,找margin最大的超平面(hyperplanes),
线性不可分的,寻求非线性的映射φ,将原数据映射到另一个空间下后线性可分,
优化损失函数时,利用核函数(kernel function)算向量间内积,而避免直接运算φ(x)和φ(x')的内积
(4)k邻近算法
由邻近的k个元素的类别来决定分类。k值大小和元素间距离的算法是关键。
(5)决策树算法,随机森林
先算信息熵,条件熵,
ID3:使用 信息增益 最大的特征作为根节点,再递归建立决策树
C4.5:使用 信息增益率 最大的特征作为根节点,再递归建立决策树
CART:使用 基尼系数增益 最大的特征作为根节点,建立 二叉树
随机森林:ensemble的方法,随机bagging训练数据或特征,产生多棵决策树
(6)ANN (artificial neural network)神经网络
结构:输入层,隐含层(一层或多层),输出层
选择合适的激活函数(ReLU,tanh,sigmoid等)来激活非线性。
反向传播算法(Backpropagation Algorithm):核心原理是 偏导链式法则 ,由输出层倒过去算输出对上一层节点的偏导数
(7)CNN (convolutional neural network) 卷积神经网络
结构:输入层,卷积层(kernel,filter),池化层(pooling),全连接层(fully connection),输出层
filter的参数:个数,大小,步长,零填充
非线性激活函数:ReLU,sigmoid等
pooling池化层:常用有max-pooling,mean-pooling等
dropout:随机移除一些神经元,防过拟合