机器学习算法分类
- 监督学习(预测) 特征值+目标值
- 分类(目标值离散型) k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络
- 回归(目标值连续型) 线性回归、岭回归
- 标注 隐马尔可夫模型
- 无监督学习 只有特征值
- 聚类 k-means
学习方向
- sklearn数据集与估计器
- 分类算法-K近邻法
- 近邻算法实例
- 分类模型的评估
- 分类算法-朴素贝叶斯算法
- 朴素贝叶斯算法实例
- 模型的选择与调优
- 决策树与随机森林
sklearn中机器学习算法实现-估计器
估计器(estimator)是一个重要的角色,是一类实现了算法的API集合类
- 用于分类的估计器:
- sklearn.neighbors k-近邻法
- sklearn.naive_bayes 贝叶斯
- sklearn.linear_model.LogisticRegression 逻辑回归
- sklearn.tree 决策树与随机森林
- 用于回归的估计器:
- sklearn.linear_model.LinearRegression 线性回归
- sklearn.linear_model.Ridge 岭回归
1
2
3
4
5# 调用fit()训练模型
fit(x_train, y_train)
# 输入测试集的数据
y_predict = predict() # 预测结果
score(x_test, y_test) # 求预测的准确率
详细算法
1. k-近邻法(KNN)
在特征空间中,如果一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别。实际应用的比较少。注:距离公式为欧式距离。
1 | # 首先需要标准化 |
算法的优缺点:
优点:原理简单,易于实现。无需训练。
缺点:容易受异常点影响;计算距离的算法时间复杂度很高;k值取很大很小或取值不当的时候容易受影响。
2. 朴素贝叶斯(最好特征独立)
贝叶斯方法是以贝叶斯原理为基础,使用概率统计的知识对样本数据集进行分类。由于其有着坚实的数学基础,贝叶斯分类算法的误判率是很低的。贝叶斯方法的特点是结合先验概率和后验概率,即避免了只使用先验概率的主观偏见,也避免了单独使用样本信息的过拟合现象。贝叶斯分类算法在数据集较大的情况下表现出较高的准确率,同时算法本身也比较简单。
常用于文档分类
- 联合概率 P(A,B) => P(A,B) = P(A)P(B)
- 条件概率(相互独立) P(A|B) => P(A1,A2|B) = P(A1|B)P(A2|B)
设有样本数据集D={d1,d2,d3,...dn}
,对应样本数据的特性属性集为X={x1,x2,x3,...xd}
类变量为Y={y1,y2,...,ym}
,即D
可以分为ym
类别。其中x1,x2,x3,...xd
相互独立且随机,则y
的先验概率Pprior = P(Y)
,Y
的后验概率Ppost = P(Y|X)
,由朴素贝叶斯算法可得,后验概率可以由先验概率Pprior = P(Y)
、证据P(X)
、类条件概率P(X|Y)
计算出:P(Y|X) = {P(Y)P(X|Y)}/P(X)
朴素贝叶斯基于各特征之间相互独立,在给定类别为
的情况下,上式可以进一步表示为下式:
由以上两式可以计算出后验概率为:
由于P(X)
的大小是固定不变的,因此在比较后验概率时,只比较上式的分子部分即可。因此可以得到一个样本数据属于类别
的朴素贝叶斯计算如下图所示:
优点:
- 朴素贝叶斯算法假设了数据集属性之间是相互独立的,因此算法的逻辑性十分简单,并且算法较为稳定,当数据呈现不同的特点时,朴素贝叶斯的分类性能不会有太大的差异。换句话说就是朴素贝叶斯算法的健壮性比较好,对于不同类型的数据集不会呈现出太大的差异性。当数据集属性之间的关系相对比较独立时,朴素贝叶斯分类算法会有较好的效果。
缺点:
- 属性独立性的条件同时也是朴素贝叶斯分类器的不足之处。数据集属性的独立性在很多情况下是很难满足的,因为数据集的属性之间往往都存在着相互关联,如果在分类过程中出现这种问题,会导致分类的效果大大降低。