overfitting问题,P类问题,NP类问题,NPC类问题,NP难问题

       作者:菜鸟亦亦

       作者介绍:人如其名,是个菜鸟,各种新手,ML新手,python新手……

如有错误敬请指正,不喜勿喷

❤️大家一起学习,一起进步❤️

         最近浅浅入门了一下machine learning,先谈一谈我对ML的理解。机器呢,我们要把他当做小朋友一样,把东西教给他,那机器学习,就是给计算机一些数据,称为训练数据,然后机器从这些训练数据积累经验,得出结论,也就是找到一个合适的方法(函数),来举一反三。而机器学习的目的,就是通过得到的function来进行对未来的预测,也就是由已知到未知的预测。一个机器学习算法的好坏的评判标准,是他所学习到的函数对目标预测的精准性,也就是函数曲线的拟合程度。

        那这就会出现两种情况,一种情况是拟合的有些欠缺,也就是欠拟合,出现这种情况的原因基本是由于训练数据太少,而解决这种问题的方法自然是更多的训练数据;另一种情况就是我今天想说的过拟合(overfitting),其产生的原因是由于学习能力过猛,以至于把特征之外的一些一般性的学进去了,每种ml算法都有overfitting的情况出现,那对于overfitting的处理方式,也是ml算法学习的一个方面。总的来说,要解决overfitting的问题,就要将NP类问题看作是P类问题。那问题又来了,什么是NP类问题,什么又是P类问题呢?

        首先,在探讨这两个概念之前,要明确多项式和时间复杂度两个概念,多项式不用介绍吧,时间复杂度在数据结构或者算法课都学过(而且我觉得学计算机的不会有人连时间复杂度都不知道吧,不会吧不会吧)。

        那这两个概念弄明白了我们来说p类问题,p类问题全称polynominal,翻译过来就是多项式,P类问题是指能在多项式时间复杂度内得出解的一类问题。这时候有人可能会问了,为什么是多项式时间复杂度呢?我们所研究的是机器上的数据,一般很少会是百千万,而大部分时候是百万甚至更多的数量级的数据,那这时候一个多项式数量级的时间复杂度和一个指数级的时间复杂度的优劣显而易见了,指数是爆炸的,显然对于计算机而言工作量是巨大的,那这时候我们多项式的时间复杂度便更胜一筹了。

        讲完P类问题之后,我们再来说NP类问题,np问题的英文全称是nondeterministic polynominal,即非确定性多项式,我们不确定它是否能在多项式时间复杂度得出问题正解,但是我们可以在多项式时间复杂度内验证他是否能在时间复杂度得出正解,(¬_¬)挺绕的哈。那我们不妨来看个经典案例——旅行者推销问题(TSP问题,Travelling Salesman Problem),若有一个旅行商人要n个城市推销商品,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。蛮力法实现TSP问题需要实现所有路径枚举,计算方法:n个城市,固定1个作为起终点,需要(n-1)!个枚举,而阶乘算法的时间复杂度是大于多项式时间复杂度的。那有没有一种可能就是随机选一条路线,而这条路有恰好是最短的那条路呢。这是运气好的时候,或许一次两次几次就可以找到,那运气差岂不是要试完所有的路线。这就是经典的NP类问题,即我们不知道他是否是多项式时间复杂度的问题,但我们可以在多项式时间复杂度验证并得出正解的问题。(关于TSP问题,大家可以深入研究,这也是算法的经典案例)。

        那就引出一个问题,是否NP问题=P问题?也就是是否能在多项式验证的问题都是多项式问题呢?经过持久论战,结果是有的是的,而有的却不是,这也由此引出了NPC类问题。

        NPC类问题全程为Nondeterminstism polynomial complete。其定义是:

①该类问题属于NP类问题;

②所有的NP类问题都可以约化到它。

        对于①之前介绍过了,这里就不过多介绍了。所有的NP类问题都可以约化到它,在我理解看来就是将这个问题一般化,找其通解,用我们高中数学老师的话来说,通解就是放之四海而皆准的方法。若a、b、c都能约化到D,D的时间复杂度是比a、b、c都要高的,那如果D是能在多项式时间复杂度内得出正解,那abc自然也都是能在多项式时间复杂度内得出正解,即abc都和D一样都是NP=P类问题了。

        最后我们来讲一下NP难问题(NP-hard)。NP难问题跟NPC类问题的区别就是NP难问题没有条件①,即所有问题都可以约化到它,但是它不一定是NP类问题,它比NPC类问题的条件更加宽,但也由此使其时间复杂度增加,因此我们一般不加以研究。

        回到我们之前的话题,如何彻底解决过拟合问题,通过经验误差最小化得出最优解,也就意味着我们要构造性的证明“P=NP”,所以只要“P≠NP”,那过拟合问题就不可避免。

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(机器学习,算法)