1. 程式人生 > >NP難問題與過擬合

NP難問題與過擬合

NP問題一直都是資訊學的巔峰。巔峰,意即很引人注目但難以解決。在資訊學研究中,這是一個耗費了很多時間和精力也沒有解決的終極問題,好比物理學中的大統一和數學中的歌德巴赫猜想等。

P類問題的概念:如果一個問題可以找到一個能在多項式的時間裡解決它的演算法,那麼這個問題就屬於P問題。

NP問題是指可以在多項式的時間裡驗證一個解的問題。很顯然,Hamilton迴路是NP問題,因為驗證一條路是否恰好經過了每一個頂點非常容易。但我要把問題換成這樣:試問一個圖中是否不存在Hamilton迴路。這樣問題就沒法在多項式的時間裡進行驗證了,因為除非你試過所有的路,否則你不敢斷定它“沒有Hamilton迴路”。

很顯然,所有的P類問題都是NP問題。也就是說,能多項式地解決一個問題,必然能多項式地驗證一個問題的解——既然正解都出來了,驗證任意給定的解也只需要比較一下就可以了。關鍵是,人們想知道,是否所有的NP問題都是P類問題。我們可以再用集合的觀點來說明。如果把所有P類問題歸為一個集合P中,把所有 NP問題划進另一個集合NP中,那麼,顯然有P屬於NP。現在,所有對NP問題的研究都集中在一個問題上,即究竟是否有P=NP?通常所謂的“NP問題”,其實就一句話:證明或推翻P=NP。

在研究NP問題的過程中找出了一類非常特殊的NP問題叫做NP-完全問題,也即所謂的 NPC問題。 為了說明NPC問題,我們先引入一個概念——約化(Reducibility,有的資料上叫“歸約”)。

簡單地說,一個問題A可以約化為問題B的含義即是,可以用問題B的解法解決問題A,或者說,問題A可以“變成”問題B。《演算法導論》上舉了這麼一個例子。比如說,現在有兩個問題:求解一個一元一次方程和求解一個一元二次方程。那麼我們說,前者可以約化為後者,意即知道如何解一個一元二次方程那麼一定能解出一元一次方程。我們可以寫出兩個程式分別對應兩個問題,那麼我們能找到一個“規則”,按照這個規則把解一元一次方程程式的輸入資料變一下,用在解一元二次方程的程式上,兩個程式總能得到一樣的結果。這個規則即是:兩個方程的對應項係數不變,一元二次方程的二次項係數為0。按照這個規則把前一個問題轉換成後一個問題,兩個問題就等價了。

“問題A可約化為問題B”有一個重要的直觀意義:B的時間複雜度高於或者等於A的時間複雜度。也就是說,問題A不比問題B難。這很容易理解。既然問題A能用問題B來解決,倘若B的時間複雜度比A的時間複雜度還低了,那A的演算法就可以改進為B的演算法,兩者的時間複雜度還是相同。正如解一元二次方程比解一元一次方程難,因為解決前者的方法可以用來解決後者。

再回想前面講的P和NP問題,聯想起約化的傳遞性,自然地,我們會想問,如果不斷地約化上去,不斷找到能“通吃”若干小NP問題的一個稍複雜的大NP問題,那麼最後是否有可能找到一個時間複雜度最高,並且能“通吃”所有的 NP問題的這樣一個超級NP問題?答案居然是肯定的。也就是說,存在這樣一個NP問題,所有的NP問題都可以約化成它。換句話說,只要解決了這個問題,那麼所有的NP問題都解決了。這種問題的存在難以置信,並且更加不可思議的是,這種問題不只一個,它有很多個,它是一類問題。這一類問題就是傳說中的NPC 問題,也就是NP-完全問題。

順便講一下NP-Hard問題。NP-Hard問題是這樣一種問題,它滿足NPC問題定義的第二條但不一定要滿足第一條(就是說,NP-Hard問題要比 NPC問題的範圍廣)。NP-Hard問題同樣難以找到多項式的演算法,但它不列入我們的研究範圍,因為它不一定是NP問題。即使NPC問題發現了多項式級的演算法,NP-Hard問題有可能仍然無法得到多項式級的演算法。事實上,由於NP-Hard放寬了限定條件,它將有可能比所有的NPC問題的時間複雜度更高從而更難以解決。

過擬合問題

機器學習簡單來說就是根據樣本訓練出模型來預測其他樣本的輸出,最簡單的線性模型如下:

這裡寫圖片描述

我們知道這是一個一元T次方程,存在T個引數,每個引數值的可行域理論上是從負無窮到正無窮。那麼可行解的狀態空間是無窮的指數級別的。我們可以把機器學習的過程看作是一個在所有可行解的狀態空間中進行搜尋的過程,然後找到問題的最優解。

那麼顯而易見,這是個NP難甚至更難的問題,而有效的學習演算法,如梯度下降法必然是在多項式時間內執行完成,若可徹底避免過擬合,則通過訓練誤差最小化就能獲得最優解,這就意味著我們構造性地證明了“P = NP”;因此,只要我們相信P不等於NP,過擬合就不可避免。

另一方面,我們這個模型是在假設樣本是符合二項分佈的情況下建立的,但是很多時候,樣本之間是有相互影響的,不可能做到獨立同分布。因此這個模型簡化了問題,自然對之後樣本的預測存在誤差,這也是過擬合問題不可避免的原因之一。

相關推薦

NP問題

NP問題一直都是資訊學的巔峰。巔峰,意即很引人注目但難以解決。在資訊學研究中,這是一個耗費了很多時間和精力也沒有解決的終極問題,好比物理學中的大統一和數學中的歌德巴赫猜想等。 P類問題的概念:如果一個問題可以找到一個能在多項式的時間裡解決它的演算法,那麼這

偏差方差,欠

機器學習的核心在於使用學習演算法建立模型,對已建立模型的質量的評價方法和指標不少,本文以準確率(也稱為精度)或判定係數(Coefficient of Determination)作為效能指標對模型的偏差與方差、欠擬合與過擬合概念進行探討。偏差、方差、欠擬合、過擬合均是對模型(學習器)質量的判

泛化能力、訓練集、測試集、K折交叉驗證、假設空間、欠、正則化(L1正則化、L2正則化)、超引數

泛化能力(generalization): 機器學習模型。在先前未觀測到的輸入資料上表現良好的能力叫做泛化能力(generalization)。 訓練集(training set)與訓練錯誤(training error): 訓練機器學習模型使用的資料集稱為訓練集(tr

的區別

欠擬合是指模型在訓練集、驗證集和測試集上均表現不佳的情況 過擬合是指模型在訓練集上表現很好,到了驗證和測試階段就大不如意了,即模型的泛化能力很差 欠擬合和過擬合一直是機器學習訓練中的難題,在進行模型訓練的時候往往要對這二者進行權衡,使得模型不僅在訓練集上表現良好

機器學習筆記2—— 欠

區域性加權迴歸 現在思考關於根據實數 x 預測 y 的問題。 上圖中最左側的圖顯示了函式 y=θ0+θ1x 擬合數據集的結果。我們可以看到資料並沒有真的停靠在直線上,所以這種擬合效果並不是非常好。 相反地,如果我們新增額外的特徵 x2,然後用函式擬

機器學習中

擬合的基礎概念。首先任何函式都可以用多項式f(x)的方式去趨近,因此我們令f(x) = w0x0+w1x1+...+wnxn.首先,用一個例子來理解什麼是過擬合,假設我們要根據特徵分類{男人X,女人O}

17.【進階】模型正則化--欠問題

#-*- coding:utf-8 -*- #學習目標:以“披薩餅價格預測”為例,認識欠擬合和過擬合的問題 #假定只考慮披薩的尺寸和售價的關係,X為尺寸,y代表售價 X_train = [[6],[8],[10],[14],[18]] y_train = [

機器學習之——欠

我從網上找了很多的資料,但是也沒有很明確的定義,大體上的意思就是: 欠擬合:模型擬合不夠,在訓練集(training set)上表現效果差,沒有充分利用資料,預測的準確率比我們設計的模型遠遠低很多,擬

ML基礎教程:泛化、正規化最小二乘法

泛化與過擬合 olympval.m Load the Olympic data and extract the training and validation data load data/olympics x = male100(:,1); t

偏差方差分解,的聯絡?

機器學習講演算法之前,需要先弄懂很多概念,這些概念很多是來自統計學的,這也是為什麼傳統的機器學習叫做基於統計的機器學習。對這些概念的理解一定要牢,否則就像技術債,它一定會回來咬你讓你付出更大的代價。這也是為什麼在我們優達學城(Udacity)平臺上的機器學習課程中,第一部分不是講建模,而是先講模型的評估和驗

機器學習迴歸演算法—效能評估欠

機器學習中的泛化,泛化即是,模型學習到的概念在它處於學習的過程中時模型沒有遇見過的樣本時候的表現。在機器學習領域中,當我們討論一個機器學習模型學習和泛化的好壞時,我們通常使用術語:過擬合和欠擬合。我們知道模型訓練和測試的時候有兩套資料,訓練集和測試集。在對訓練資料進行擬合時,

維度災難(轉)

平面 效果好 hal 過程 而在 最小 進行 有趣 導致 一、介紹 本篇文章,我們將討論所謂的“維度災難”,並解釋在設計一個分類器時它為何如此重要。在下面幾節中我將對這個概念進行直觀的解釋,並通過一個由於維度災難導致的過擬合的例子來講解。 考慮這樣一個例子,我們有一些圖片,

細品 - 模型選擇*

最優 優化 並且 情況下 最小化 wid 正方 tro 預測 欠擬合和過擬合   欠擬合是指模型不能很好的捕獲到數據特征,不能很好的擬合數據,學習能力底下。解決方法:增加模型的復雜度        過擬合是指模型不僅僅學習了數據集中的有效信息,也學習到了其中的噪音數據,使得

TensorFlow 正則化(regularizer)

sdn 就是 one 方式 regular logs none 使用 log 所謂過擬合,就是當一個模型過於復雜後,它可以很好的處理訓練數據的每一個數據,甚至包括其中的隨機噪點。而沒有總結訓練數據中趨勢。使得在應對未知數據時錯誤裏一下變得很大。這明顯不是我們要的結果。 我們

ng機器學習視頻筆記(五) ——正則化

哪些 重復 關註 osi 現實 regular 鏈接 梯度下降 簡單 ng機器學習視頻筆記(五) ——過擬合與正則化 (轉載請附上本文鏈接——linhxx) 一、過擬合和欠擬合 1、概念 當針對樣本集和特征值,進行預測的時候,推導θ、梯度下降等,都在

機器學習之路: python線性回歸 L1L2正則化

擬合 python sco bsp orm AS score 未知數 spa git:https://github.com/linyi0604/MachineLearning 正則化: 提高模型在未知數據上的泛化能力 避免參數過擬合正則化常用的方法: 在目

深度學習---

一、認識過擬合與欠擬合 經典圖示,其中: 圖1:欠擬合表示:模型不能在訓練集上獲得足夠低的訓練誤差,即:沒有學習到; 圖3:過擬合表示:模型的訓練誤差與測試誤差之間差距較大,即:在訓練集上表現好,在測試集和新資料上表現一般,過學習。 二、解決過擬合的方法 深度學習中常見於解

第七章 經驗誤差,評估方法(留出法,交叉驗證法,自助法)

過擬合: 完美實際希望的,在新樣本上表現的很好的學習器。為了達到這個目的,應該從訓練樣本中學習出適用於所有潛在樣本的普遍規律,然而,學習器把樣本學的太好,會把訓練樣本自身的一些特點當前潛在樣本會有的特質,這樣會導致泛化效能下降。與之相反的是欠擬合,對訓練樣本一般性質尚未學好 評估方法

【A】機器學習 正則化

過擬合問題 預測房價的模型: 第一張圖對該資料做線性迴歸,可以獲得擬合數據的這樣一條直線,實際上這並不是一個很好的模型。很明顯,隨著房子面積增大,住房價格的變化趨於穩定或者說越往右越平緩。因此線性迴歸並沒有很好擬合訓練資料。我們把此類情況稱為欠擬合(un

如何解決

下面這張經典的圖展示了欠擬合(第一個)與過擬合(第三個)。 欠擬合 模型在訓練集上學習的不夠好,經驗誤差大,稱為欠擬合。模型訓練完成