分类时一定只进行分类吗?
产生这个疑问主要两个来源于两个切身体会。
来源一
最近做一个项目过程中,遇到一个问题。由于实验室条件的缘故,对于某指标的检测只能在某个水平上检测出来,比如指标值为50以上才能有显示,于是实验人员会根据检测结果(一次检测会有多个位点的值测出来)来标注结果中是否存在缺失,他们的目的是想确定下在不同的水平下,缺失概率是多少?检测水平多少比较经济、合适?因为在50的时候,他们还需要去掉许多背景噪音,工作量大,想不做那么严格控制。对于这个问题,细抠起来想建好模其实还比较麻烦。不过我的疑问不在这里,而是在于由于不同实验室实验仪器和操作水平不同,阈值水平不一样,即使建模所得的结果,也是针对不同实验室得出来的结论。而造成这个结果不同的主要原因就是因为人为划分的阈值水平不同,导致类别结果不同。换句话说,我分类、打的标签不同,你建模的结果就会大不一样。同一批数据,我选择阈值不同,缺失的结果就不一样,所以我觉得挺难去确定一个适用于绝大多数实验室的阈值。
来源二
我经常会这么调侃别人,让别人猜我来自哪里?一般人会这么猜:“听你的口音,应该像个南方人,湖南?四川?湖北?”待我不停摇摇头后,可能又会猜,“不会是山西、山东吧?听着不像北方人啊?” 一般我都会一直在那里笑嘻嘻的坐等他们瞎猜,然后很自豪的告诉他们,“不南不北,乃中原信阳人士也”。因为信阳恰好在淮河流域上,我们稍微往北一个县就不种水稻、种麦子、吃馒头,而稍微南方一点就基本就是水稻、吃大米之流。所以基本上想以南北方的分类模式来给我分类,基本都会错。所以我干脆每次都不会说我是属于北方或者南方的河南,而是说我是中原人,多加一个类别。
因此,我突然有了这么个疑问:在分类过程中,我们一定要构建某些模型,在已经打好标签的分类上做精确的分类么?我们一定在原有的基础上训练集上做很好的分类,学习(learn)特征,然后对其他东西做分类么?构建分类模型,总是有个分类误差的界的。这种不可避免的误差是随机因素,还是因为本身我们定义类别的时候就不是那么完整呢?贴错标签,一失足成千古恨...
我想,最初给出这些类别的时候,其实我们一般都是仅仅根据几个特征来标定每个个体属于哪一类的,这个时候就已经为后面分类模型建模埋下了“祸根”。分类的界限,阈值的选取,很多时候在定义类别时,我们大脑本身并不是那么精确,甚至有些随意。所以很多时候在聚类完后来给无标签的物体打标签,其实就已经蕴藏了蛮大风险。既然如此,我们可不可以在分类的同时,对那些分类错误,或者基本就处在分类边界上的点(塞给哪边都有点不合适)重新定义一个类别呢?就和我不说我是南方人或者北方人,而说我是中原人一样呢?(下图来源于@roadstat同学的微博图册)
所以我想,在分类的时候,我们在已有的类别上学习(learn)的特别好的同时,可不可以创造(create)新的类别去囊括最初我们没有发现的美好呢?即使这样的后果会导致类别越来越多,很多类别类别无法定义,甚至类别数目随着个体增加而发散,但是此时,起码我们不会因为最初粗糙(拍脑袋)的分类定义而硬生生的要将一些模糊的点分到Class 1、Class2、Class 3...中去。
换句话说,我相信那些经历风雨洗礼的经典分类器的能力,而怀疑最初那群给我们划分类别的人是否有个明确的分类定义,很多时候,人眼细细看也无法看出(自然学习能力有限)类别差异,还想要机器做那么好,那它不也还是在猜么?
所以我觉得,其实还是有很多概念间的层级关系我们并没有弄清楚。我并不期待仅对某几个大类学习几个重要的特征出来,反而更期待如何更精细化的建模,对错误的个体重新合理定义。如何构建出一个更为智能、自适应性的分类器(或者说特征学习器),我想应该会比在几个来历不明的类别上硬磕、硬建模可能更加有惊喜!难道目前的Deep Learning是一个希望?不过太黑匣子了,虽然可以从一个母体上逐渐衍伸出其他类别,不过我这种没有切实经过工程训练的人,更希望有能有一个更为简洁的框架来处理问题。
P.S. 纯属瞎想,欢迎一起瞎想...
南方人和北方人,这类标签本身比较模糊,它分不清住在淮河边的到底算是哪一类。有些分类可能比较清楚,比如通过化验判断一个人是否癌症。如楼主所说,先把类别标签的含义搞清楚,再来分类才是正道。
高涛先生可以知道你的邮箱吗,我想请教你几个问题
高涛先生,R中有个简单的问题,如何修改R的标题?我已经做好的图,修改后程序直接在原有图的基础上添加了一个标题