机器学习算法总结
算法学习暂时告一段落,葵锅我把自己所理解的算法原理,通过通俗的语言阐述给大家,希望能帮助你,也欢迎大家及时指正!最后有附算法实现代码。
一、k-NN
k-NN 算法(k-Nearest Neighbor),也叫 k 近邻算法,是最简单的算法,算法中的守门员。若葵锅使用了一个高大上的算法,最后评估结果不如k-NN,那这个算法就不适用该业务场景。
1、基本原理
寻找出某样本附近最近的k个样本,然后算出不同标签(或叫类别也叫y)下样本数,最后把该样本的标签标记为样本数最多所属标签。
**官方定义:**找到离其最近的k个样本,并将这些样本称之为「近邻」(nearest neighbor);对这k个近邻,查看它们的都属于何种类别;然后根据“少数服从多数,一点算一票”原则进行判断,数量最多的的标签类别就是新样本的标签类
别。
2、实现过程
2.1 算距离
一般选择欧式距离或余弦距离,相当于计算相似度。
2.2 找邻居
将距离进行排序,找出距离最近的k个训练对象放入邻居集合。重点是寻找最佳的K,一般使用交叉验证方法,并画出学习曲线。
2.3 做分类
自邻居集合中取出前k名,查看它们的标签,对这k个点的标签求和,以多数决,得到可能类别。需要加入惩罚项时,权重就是距离的倒数,然后对权重求log,最后按类别分组求权重求log后之和。
3、注意事项
只要是距离类算法必须做归一化处理,消除量纲的影响。归一化公式是(当前数据-最小值)/(最大值-最小值)。也可以直接调用preprocessing.MinMaxScaler实现。先分训练集和测试集,再归一化!
4、模型特点
1、应用广泛
2、计算效率低,耗费计算资源较大
3、抗噪性较弱,对噪声数据(异常值)较敏感
4、模型不稳定,可重复性较弱
5、需要进行归一化处理(所有的距离类算法都这样)
二、决策树
树模型通过递归式切割的方法来寻找最佳分类标准,进而最终形成规则。分成分类树和回归树两类。采用‘分而治之’原则,解释性非常强。
1、基本原理
使用熵判断特征所属结点类型生成分类的树型结构(二叉树或多叉树)。
2、实现过程
2.1 特征选择
计算不纯度,方法有熵、基尼系数、误分类误差、信息增益、信息增益比。选择不纯度值最小的作为根结点或内部结点。
2.2 生成树结构
依据递归原则划分数据集,生成树型结构。
递归结束条件是:
1.程序遍历完所有划分数据集的属性;
2.每个分支下的所有实例都具有相同的分类;
3.当前结点包含的样本集合为空,不能划分。
2.3 剪枝
所谓剪枝是指在决策树中去除部分叶结点。常见策略有预剪枝(Pre-Pruning)和后剪枝Post-Pruning)。
剪枝参数有:树的最⼤大深度、分支后的子结点最小样本数、结点最小样本数、特征个数、设定信息增益阈值。
三、朴素贝叶斯
1、基本原理
依据贝叶斯公式P(类别|特征)=P(特征|类别)P(类别)/P(特征),再计算似然P(类别1|特征)😛(类别2|特征)…😛(类别k|特征)(k是类别种数),P(类别i|特征)比值大,说明此样本属于类别i可能性最大,即判定此样本属于类别i。
四、线性回归
1、基本原理
依据训练集数据寻找标签Y和特征X之间的相关关系,构造预测函数Y=Xω,从而预测新数据结果。
五、岭回归
引入L2范式正则化,解决多重共线问题,常用于特征选择。
六、Lasso
引入L1范式正则化,限制多重共线问题,常用于特征选择。
七、逻辑回归
1、基本原理
构造sigmoid函数
y
=
1
/
(
1
+
e
−
t
)
(
t
=
β
0
+
β
X
)
y =1/(1+e^{-t})(t=β_0+βX)
y=1/(1+e−t)(t=β0+βX)
y大于1/2的样本划分为1类;y小于1/2的样本划分为0类。
八、K-Means
1、基本原理
找出最优的K个质心,计算各点到质心的相似度(计算距离),相似度一致的点归为同一类。计算距离的方法有曼哈顿距离、欧氏距离、余弦距离、杰卡德距离。使用轮廓系数寻找最优的K,K也是分类组数。
九、随机森林分类器
相当于Bagging+决策树。随机选择数据和特征构建多个决策树,由多个决策树判定结果(少数服从多少原则)。
十、AdaBoost分类器
先初始化训练数据权重,再迭代训练弱分类器,不断调整权重,直到达到最优结果停止调整权重,最后把各个弱分类器组合成强分类器。会出现过拟合现象。
十一、SVM
先构建最佳的核函数,再寻找最优的决策边界,决策边界把不同类别的样本划分界限。决策边界可能是线、也可能是面,即超平面。
以上内容,只是简单的介绍各个算法原理,实际数学原理很复杂,需要扎实的数据理论基础才能理解透彻,其中最复杂的是SVM算法。
附件: Sklearn算法实现完整代码