0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

機(jī)器學(xué)習(xí)實(shí)用指南之機(jī)器學(xué)習(xí)概覽

lviY_AI_shequ ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-05-25 15:34 ? 次閱讀

另一種分類(lèi)機(jī)器學(xué)習(xí)的方法是判斷它們是如何進(jìn)行歸納推廣的。大多機(jī)器學(xué)習(xí)任務(wù)是關(guān)于預(yù)測(cè)的。這意味著給定一定數(shù)量的訓(xùn)練樣本,系統(tǒng)需要能推廣到之前沒(méi)見(jiàn)到過(guò)的樣本。對(duì)訓(xùn)練數(shù)據(jù)集有很好的性能還不夠,真正的目標(biāo)是對(duì)新實(shí)例預(yù)測(cè)的性能。

有兩種主要的歸納方法:基于實(shí)例學(xué)習(xí)和基于模型學(xué)習(xí)。

基于實(shí)例學(xué)習(xí)

也許最簡(jiǎn)單的學(xué)習(xí)形式就是用記憶學(xué)習(xí)。如果用這種方法做一個(gè)垃圾郵件檢測(cè)器,只需標(biāo)記所有和用戶(hù)標(biāo)記的垃圾郵件相同的郵件 —— 這個(gè)方法不差,但肯定不是最好的。

不僅能標(biāo)記和已知的垃圾郵件相同的郵件,你的垃圾郵件過(guò)濾器也要能標(biāo)記類(lèi)似垃圾郵件的郵件。這就需要測(cè)量?jī)煞忄]件的相似性。一個(gè)(簡(jiǎn)單的)相似度測(cè)量方法是統(tǒng)計(jì)兩封郵件包含的相同單詞的數(shù)量。如果一封郵件含有許多垃圾郵件中的詞,就會(huì)被標(biāo)記為垃圾郵件。

這被稱(chēng)作基于實(shí)例學(xué)習(xí):系統(tǒng)先用記憶學(xué)習(xí)案例,然后使用相似度測(cè)量推廣到新的例子(圖 1-15)。

圖 1-15 基于實(shí)例學(xué)習(xí)

基于模型學(xué)習(xí)

另一種從樣本集進(jìn)行歸納的方法是建立這些樣本的模型,然后使用這個(gè)模型進(jìn)行預(yù)測(cè)。這稱(chēng)作基于模型學(xué)習(xí)(圖 1-16)。

圖 1-16 基于模型學(xué)習(xí)

例如,你想知道錢(qián)是否能讓人快樂(lè),你從 OECD 網(wǎng)站(http://stats.oecd.org/index.aspx?DataSetCode=BLI)下載了 Better Life Index 指數(shù)數(shù)據(jù),還從 IMF (點(diǎn)擊閱讀原文可跳轉(zhuǎn))下載了人均 GDP 數(shù)據(jù)。表 1-1 展示了摘要。

表 1-1 錢(qián)會(huì)使人幸福嗎?

用一些國(guó)家的數(shù)據(jù)畫(huà)圖(圖 1-17)。

圖 1-17 你看到趨勢(shì)了嗎?

確實(shí)能看到趨勢(shì)!盡管數(shù)據(jù)有噪聲(即,部分隨機(jī)),看起來(lái)生活滿(mǎn)意度是隨著人均 GDP 的增長(zhǎng)線性提高的。所以,你決定生活滿(mǎn)意度建模為人均 GDP 的線性函數(shù)。這一步稱(chēng)作模型選擇:你選一個(gè)生活滿(mǎn)意度的線性模型,只有一個(gè)屬性,人均 GDP(公式 1-1)。

公式 1-1 一個(gè)簡(jiǎn)單的線性模型

這個(gè)模型有兩個(gè)參數(shù)θ0和θ1。通過(guò)調(diào)整這兩個(gè)參數(shù),你可以使你的模型表示任何線性函數(shù),見(jiàn)圖 1-18。

圖 1-18 幾個(gè)可能的線性模型

在使用模型之前,你需要確定θ0和θ1。如何能知道哪個(gè)值可以使模型的性能最佳呢?要回答這個(gè)問(wèn)題,你需要指定性能的量度。你可以定義一個(gè)實(shí)用函數(shù)(或擬合函數(shù))用來(lái)測(cè)量模型是否夠好,或者你可以定義一個(gè)代價(jià)函數(shù)來(lái)測(cè)量模型有多差。對(duì)于線性回歸問(wèn)題,人們一般是用代價(jià)函數(shù)測(cè)量線性模型的預(yù)測(cè)值和訓(xùn)練樣本的距離差,目標(biāo)是使距離差最小。

接下來(lái)就是線性回歸算法,你用訓(xùn)練樣本訓(xùn)練算法,算法找到使線性模型最擬合數(shù)據(jù)的參數(shù)。這稱(chēng)作模型訓(xùn)練。在我們的例子中,算法得到的參數(shù)值是θ0=4.85和θ1=4.91×10–5。

現(xiàn)在模型已經(jīng)最緊密地?cái)M合到訓(xùn)練數(shù)據(jù)了,見(jiàn)圖 1-19。

圖 1-19 最佳擬合訓(xùn)練數(shù)據(jù)的線性模型

最后,可以準(zhǔn)備運(yùn)行模型進(jìn)行預(yù)測(cè)了。例如,假如你想知道塞浦路斯人有多幸福,但 OECD 沒(méi)有它的數(shù)據(jù)。幸運(yùn)的是,你可以用模型進(jìn)行預(yù)測(cè):查詢(xún)?nèi)致匪沟娜司?GDP,為 22587 美元,然后應(yīng)用模型得到生活滿(mǎn)意度,后者的值在4.85 + 22,587 × 4.91 × 10-5 = 5.96左右。

為了激起你的興趣,案例 1-1 展示了加載數(shù)據(jù)、準(zhǔn)備、創(chuàng)建散點(diǎn)圖的 Python 代碼,然后訓(xùn)練線性模型并進(jìn)行預(yù)測(cè)。

案例 1-1,使用 Scikit-Learn 訓(xùn)練并運(yùn)行線性模型。

import matplotlibimport matplotlib.pyplot as pltimport numpy as npimport pandas as pdimport sklearn# 加載數(shù)據(jù)oecd_bli = pd.read_csv("oecd_bli_2015.csv", thousands=',')gdp_per_capita = pd.read_csv("gdp_per_capita.csv",thousands=',',delimiter=' ', encoding='latin1', na_values="n/a")# 準(zhǔn)備數(shù)據(jù)country_stats = prepare_country_stats(oecd_bli, gdp_per_capita)X = np.c_[country_stats["GDP per capita"]]y = np.c_[country_stats["Life satisfaction"]]# 可視化數(shù)據(jù)country_stats.plot(kind='scatter', x="GDP per capita", y='Life satisfaction')plt.show()# 選擇線性模型lin_reg_model = sklearn.linear_model.LinearRegression()# 訓(xùn)練模型lin_reg_model.fit(X, y)# 對(duì)塞浦路斯進(jìn)行預(yù)測(cè)X_new = [[22587]] # 塞浦路斯的人均GDPprint(lin_reg_model.predict(X_new)) # outputs [[ 5.96242338]]

注解:如果你之前接觸過(guò)基于實(shí)例學(xué)習(xí)算法,你會(huì)發(fā)現(xiàn)斯洛文尼亞的人均 GDP(20732 美元)和塞浦路斯差距很小,OECD 數(shù)據(jù)上斯洛文尼亞的生活滿(mǎn)意度是 5.7,就可以預(yù)測(cè)塞浦路斯的生活滿(mǎn)意度也是 5.7。如果放大一下范圍,看一下接下來(lái)兩個(gè)臨近的國(guó)家,你會(huì)發(fā)現(xiàn)葡萄牙和西班牙的生活滿(mǎn)意度分別是 5.1 和 6.5。對(duì)這三個(gè)值進(jìn)行平均得到 5.77,就和基于模型的預(yù)測(cè)值很接近。這個(gè)簡(jiǎn)單的算法叫做k近鄰回歸(這個(gè)例子中,k=3)。

在前面的代碼中替換線性回歸模型為 K 近鄰模型,只需更換下面一行:

clf = sklearn.linear_model.LinearRegression()

為:

clf = sklearn.neighbors.KNeighborsRegressor(n_neighbors=3)

如果一切順利,你的模型就可以作出好的預(yù)測(cè)。如果不能,你可能需要使用更多的屬性(就業(yè)率、健康、空氣污染等等),獲取更多更好的訓(xùn)練數(shù)據(jù),或選擇一個(gè)更好的模型(比如,多項(xiàng)式回歸模型)。

總結(jié)一下:

研究數(shù)據(jù)

選擇模型

用訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練(即,學(xué)習(xí)算法搜尋模型參數(shù)值,使代價(jià)函數(shù)最?。?/p>

最后,使用模型對(duì)新案例進(jìn)行預(yù)測(cè)(這稱(chēng)作推斷),但愿這個(gè)模型推廣效果不差

這就是一個(gè)典型的機(jī)器學(xué)習(xí)項(xiàng)目。在第 2 章中,你會(huì)第一手地接觸一個(gè)完整的項(xiàng)目。

我們已經(jīng)學(xué)習(xí)了許多關(guān)于基礎(chǔ)的內(nèi)容:你現(xiàn)在知道了機(jī)器學(xué)習(xí)是關(guān)于什么的,為什么它這么有用,最常見(jiàn)的機(jī)器學(xué)習(xí)的分類(lèi),典型的項(xiàng)目工作流程。現(xiàn)在,讓我們看一看學(xué)習(xí)中會(huì)發(fā)生什么錯(cuò)誤,導(dǎo)致不能做出準(zhǔn)確的預(yù)測(cè)。

機(jī)器學(xué)習(xí)的主要挑戰(zhàn)

簡(jiǎn)而言之,因?yàn)槟愕闹饕蝿?wù)是選擇一個(gè)學(xué)習(xí)算法并用一些數(shù)據(jù)進(jìn)行訓(xùn)練,會(huì)導(dǎo)致錯(cuò)誤的兩件事就是“錯(cuò)誤的算法”和“錯(cuò)誤的數(shù)據(jù)”。我們從錯(cuò)誤的數(shù)據(jù)開(kāi)始。

訓(xùn)練數(shù)據(jù)量不足

要讓一個(gè)蹣跚學(xué)步的孩子知道什么是蘋(píng)果,需要做的就是指著一個(gè)蘋(píng)果說(shuō)“蘋(píng)果”(可能需要重復(fù)這個(gè)過(guò)程幾次)?,F(xiàn)在這個(gè)孩子就能認(rèn)識(shí)所有形狀和顏色的蘋(píng)果。真是個(gè)天才!

機(jī)器學(xué)習(xí)還達(dá)不到這個(gè)程度;需要大量數(shù)據(jù),才能讓多數(shù)機(jī)器學(xué)習(xí)算法正常工作。即便對(duì)于非常簡(jiǎn)單的問(wèn)題,一般也需要數(shù)千的樣本,對(duì)于復(fù)雜的問(wèn)題,比如圖像或語(yǔ)音識(shí)別,你可能需要數(shù)百萬(wàn)的樣本(除非你能重復(fù)使用部分存在的模型)。

數(shù)據(jù)不合理的有效性

在一篇 2001 年發(fā)表的著名論文中,微軟研究員 Michele Banko 和 Eric Brill 展示了不同的機(jī)器學(xué)習(xí)算法,包括非常簡(jiǎn)單的算法,一旦有了大量數(shù)據(jù)進(jìn)行訓(xùn)練,在進(jìn)行去除語(yǔ)言歧義的測(cè)試中幾乎有相同的性能(見(jiàn)圖 1-20)。

圖 1-20 數(shù)據(jù)和算法的重要性對(duì)比

論文作者說(shuō):“結(jié)果說(shuō)明,我們可能需要重新考慮在算法開(kāi)發(fā) vs 語(yǔ)料庫(kù)發(fā)展上花費(fèi)時(shí)間和金錢(qián)的取舍?!?/p>

對(duì)于復(fù)雜問(wèn)題,數(shù)據(jù)比算法更重要的主張?jiān)?2009 年由 Norvig 發(fā)表的論文《The Unreasonable Effectiveness of Data》得到了進(jìn)一步的推廣。但是,應(yīng)該注意到,小型和中型的數(shù)據(jù)集仍然是非常常見(jiàn)的,獲得額外的訓(xùn)練數(shù)據(jù)并不總是輕易和廉價(jià)的,所以不要拋棄算法。

沒(méi)有代表性的訓(xùn)練數(shù)據(jù)

為了更好地進(jìn)行歸納推廣,讓訓(xùn)練數(shù)據(jù)對(duì)新數(shù)據(jù)具有代表性是非常重要的。無(wú)論你用的是基于實(shí)例學(xué)習(xí)或基于模型學(xué)習(xí),這點(diǎn)都很重要。

例如,我們之前用來(lái)訓(xùn)練線性模型的國(guó)家集合不夠具有代表性:缺少了一些國(guó)家。圖 1-21 展示了添加這些缺失國(guó)家之后的數(shù)據(jù)。

圖 1-21 一個(gè)更具代表性的訓(xùn)練樣本

如果你用這份數(shù)據(jù)訓(xùn)練線性模型,得到的是實(shí)線,舊模型用虛線表示??梢钥吹?,添加幾個(gè)國(guó)家不僅可以顯著地改變模型,它還說(shuō)明如此簡(jiǎn)單的線性模型可能永遠(yuǎn)不會(huì)達(dá)到很好的性能。貌似非常富裕的國(guó)家沒(méi)有中等富裕的國(guó)家快樂(lè)(事實(shí)上,非常富裕的國(guó)家看起來(lái)更不快樂(lè)),相反的,一些貧窮的國(guó)家看上去比富裕的國(guó)家還幸福。

使用了沒(méi)有代表性的數(shù)據(jù)集,我們訓(xùn)練了一個(gè)不可能得到準(zhǔn)確預(yù)測(cè)的模型,特別是對(duì)于非常貧窮和非常富裕的國(guó)家。

使用具有代表性的訓(xùn)練集對(duì)于推廣到新案例是非常重要的。但是做起來(lái)比說(shuō)起來(lái)要難:如果樣本太小,就會(huì)有樣本噪聲(即,會(huì)有一定概率包含沒(méi)有代表性的數(shù)據(jù)),但是即使是非常大的樣本也可能沒(méi)有代表性,如果取樣方法錯(cuò)誤的話。這叫做樣本偏差。

一個(gè)樣本偏差的著名案例

也許關(guān)于樣本偏差最有名的案例發(fā)生在 1936 年蘭登和羅斯福的美國(guó)大選:《文學(xué)文摘》做了一個(gè)非常大的民調(diào),給 1000 萬(wàn)人郵寄了調(diào)查信。得到了 240 萬(wàn)回信,非常有信心地預(yù)測(cè)蘭登會(huì)以 57% 贏得大選。然而,羅斯福贏得了 62% 的選票。錯(cuò)誤發(fā)生在《文學(xué)文摘》的取樣方法:

首先,為了獲取發(fā)信地址,《文學(xué)文摘》使用了電話黃頁(yè)、雜志訂閱用戶(hù)、俱樂(lè)部會(huì)員等相似的列表。所有這些列表都偏向于富裕人群,他們都傾向于投票給共和黨(即蘭登)。

第二,只有 25% 的回答了調(diào)研。這就又一次引入了樣本偏差,它排除了不關(guān)心政治的人、不喜歡《文學(xué)文摘》的人,和其它關(guān)鍵人群。這種特殊的樣本偏差稱(chēng)作無(wú)應(yīng)答偏差。

下面是另一個(gè)例子:假如你想創(chuàng)建一個(gè)能識(shí)別放克音樂(lè)(Funk Music, 別名騷樂(lè))視頻的系統(tǒng)。建立訓(xùn)練集的方法之一是在 YouTube 上搜索“放克音樂(lè)”,使用搜索到的視頻。但是這樣就假定了 YouTube 的搜索引擎返回的視頻集,是對(duì) YouTube 上的所有放克音樂(lè)有代表性的。事實(shí)上,搜索結(jié)果會(huì)偏向于人們歌手(如果你居住在巴西,你會(huì)得到許多“funk carioca”視頻,它們和 James Brown 的截然不同)。從另一方面來(lái)講,你怎么得到一個(gè)大的訓(xùn)練集呢?

低質(zhì)量數(shù)據(jù)

很明顯,如果訓(xùn)練集中的錯(cuò)誤、異常值和噪聲(錯(cuò)誤測(cè)量引入的)太多,系統(tǒng)檢測(cè)出潛在規(guī)律的難度就會(huì)變大,性能就會(huì)降低?;ㄙM(fèi)時(shí)間對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行清理是十分重要的。事實(shí)上,大多數(shù)據(jù)科學(xué)家的一大部分時(shí)間是做清洗工作的。例如:

如果一些實(shí)例是明顯的異常值,最好刪掉它們或嘗試手工修改錯(cuò)誤;

如果一些實(shí)例缺少特征(比如,你的 5% 的顧客沒(méi)有說(shuō)明年齡),你必須決定是否忽略這個(gè)屬性、忽略這些實(shí)例、填入缺失值(比如,年齡中位數(shù)),或者訓(xùn)練一個(gè)含有這個(gè)特征的模型和一個(gè)不含有這個(gè)特征的模型,等等。

不相關(guān)的特征

俗語(yǔ)說(shuō):進(jìn)來(lái)的是垃圾,出去的也是垃圾。你的系統(tǒng)只有在訓(xùn)練數(shù)據(jù)包含足夠相關(guān)特征、非相關(guān)特征不多的情況下,才能進(jìn)行學(xué)習(xí)。機(jī)器學(xué)習(xí)項(xiàng)目成功的關(guān)鍵之一是用好的特征進(jìn)行訓(xùn)練。這個(gè)過(guò)程稱(chēng)作特征工程,包括:

特征選擇:在所有存在的特征中選取最有用的特征進(jìn)行訓(xùn)練。

特征提?。航M合存在的特征,生成一個(gè)更有用的特征(如前面看到的,可以使用降維算法)。

收集新數(shù)據(jù)創(chuàng)建新特征。

現(xiàn)在,我們已經(jīng)看過(guò)了許多壞數(shù)據(jù)的例子,接下來(lái)看幾個(gè)壞算法的例子。

過(guò)擬合訓(xùn)練數(shù)據(jù)

如果你在外國(guó)游玩,當(dāng)?shù)氐某鲎廛?chē)司機(jī)多收了你的錢(qián)。你可能會(huì)說(shuō)這個(gè)國(guó)家所有的出租車(chē)司機(jī)都是小偷。過(guò)度歸納是我們?nèi)祟?lèi)經(jīng)常做的,如果我們不小心,機(jī)器也會(huì)犯同樣的錯(cuò)誤。在機(jī)器學(xué)習(xí)中,這稱(chēng)作過(guò)擬合:意思是說(shuō),模型在訓(xùn)練數(shù)據(jù)上表現(xiàn)很好,但是推廣效果不好。

圖 1-22 展示了一個(gè)高階多項(xiàng)式生活滿(mǎn)意度模型,它大大過(guò)擬合了訓(xùn)練數(shù)據(jù)。即使它比簡(jiǎn)單線性模型在訓(xùn)練數(shù)據(jù)上表現(xiàn)更好,你會(huì)相信它的預(yù)測(cè)嗎?

圖 1-22 過(guò)擬合訓(xùn)練數(shù)據(jù)

復(fù)雜的模型,比如深度神經(jīng)網(wǎng)絡(luò),可以檢測(cè)數(shù)據(jù)中的細(xì)微規(guī)律,但是如果訓(xùn)練集有噪聲,或者訓(xùn)練集太?。ㄌ?huì)引入樣本噪聲),模型就會(huì)去檢測(cè)噪聲本身的規(guī)律。很明顯,這些規(guī)律不能推廣到新實(shí)例。例如,假如你用更多的屬性訓(xùn)練生活滿(mǎn)意度模型,包括不包含信息的屬性,比如國(guó)家的名字。如此一來(lái),負(fù)責(zé)的模型可能會(huì)檢測(cè)出訓(xùn)練集中名字有 w 字母的國(guó)家的生活滿(mǎn)意度大于 7:新西蘭(7.3),挪威(7.4),瑞典(7.2)和瑞士(7.5)。你能相信這個(gè) W-滿(mǎn)意度法則推廣到盧旺達(dá)和津巴布韋嗎?很明顯,這個(gè)規(guī)律只是訓(xùn)練集數(shù)據(jù)中偶然出現(xiàn)的,但是模型不能判斷這個(gè)規(guī)律是真實(shí)的、還是噪聲的結(jié)果。

警告:過(guò)擬合發(fā)生在相對(duì)于訓(xùn)練數(shù)據(jù)的量和噪聲,模型過(guò)于復(fù)雜的情況??赡艿慕鉀Q方案有:

簡(jiǎn)化模型,可以通過(guò)選擇一個(gè)參數(shù)更少的模型(比如使用線性模型,而不是高階多項(xiàng)式模型)、減少訓(xùn)練數(shù)據(jù)的屬性數(shù)、或限制一下模型

收集更多的訓(xùn)練數(shù)據(jù)

減小訓(xùn)練數(shù)據(jù)的噪聲(比如,修改數(shù)據(jù)錯(cuò)誤和去除異常值)

限定一個(gè)模型以讓它更簡(jiǎn)單,降低過(guò)擬合的風(fēng)險(xiǎn)被稱(chēng)作正則化(regularization)。例如,我們之前定義的線性模型有兩個(gè)參數(shù),θ0和θ1。它給了學(xué)習(xí)算法兩個(gè)自由度以讓模型適應(yīng)訓(xùn)練數(shù)據(jù):可以調(diào)整截距θ0和斜率θ1。如果強(qiáng)制θ1=0,算法就只剩一個(gè)自由度,擬合數(shù)據(jù)就會(huì)更為困難:能做的只是將在線下移動(dòng),盡可能地靠近訓(xùn)練實(shí)例,結(jié)果會(huì)在平均值附近。這就是一個(gè)非常簡(jiǎn)單的模型!如果我們?cè)试S算法可以修改θ1,但是只能在一個(gè)很小的范圍內(nèi)修改,算法的自由度就會(huì)介于 1 和 2 之間。它要比兩個(gè)自由度的模型簡(jiǎn)單,比 1 個(gè)自由度的模型要復(fù)雜。你的目標(biāo)是在完美擬合數(shù)據(jù)和保持模型簡(jiǎn)單性上找到平衡,確保算法的推廣效果。

圖 1-23 展示了三個(gè)模型:虛線表示用缺失部分國(guó)家的數(shù)據(jù)訓(xùn)練的原始模型,短劃線是我們的第二個(gè)用所有國(guó)家訓(xùn)練的模型,實(shí)線模型的訓(xùn)練數(shù)據(jù)和第一個(gè)相同,但進(jìn)行了正則化限制。你可以看到正則化強(qiáng)制模型有一個(gè)小的斜率,它對(duì)訓(xùn)練數(shù)據(jù)的擬合不是那么好,但是對(duì)新樣本的推廣效果好。

圖 1-23 正則化降低了過(guò)度擬合的風(fēng)險(xiǎn)

正則化的度可以用一個(gè)超參數(shù)(hyperparameter)控制。超參數(shù)是一個(gè)學(xué)習(xí)算法的參數(shù)(而不是模型的)。這樣,它是不會(huì)被學(xué)習(xí)算法本身影響的,它優(yōu)于訓(xùn)練,在訓(xùn)練中是保持不變的。如果你設(shè)定的超參數(shù)非常大,就會(huì)得到一個(gè)幾乎是平的模型(斜率接近于 0);這種學(xué)習(xí)算法幾乎肯定不會(huì)過(guò)擬合訓(xùn)練數(shù)據(jù),但是也很難得到一個(gè)好的解。調(diào)節(jié)超參數(shù)是創(chuàng)建機(jī)器學(xué)習(xí)算法非常重要的一部分(下一章你會(huì)看到一個(gè)詳細(xì)的例子)。

欠擬合訓(xùn)練數(shù)據(jù)

你可能猜到了,欠擬合是和過(guò)擬合相對(duì)的:當(dāng)你的模型過(guò)于簡(jiǎn)單時(shí)就會(huì)發(fā)生。例如,生活滿(mǎn)意度的線性模型傾向于欠擬合;現(xiàn)實(shí)要比這個(gè)模型復(fù)雜的多,所以預(yù)測(cè)很難準(zhǔn)確,即使在訓(xùn)練樣本上也很難準(zhǔn)確。

解決這個(gè)問(wèn)題的選項(xiàng)包括:

選擇一個(gè)更強(qiáng)大的模型,帶有更多參數(shù)

用更好的特征訓(xùn)練學(xué)習(xí)算法(特征工程)

減小對(duì)模型的限制(比如,減小正則化超參數(shù))

回顧

現(xiàn)在,你已經(jīng)知道了很多關(guān)于機(jī)器學(xué)習(xí)的知識(shí)。然而,學(xué)過(guò)了這么多概念,你可能會(huì)感到有些迷失,所以讓我們退回去,回顧一下重要的:

機(jī)器學(xué)習(xí)是讓機(jī)器通過(guò)學(xué)習(xí)數(shù)據(jù)對(duì)某些任務(wù)做得更好,而不使用確定的代碼規(guī)則。

有許多不同類(lèi)型的機(jī)器學(xué)習(xí)系統(tǒng):監(jiān)督或非監(jiān)督,批量或在線,基于實(shí)例或基于模型,等等。

在機(jī)器學(xué)習(xí)項(xiàng)目中,我們從訓(xùn)練集中收集數(shù)據(jù),然后對(duì)學(xué)習(xí)算法進(jìn)行訓(xùn)練。如果算法是基于模型的,就調(diào)節(jié)一些參數(shù),讓模型擬合到訓(xùn)練集(即,對(duì)訓(xùn)練集本身作出好的預(yù)測(cè)),然后希望它對(duì)新樣本也能有好預(yù)測(cè)。如果算法是基于實(shí)例的,就是用記憶學(xué)習(xí)樣本,然后用相似度推廣到新實(shí)例。

如果訓(xùn)練集太小、數(shù)據(jù)沒(méi)有代表性、含有噪聲、或摻有不相關(guān)的特征(垃圾進(jìn),垃圾出),系統(tǒng)的性能不會(huì)好。最后,模型不能太簡(jiǎn)單(會(huì)發(fā)生欠擬合)或太復(fù)雜(會(huì)發(fā)生過(guò)擬合)。

還差最后一個(gè)主題要學(xué)習(xí):訓(xùn)練完了一個(gè)模型,你不只希望將它推廣到新樣本。如果你想評(píng)估它,那么還需要作出必要的微調(diào)。一起來(lái)看一看。

測(cè)試和確認(rèn)

要知道一個(gè)模型推廣到新樣本的效果,唯一的辦法就是真正的進(jìn)行試驗(yàn)。一種方法是將模型部署到生產(chǎn)環(huán)境,觀察它的性能。這么做可以,但是如果模型的性能很差,就會(huì)引起用戶(hù)抱怨 —— 這不是最好的方法。

更好的選項(xiàng)是將你的數(shù)據(jù)分成兩個(gè)集合:訓(xùn)練集和測(cè)試集。正如它們的名字,用訓(xùn)練集進(jìn)行訓(xùn)練,用測(cè)試集進(jìn)行測(cè)試。對(duì)新樣本的錯(cuò)誤率稱(chēng)作推廣錯(cuò)誤(或樣本外錯(cuò)誤),通過(guò)模型對(duì)測(cè)試集的評(píng)估,你可以預(yù)估這個(gè)錯(cuò)誤。這個(gè)值可以告訴你,你的模型對(duì)新樣本的性能。

如果訓(xùn)練錯(cuò)誤率低(即,你的模型在訓(xùn)練集上錯(cuò)誤不多),但是推廣錯(cuò)誤率高,意味著模型對(duì)訓(xùn)練數(shù)據(jù)過(guò)擬合。

提示:一般使用 80% 的數(shù)據(jù)進(jìn)行訓(xùn)練,保留20%用于測(cè)試。

因此,評(píng)估一個(gè)模型很簡(jiǎn)單:只要使用測(cè)試集?,F(xiàn)在假設(shè)你在兩個(gè)模型之間猶豫不決(比如一個(gè)線性模型和一個(gè)多項(xiàng)式模型):如何做決定呢?一種方法是兩個(gè)都訓(xùn)練,,然后比較在測(cè)試集上的效果。

現(xiàn)在假設(shè)線性模型的效果更好,但是你想做一些正則化以避免過(guò)擬合。問(wèn)題是:如何選擇正則化超參數(shù)的值?一種選項(xiàng)是用 100 個(gè)不同的超參數(shù)訓(xùn)練100個(gè)不同的模型。假設(shè)你發(fā)現(xiàn)最佳的超參數(shù)的推廣錯(cuò)誤率最低,比如只有 5%。然后就選用這個(gè)模型作為生產(chǎn)環(huán)境,但是實(shí)際中性能不佳,誤差率達(dá)到了 15%。發(fā)生了什么呢?

答案在于,你在測(cè)試集上多次測(cè)量了推廣誤差率,調(diào)整了模型和超參數(shù),以使模型最適合這個(gè)集合。這意味著模型對(duì)新數(shù)據(jù)的性能不會(huì)高。

這個(gè)問(wèn)題通常的解決方案是,再保留一個(gè)集合,稱(chēng)作驗(yàn)證集合。用測(cè)試集和多個(gè)超參數(shù)訓(xùn)練多個(gè)模型,選擇在驗(yàn)證集上有最佳性能的模型和超參數(shù)。當(dāng)你對(duì)模型滿(mǎn)意時(shí),用測(cè)試集再做最后一次測(cè)試,以得到推廣誤差率的預(yù)估。

為了避免“浪費(fèi)”過(guò)多訓(xùn)練數(shù)據(jù)在驗(yàn)證集上,通常的辦法是使用交叉驗(yàn)證:訓(xùn)練集分成互補(bǔ)的子集,每個(gè)模型用不同的子集訓(xùn)練,再用剩下的子集驗(yàn)證。一旦確定模型類(lèi)型和超參數(shù),最終的模型使用這些超參數(shù)和全部的訓(xùn)練集進(jìn)行訓(xùn)練,用測(cè)試集得到推廣誤差率。

沒(méi)有免費(fèi)午餐公理

模型是觀察的簡(jiǎn)化版本。簡(jiǎn)化意味著舍棄無(wú)法進(jìn)行推廣的表面細(xì)節(jié)。但是,要確定舍棄什么數(shù)據(jù)、保留什么數(shù)據(jù),必須要做假設(shè)。例如,線性模型的假設(shè)是數(shù)據(jù)基本上是線性的,實(shí)例和模型直線間的距離只是噪音,可以放心忽略。

在一篇 1996 年的著名論文中,David Wolpert 證明,如果完全不對(duì)數(shù)據(jù)做假設(shè),就沒(méi)有理由選擇一個(gè)模型而不選另一個(gè)。這稱(chēng)作沒(méi)有免費(fèi)午餐(NFL)公理。對(duì)于一些數(shù)據(jù)集,最佳模型是線性模型,而對(duì)其它數(shù)據(jù)集是神經(jīng)網(wǎng)絡(luò)。沒(méi)有一個(gè)模型可以保證效果更好(如這個(gè)公理的名字所示)。確信的唯一方法就是測(cè)試所有的模型。因?yàn)檫@是不可能的,實(shí)際中就必須要做一些對(duì)數(shù)據(jù)合理的假設(shè),只評(píng)估幾個(gè)合理的模型。例如,對(duì)于簡(jiǎn)單任務(wù),你可能是用不同程度的正則化評(píng)估線性模型,對(duì)于復(fù)雜問(wèn)題,你可能要評(píng)估幾個(gè)神經(jīng)網(wǎng)絡(luò)模型。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:【翻譯】Sklearn 與 TensorFlow 機(jī)器學(xué)習(xí)實(shí)用指南 —— 第1章 機(jī)器學(xué)習(xí)概覽(下)

文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛(ài)好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【下載】《機(jī)器學(xué)習(xí)》+《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》

    `1.機(jī)器學(xué)習(xí)簡(jiǎn)介:機(jī)器學(xué)習(xí)是計(jì)算機(jī)科學(xué)與人工智能的重要分支領(lǐng)域. 本書(shū)作為該領(lǐng)域的入門(mén)教材,在內(nèi)容上盡可能涵蓋機(jī)器
    發(fā)表于 06-01 15:49

    機(jī)器學(xué)習(xí)實(shí)踐指南——案例應(yīng)用解析

    機(jī)器學(xué)習(xí)實(shí)踐指南——案例應(yīng)用解析
    發(fā)表于 04-13 16:40

    機(jī)器學(xué)習(xí)的圖像壓縮應(yīng)用

    DIY圖像壓縮——機(jī)器學(xué)習(xí)實(shí)戰(zhàn)K-means 聚類(lèi)圖像壓縮:色彩量化
    發(fā)表于 08-19 07:07

    機(jī)器學(xué)習(xí)KNN介紹

    機(jī)器學(xué)習(xí)(李航統(tǒng)計(jì)學(xué)方法)KNN
    發(fā)表于 04-07 16:20

    Python機(jī)器學(xué)習(xí)入門(mén)pandas的使用提示

    系列文章目錄提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動(dòng)添加例如:第一章 Python 機(jī)器學(xué)習(xí)入門(mén)pandas的使用提示:寫(xiě)完文章后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助
    發(fā)表于 08-13 07:36

    介紹機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容

    系列文章目錄提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動(dòng)添加例如:第一章 Python 機(jī)器學(xué)習(xí)入門(mén)pandas的使用提示:寫(xiě)完文章后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助
    發(fā)表于 08-13 07:39

    介紹機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容

    嵌入式系統(tǒng)硬件總復(fù)習(xí)提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動(dòng)添加例如:第一章 Python 機(jī)器學(xué)習(xí)入門(mén)pandas的使用提示:寫(xiě)完文章后,目錄可以自動(dòng)生成,如
    發(fā)表于 12-16 06:27

    機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容

    系列文章目錄提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動(dòng)添加例如:第一章 Python 機(jī)器學(xué)習(xí)入門(mén)pandas的使用提示:寫(xiě)完文章后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助
    發(fā)表于 02-09 06:47

    什么是機(jī)器學(xué)習(xí)? 機(jī)器學(xué)習(xí)基礎(chǔ)入門(mén)

    本文旨在為硬件和嵌入式工程師提供機(jī)器學(xué)習(xí)(ML)的背景,它是什么,它是如何工作的,它為什么重要,以及 TinyML 是如何適應(yīng)的機(jī)器學(xué)習(xí)是一個(gè)始終存在并經(jīng)常被誤解的技術(shù)概念。數(shù)十年來(lái),
    發(fā)表于 06-21 11:06

    機(jī)器學(xué)習(xí)概覽

    機(jī)器學(xué)習(xí)概覽
    發(fā)表于 09-07 11:11 ?4次下載
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>概覽</b>

    機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的區(qū)別

    機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的區(qū)別 隨著人工智能技術(shù)的不斷發(fā)展,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)已經(jīng)成為大家熟知的兩個(gè)術(shù)
    的頭像 發(fā)表于 08-17 16:11 ?3968次閱讀

    機(jī)器學(xué)習(xí)算法匯總 機(jī)器學(xué)習(xí)算法分類(lèi) 機(jī)器學(xué)習(xí)算法模型

    機(jī)器學(xué)習(xí)算法匯總 機(jī)器學(xué)習(xí)算法分類(lèi) 機(jī)器學(xué)習(xí)算法模型 機(jī)器
    的頭像 發(fā)表于 08-17 16:11 ?958次閱讀

    機(jī)器學(xué)習(xí)算法總結(jié) 機(jī)器學(xué)習(xí)算法是什么 機(jī)器學(xué)習(xí)算法優(yōu)缺點(diǎn)

    機(jī)器學(xué)習(xí)算法總結(jié) 機(jī)器學(xué)習(xí)算法是什么?機(jī)器學(xué)習(xí)算法優(yōu)缺點(diǎn)?
    的頭像 發(fā)表于 08-17 16:11 ?1592次閱讀

    機(jī)器學(xué)習(xí)算法入門(mén) 機(jī)器學(xué)習(xí)算法介紹 機(jī)器學(xué)習(xí)算法對(duì)比

    機(jī)器學(xué)習(xí)算法入門(mén) 機(jī)器學(xué)習(xí)算法介紹 機(jī)器學(xué)習(xí)算法對(duì)比 機(jī)器
    的頭像 發(fā)表于 08-17 16:27 ?836次閱讀

    機(jī)器學(xué)習(xí)有哪些算法?機(jī)器學(xué)習(xí)分類(lèi)算法有哪些?機(jī)器學(xué)習(xí)預(yù)判有哪些算法?

    機(jī)器學(xué)習(xí)有哪些算法?機(jī)器學(xué)習(xí)分類(lèi)算法有哪些?機(jī)器學(xué)習(xí)預(yù)判有哪些算法?
    的頭像 發(fā)表于 08-17 16:30 ?1801次閱讀