其他分享
首页 > 其他分享> > Task05:掌握基本的分类模型

Task05:掌握基本的分类模型

作者:互联网

1.常用的分类模型简介

sklearn作为机器学习的集成包,囊括了很多常用的机器学习算法,贝叶斯,KNN,逻辑回归,随机深林,决策树,GBDT,SVM都被收录其中。其中KNN属于无监督学习模型,贝叶斯,逻辑回归,随机深林,决策树,GBDT,SVM均属于有监督学习模型。

2.分类模型详解

2.1.朴树贝叶斯


朴素贝叶斯和其他绝大多数的分类算法都不同。对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系,要么是决策函数Y=f(X),要么是条件分布P(Y|X)。但是朴素贝叶斯却是生成方法,也就是直接找出特征输出Y和特征X的联合分布P(X,Y),然后用P(Y|X)=P(X,Y)/P(X)得出。

贝叶斯公式:
P(A|B) = P(A,B) / P(B) ---------条件概率:在事件B发生的前提下,A发生的概率

P(B|A) = P(A,B) / P(A)

所以:P(A,B) = P(A|B)P(B) = P(B|A)P(A)

所以贝叶斯公式:P(A|B) = (P(B|A)P(A)) / P(B) = P(A) * (P(B|A) / P(B))

这里:P(A) 为先验概率,即在B事件之前,对A事件概率的一个判断;P(A|B) 为后验概率,即B事件发生后,对事件A概率的重新评估;(P(B|A) / P(B)) 为可能性函数,这是一个调整因子,使得预估概率跟接近真实概率

最后可以将贝叶斯公式总结为:后验概率 = 先验概率 * 调整因子
公式可以理解为:P(A|B) = (P(B|A)P(A)) / P(B) ==> P(A|b1,b2,b3…) = (P(b1,b2,b3…|A)P(A)) / P(b1,b2,b3…)

即:在出现特征b1,b2,b3…的条件下,A事件发生的概率

当b1,b2,b3…事件相互独立的前提下:P(b1,b2,b3…|A) = P(b1|A)P(b2|A)P(b3|A)…

sklearn代码如下

Multinomial Naive Bayes Classifier

from sklearn.naive_bayes import MultinomialNB
clf = MultinomialNB(alpha=0.01)
clf.fit(train_x, train_y)

2.2KNN

简单地说,k近邻算法采用测量不同特征值之间的距离方法进行分类。

k-近邻算法

优点:精度高、对异常值不敏感、无数据输入假定。
缺点:计算复杂度高、空间复杂度高。 适用数据范围:数值型和标称型。
      k-近邻算法(kNN),它的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。

KNN Classifier

from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier()
clf.fit(train_x, train_y)

2.3逻辑回归

  1. 因变量为二分类的分类变量或某事件的发生率,并且是数值型变量。但是需要注意,重复计数现象指标不适用于Logistic回归。

  2. 残差和因变量都要服从二项分布。二项分布对应的是分类变量,所以不是正态分布,进而不是用最小二乘法,而是最大似然法来解决方程估计和检验问题。

  3. 自变量和Logistic概率是线性关系

  4. 各观测对象间相互独立。

原理:如果直接将线性回归的模型扣到Logistic回归中,会造成方程二边取值区间不同和普遍的非直线关系。因为Logistic中因变量为二分类变量,某个概

率作为方程的因变量估计值取值范围为0-1,但是,方程右边取值范围是无穷大或者无穷小。所以,才引入Logistic回归。

Logistic回归实质:发生概率除以没有发生概率再取对数。就是这个不太繁琐的变换改变了取值区间的矛盾和因变量自变量间的曲线关系。究其原因,是发生和未发生的概率成为了比值,这个比值就是一个缓冲,将取值范围扩大,再进行对数变换,整个因变量改变。不仅如此,这种变换往往使得因变量和自变量之间呈线性关系,这是根据大量实践而总结。所以,Logistic回归从根本上解决因变量要不是连续变量怎么办的问题。还有,Logistic应用广泛的原因是许多现实问题跟它的模型吻合。例如一件事情是否发生跟其他数值型自变量的关系。

Logistic Regression Classifier

from sklearn.linear_model import LogisticRegression
clf = LogisticRegression(penalty=‘l2’)
clf.fit(train_x, train_y)

2.4随机深林

随机森林由Leo Breiman(2001)提出的一种分类算法,它通过自助法(bootstrap)重采样技术,从原始训练样本集N中有放回地重复随机抽取n个样本生成新的训练样本集合训练决策树,然后按以上步骤生成m棵决策树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。其实质是对决策树算法的一种改进,将多个决策树合并在一起,每棵树的建立依赖于独立抽取的样本。 
单棵树的分类能力可能很小,但在随机产生大量的决策树后,一个测试样本可以通过每一棵树的分类结果经统计后选择最可能的分类。 
随机森林大致过程如下: 
1)从样本集中有放回随机采样选出n个样本; 
2)从所有特征中随机选择k个特征,对选出的样本利用这些特征建立决策树(一般是CART,也可是别的或混合); 
3)重复以上两步m次,即生成m棵决策树,形成随机森林; 
4)对于新数据,经过每棵树决策,最后投票确认分到哪一类。 
2.随机森林特点: 
随机森林有很多优点: 
1) 每棵树都选择部分样本及部分特征,一定程度避免过拟合; 
2) 每棵树随机选择样本并随机选择特征,使得具有很好的抗噪能力,性能稳定; 
3) 能处理很高维度的数据,并且不用做特征选择; 
4) 适合并行计算; 
5) 实现比较简单; 
缺点: 
1) 参数较复杂; 
2) 模型训练和预测都比较慢。

Random Forest Classifier

from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(n_estimators=8)
clf.fit(train_x, train_y)

2.5决策树

决策树是经典的机器学习算法,很多复杂的机器学习算法都是由决策时演变而来.它是一种使用if-then-else的决策规则的监督学习方法.很容易理解,掌握。

决策树的优点:

决策树的缺点:

Decision Tree Classifier

from sklearn import tree
clf = tree.DecisionTreeClassifier()
clf.fit(train_x, train_y)

2.6GBDT

Boosting是一种可将弱学习器提升为强学习器的算法,不同于Bagging、Stacking方法,Boosting训练过程为串联方式,弱学习器的训练是有顺序的,每个弱学习器都会在前一个学习器的基础上进行学习,最终综合所有学习器的预测值产生最终的预测结果。而GBDT则是Boosting算法中的一种,以CART决策树为基学习器,主要是使用后一个模型来拟合当前模型的残差的负梯度,来达到的贪婪最优的效果。

GBDT(Gradient Boosting Decision Tree) Classifier

from sklearn.ensemble import GradientBoostingClassifier
clf = GradientBoostingClassifier(n_estimators=200)
clf.fit(train_x, train_y)

2.7SVM

支持向量机(Support Vector Machine,SVM),主要用于小样本下的二分类、多分类以及回归分析,是一种有监督学习的算法。基本思想是寻找一个超平面来对样本进行分割,把样本中的正例和反例用超平面分开,其原则是使正例和反例之间的间隔最大。

SVM Classifier

from sklearn.svm import SVC
clf = SVC(kernel=‘rbf’, probability=True)
clf.fit(train_x, train_y)

参考链接:

https://blog.csdn.net/weixin_41599977/article/details/89475295

https://blog.csdn.net/weixin_39881922/article/details/80419270

https://www.jianshu.com/p/e51e92a01a9c

https://blog.csdn.net/qq_27802435/article/details/81030394

http://www.siyuanblog.com/?p=821

https://zhuanlan.zhihu.com/p/50176849

https://zhuanlan.zhihu.com/p/145542994

标签:样本,模型,分类,算法,train,Task05,clf,决策树
来源: https://blog.csdn.net/csdnshenjiaye/article/details/115270211