-前言:
分类是机器学习非常重要的模块,也是很基础的一块。正是因为基础也很重要,反而不知道如何去概括和全面理清,后续会继续来填补这个坑,之后如果有需到相关的东西,也会尽量分析。这里只是记录了一些很基础的内容。欢迎指出不足,一起学习。
一、分类问题
常见的分类问题有二分类,多分类问题。同时多分类问题有分为互斥多分类问题,非互斥多分类问题。
如“房子涨还是跌?”这就是二分类问题;绩效评定(S、A、B、C),新闻分类(娱乐类、体育类、财经类)这些都是多分类问题,其中绩效评定因为只能选择一个等级,所以我们称为互斥类多分类问题。新闻分类中一篇新闻可以有多个分类,所以我们称为非互斥类多分类问题,分类问题关系如图2-1所示
分类问题的不同,我们选取的算法也就不同,所以我们先明确问题的所属。
二、分类流程
分类过程,如图2-1所示
2.1 提取特征与特征选取
特征提取和特征选择是DimensionalityReduction(降维)的两种方法,针对于the curse of dimensionality(维灾难),都可以达到降维的目的。但是这两个有所不同。如图2-2
a) 特征提取(Feature Extraction):特征抽取后的新特征是原来特征的一个映射。
b) 特征选择(Feature Selection):特征选择后的特征是原来特征的一个子集。
c) 特征提取是站在一个更高的角度去看问题,从中找到问题的本质,用更通俗的方式来表达这个问题和理论,这个就是特征提取要做的事情。
d) 如果只是想对现有的问题的观点和描述“取其精华,去其糟粕”,这个是所谓特征选择。只是对现有进行筛选。
e) 特征提取和特征选择统称为降维。
2.2 模型训练过程
2.2.1 划分数据
模型训练之前通常将数据分为三部分,训练集(training set)、测试集(test set)、验证集(validation set)
training set用来训练模型, validation set用来统计单一评估指标,调节参数, 选择算法。 test set 则用来在最后整体评估模型的性能。
2.2.2 数据划分
(1)留出法
把数据集分成互不相交的两部分,一部分是训练集,一部分是测试集。
保持数据分布大致一致,类似分层抽样
训练集数据的数量应占2/3到4/5
为了保证随机性,将数据集多次随机划分为训练集和测试集,然后在对多次划分结果取平均。
(2)交叉验证法
将数据集随机分为互斥的k个子集,为保证随机性,P次随机划分取平均。
将k个子集随机分为k-1个一组剩下一个为另一组,有k种分法。
将每一种分组结果中,k-1个子集的组当做训练集,另外一个当做测试集,这样就产生了k次预测,对其取平均
称为p次k折交叉验证,一般取k=10
(3)自助法
适用于样本量较小,难以划分时。换句话说,样本量足够时,用自助法并不如留出法和交叉验证法,因其无法满足数据分布一致。
每次随机从数据集(有m个样本)抽取一个样本,然后再放回(也就是说可能被重复抽出),m次后得到有m个样本的数据集,将其作为训练集
始终不被抽取到的样本的比例:
也就是说这保证了训练集样本数(不重复)在2/3左右
注意:
将数据集划分训练集和测试集是为了选定一个相对好的模型,当模型选定以后,训练数据仍是整个数据集。
实际应用中,一般只将数据集分成两类,即训练集Training set 和测试集Test set
2.2.3 模型训练
训练集很好理解是用来训练模型,验证集的作用是为了当作评估算法的单一的评估指标,训练后的模型使用验证集,通过评估(AUC)得到训练效果。我们通过training set 与validation set 结果对比,来调节算法参数。比如训练集AUC结果远大于验证集AUC,那么发生了过拟合的问题,我们可能需要减少训练迭代次数或通过设置L2正则这种方式来解决。如果训练集与验证集得到AUC都很低,我们可能需要增加迭代次数或者调节算法参数来解决。
当测试集训练后,验证集评估得到不错的效果后,测试集将进一步验证效果,
虽然验证集与测试集都是用来评估,但是两者的区别是:1、training set和validation set一边训练模型一边验证,相比测试集节省了大量时间; 2、validation set评估是单一的评估指标,而test set评估会更多,有ROC,召回,精准,F1 Scroe等,可以帮助我们从多个维度去评估模型。模型训练过程如图2-3所示
小结:
我们用training set做训练, validation set来初步评估结果,这么做的优点是validation set跟随training set一起被输入到模型算法中,但又不参与模型训练,只是用来快速评估AUC的。在调参阶段我们会不停的改变参数值来调整模型,而validation set就能帮助我们快速的查看结果。test set的作用并不是快速查看结果的,它提供一个模型的完整评估报告,但操作相较单一的validation set而言,更多更费时。所以我们一般在validation set上把参数调整的差不多后,才会使用到test set。
2.3 分类算法
常见的几种分类算法:K近邻、朴素贝叶斯、决策树、Logistic回归、支持向量机,介绍如图2-4所示
结语:
后面我会更详细的来介绍这些算法的特点,都是自己平时遇到记录的内容,难免会出错,欢迎一起学习讨论机器学习算法。如果发现这一章还有哪些问题,或没有讲清楚的,欢迎留言。我会继续跟进填坑。感谢^ ^!