五千年(敝帚自珍)

主题:【原创】抛砖!模式识别和机器学习、数据挖掘的区别与联系 -- 永远的幻想

共:💬65 🌺337
全看分页树展 · 主题 跟帖
家园 关于Prediction和Classification

首先感谢回应。

觉得是我没说清楚。开始稍微引入点符号吧。

你下面这么说,好象把SL里输出数据(模式表达)也当成

输入数据来考虑了。。

1 首先,“输出数据”是不是“模式表达”?比如典型的分类问题:用N个样本(N个样本*p维Predictor 一个矩阵X,加N*1的-1/+1类标记y_target)训练了一个SVM、CART,Adaboost或者RandomForest模型或者模型族,称为M。这些模型M如你所说,是“模式表达”。对于数据挖掘问题,确实可以说这个是“输出数据”。

但是,习惯上说这个M是“训练”出来的“模型”,而不是“输出”出来的“数据”。“输出”通常用在指代模型在未知类别的样本x上拟合的y_est。这个可能是表达习惯的问题吧,习惯说某某算法训练了一个模型M,而不是说输出了数据M

2.“输出数据”是不是作为“输入数据”。

首先这里的“输出数据”你是想说y_target吧?反正“模式表达”M是肯定不是输入数据的。(未训练的参数模型是个空架子,这个不能算输入吧?)

看来这块真是我说没说清了。细说一下。

对有监督学习,训练的时候,N*p维的X和y_target肯定是都要作为“输入数据”的。

而无监督学习,有2种情况。

比如上面这个分类问题,用KNN,GMM,Cluster,SOM,PCA,ICA来做,训练的时候可以只输入N*p维的X。

但是对于做购物篮分析这种应用,对应的Association Rules和Apriori这种,其实是无所谓y_target的。而你把某一列商品的数据作为y_target,那么他针对这种商品输出的模式,也可以说这是工作于Super模式了。既可以工作于Super也可以工作与Unsuper,只是看你怎样看待输入数据,也就是我说的“从输入数据的形式上分”的意思,看来是表达不当啊。

确实怪我说得不清楚。其实文中不想以Super/Unsuper来区分算法,除了这个原因,还有一个原因。

因为实际使用这些算法时,经常把这两种混起来用。比如可以先用PCA,对N*p维的X降维成N*q (q<p),作为预处理,然后把N*q作为X和y_target输入到SVM之类的算法去;也可以用y_target(比如K个类)把X分成K组,然后每组训练一个GMM。

这样在应用者的角度看,其实是不去管算法是Super还是Unsuper的,或者在这上面走脑子意思不大,知道每种算法擅长干什么才是正经。

工科应用者的兴奋点,对预测问题在于计算开销大不大?预测误差大不大?对数据挖掘,在乎是不是“Off-the-shelf”(算法能不能拿来就能用。一个是对输入数据“不挑食”,变量的幅值用不用规整到一个范围啊,连续还是离散啊,是不是要先标准化啊……这些罗嗦的要求尽量少;一个是模型参数尽量少,也尽量少调整)?还有可解释性好不好。

识别在于了别,而非预测

“别”倒底是不是“非预测”呢?这个我觉得我已经说清楚了啊,看来还得再说说。

这个“别”的工作,在PR的不同领域可以是Classification、detection、recognition、identification...,但是送到ML算法这里的时候都一样的,也就是说y_target是{0,1},{-1,+1},或者{1,2,3...K}这样的类别标记。目的也是一样的,应用的时候(不是训练过程中)给你一个x,让你的模型输出y_est作为你识别出来的类别。你是只知道x,不知道真实的y_target的。这也就是为什么会被放在Prediction里。这真不是我放的,大家都这么说。

之前说过的,如果你的y_target 是[-1,1]这样的连续型变量,那么给你未知的x,输出y_est的“回归”,工作于“新数据”上的时候,也是一样被称为预测。

其实,很多ML算法都是通吃这两种y_target的。很多算法即使你输入的是{-1,+1}的类标记,内部也是当做连续值来处理的,输出的预测结果y_est其实就是个连续值,只不过最后根据符号又变成了{-1,+1}这样的类标记。

这样站在发明算法的人的角度(也包括我这种还要用算法的人)来看,识别、回归和预测有多大区别呢?所以识别是属于预测的,没问题的。

概念不辨不明,再次感谢回应

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河