我对分类的一些理解
最近一直在做阿里的大数据竞赛,对数据挖掘中的分类问题有了一些自己的理解,在这里总结记录一下。
特征
分类问题中有一个很重要的概念是特征
,特征代表了训练集中数据的各种属性。各种分类器模型以特征为参数进行训练,特征是分类问题中的关键。
在比赛的进行过程中,我逐渐领悟到特征
才是分类问题中的核心。特征的选取要保证既能有效区别于其他类别的样本,又和所属类别的样本尽量近似或保持一致
,所以特征不是越多越好,也不是越少越好,而是越能代表不同类别的差别越好。如果一个特征在所有类别的样本中是一样的数值,肯定不能使用它来分类,而一个特征在所有类别样本中无规律或者说近似随机,也不能有效的分类。特征的选取直接决定了使用算法或模型对数据进行分类的能达到的极限。
模型
前面说明的特征的重要性,那各种算法各种模型是干什么的呢?我现在的理解就是模型是为了学习特征,从特征的差别中区分类别。这里没说很明白,再解释一下。假设我有一个二类问题,我提取出样本的一个特征,我认为这个特征有用,即能区别与其他类别,又和所属类别高度统一。我把这个特征加入到模型的训练集中去,我不会想当然的认为这个新提取的特征值越高数据越有可能属于正类或负类,而是交给模型判断,让模型去学习,模型说这个特征值越高越有可能是正类,那就认为确实是这样,或者我不管是不是这样,交给模型去学习去,学出啥是啥。模型学的不好可能是模型本身的问题,如逻辑回归是线性的,不能判断一个特征值低中高三段两头类别一样中间不一样的情况,也可能是特征没选好,不能有效区分不同类别的差异。这里就弱化了模型的作用,模型就是从特征中学习出类别的差异,或者推理出类别的差异,重点是特征能代表这种差异,而模型的选择主要是看其学习能力和推理能力
。
分类预测
提取特征、选择模型训练后就要对数据进行分类预测,而有些分类问题为什么不能做到很好的正确率和召回率?我认为主要有以下原因:
1.问题本身有很大的随机性或不可预测性
像这次阿里的大数据竞赛,通过用户4个月的购买行为预测第5个月的用户会购买的品牌。一个用户的购买行为本身具有很大的随机性(当然也有一定的规律性),用户在第5个月的购买行为受太多随机因素的影响,比如你看到别人穿的一件衣服感觉很好看也想购买,或者你看到别人穿的一件自己正打算买的衣服,由于撞衫决定不买了。这些问题本身的随机性导致不能准确预测。
2.数据包含的信息有限
还是以阿里比赛为例吧,数据中只包含了品牌(注意不是商品)的id,没有其他关于品牌的任何信息如类别等,这些数据包含的信息有限,如果有品牌的类别信息,比如知道这个品牌是大家电,前4个月买了以后第五个月一般不会再次购买,如果还要买的话也要考虑换个品牌买了。通过这些有限的信息很难准确区分不同类别的差异。
3.经验技术问题
这个不是针对问题本身了,如果你对某一类分类问题有很多的经验和技术积累,你就可能得到较好的效果,没有则效果就可能差些。