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

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

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

構(gòu)建算法的推薦步驟

深度學(xué)習(xí)自然語言處理 ? 來源:登龍 ? 2020-08-28 10:21 ? 次閱讀

一、構(gòu)建算法推薦步驟

當(dāng)我們遇到一個(gè)問題,比如預(yù)測房價(jià),我們想要用機(jī)器學(xué)習(xí)算法來更好的解決這個(gè)問題,推薦的步驟如下:

1.1 實(shí)現(xiàn)一個(gè)簡單的算法

建議先花點(diǎn)時(shí)間實(shí)現(xiàn)一個(gè)簡單能用的算法,比如線性回歸預(yù)測房價(jià),不需要一開始就花很多時(shí)間設(shè)計(jì)復(fù)雜的算法(在軟件開發(fā)中叫避免過早優(yōu)化)

你可以先實(shí)現(xiàn)能用的算法,然后利用上篇文章從 0 開始機(jī)器學(xué)習(xí) - 機(jī)器學(xué)習(xí)算法診斷中的學(xué)習(xí)曲線等診斷法來分析算法的優(yōu)化方向,這樣一個(gè)簡單的算法就成為了優(yōu)化問題的好工具!

1.2 分析學(xué)習(xí)曲線

有個(gè)簡單的算法后,我們就可以畫出學(xué)習(xí)曲線了,然后就可以決定下一步到底要往哪個(gè)方向做優(yōu)化:

獲得更多的訓(xùn)練樣本

嘗試減少特征的數(shù)量

嘗試獲得更多的特征

嘗試增加多項(xiàng)式特征

嘗試減少正則化程度

嘗試增加正則化程度

...

1.3 誤差分析

假如我們有多個(gè)方向可以作為優(yōu)化的方向,比如以下的方向都可以解決模型的高方差問題:

獲得更多的訓(xùn)練樣本 - 適用于高方差的模型

嘗試減少特征的數(shù)量 - 適用于高方差的模型

嘗試增加正則化程度 - 適用于高方差的模型

那我們又如何來評估每種方法的性能到底提升多少呢?或者說有沒有一種直接的指標(biāo)來告訴我,使用了這樣一種優(yōu)化措施后我的算法性能到底提高了多少百分比?

今天就來看看如何分析機(jī)器學(xué)習(xí)算法的誤差。

二、機(jī)器學(xué)習(xí)算法誤差分析

2.1 偏斜類問題

在介紹誤差分析指標(biāo)前,先來了解一個(gè)偏斜類問題:

訓(xùn)練集中有非常多同一類的樣本,只有很少或者沒有其他類的樣本,這樣的訓(xùn)練樣本稱為偏斜類。

比如預(yù)測癌癥是否惡性的 100 個(gè)樣本中:95 個(gè)是良性的腫瘤,5 個(gè)惡性的腫瘤,假設(shè)我們在這個(gè)樣本上對比以下 2 種分類算法的百分比準(zhǔn)確度,即分類錯(cuò)誤的百分比:

普通非機(jī)器學(xué)習(xí)算法:人為把所有的樣本都預(yù)測為良性,則分錯(cuò)了 5 個(gè)惡性的樣本,錯(cuò)誤率為 5 / 100 = 0.05 = 5%

神經(jīng)網(wǎng)絡(luò)算法:訓(xùn)練后預(yù)測 100 個(gè)樣本,把 10 個(gè)良性的樣本誤分類為惡性的樣本,錯(cuò)誤率為 10 / 100 = 10%

如果僅僅從錯(cuò)誤率大小來判斷算法的優(yōu)劣是不合適的,因?yàn)榈谝环N人為設(shè)置樣本都為良性的算法不會在實(shí)際項(xiàng)目中使用,但是通過指標(biāo)卻發(fā)現(xiàn)效果比神經(jīng)網(wǎng)絡(luò)還要好,這肯定是有問題的。

正是因?yàn)榇嬖谶@么一種偏斜類的訓(xùn)練樣本,所以我們需要用一個(gè)更加一般性的算法準(zhǔn)確度評價(jià)指標(biāo),以此適用與任何類型的樣本,解決上面那種荒唐的結(jié)論。

2.2 查準(zhǔn)率與查全率

為了解決這個(gè)問題,使用查準(zhǔn)率(Precision)和查全率(Recall)這 2 個(gè)誤差指標(biāo),為了計(jì)算這 2 者,我們需要把算法預(yù)測的結(jié)果分為以下 4 種:

正確肯定(True Positive,TP):預(yù)測為真,實(shí)際為真

正確否定(True Negative,TN):預(yù)測為假,實(shí)際為假

錯(cuò)誤肯定(False Positive,F(xiàn)P):預(yù)測為真,實(shí)際為假

錯(cuò)誤否定(False Negative,F(xiàn)N):預(yù)測為假,實(shí)際為真

把這 4 個(gè)寫到表格里面:

Positive Negative
Positive TP FN
Negative FP TN
實(shí)際值 預(yù)測值

然后我們就可以定義這 2 個(gè)指標(biāo)啦:

查準(zhǔn)率 = TP / (TP + FP):預(yù)測為真(惡性腫瘤)的情況中,實(shí)際為真(惡性腫瘤)的比例,越高越好

查全率 = TP / (TP + FN):實(shí)際為真(惡性腫瘤)的情況中,預(yù)測為真(惡性腫瘤)的比例,越高越好

有了這 2 個(gè)指標(biāo)我們再來分析下上面的算法性能,第一個(gè)人為的算法認(rèn)為所有的腫瘤都是良性的,也就等價(jià)于原樣本中 5 個(gè)惡性的腫瘤樣本一個(gè)都沒有預(yù)測成功,也即所有惡性腫瘤樣本,該算法成功預(yù)測惡性腫瘤的比例為 0,所以查全率為 0,這說明該算法的效果并不好。

2.3 查準(zhǔn)率與查全率的整合

在實(shí)際的使用中,查準(zhǔn)率和查全率往往不能很好的權(quán)衡,要想保持兩者都很高不太容易,通過使用以下的公式來整合這 2 個(gè)評價(jià)指標(biāo)可以幫助我們直接看出一個(gè)算法的性能優(yōu)劣:

以后評價(jià)一個(gè)算法的性能直接比較 F1 Score 即可,這就大大方便了我們對比算法的性能。

三、機(jī)器學(xué)習(xí)的樣本規(guī)模

除了評價(jià)指標(biāo),還有一個(gè)要關(guān)心的問題就是樣本的規(guī)模,在機(jī)器學(xué)習(xí)領(lǐng)域有一句話:「取得成功的人不是擁有最好算法的人,而是擁有最多數(shù)據(jù)的人」

這句話的意思就是說當(dāng)我們擁有非常多的數(shù)據(jù)時(shí),選擇什么樣的算法不是最最重要的,一些在小樣本上表現(xiàn)不好的算法,經(jīng)過大樣本的訓(xùn)練往往也能表現(xiàn)良好。

比如下面這 4 種算法在很大樣本上訓(xùn)練后的效果相差不是很大,但是在小樣本時(shí)有挺大差距:

但在實(shí)際的機(jī)器學(xué)習(xí)算法中,為了能夠使得訓(xùn)練數(shù)據(jù)發(fā)揮最大效用,我們往往會選一個(gè)比較好的模型(不太容易欠擬合,比如神經(jīng)網(wǎng)絡(luò)),再加上很多的樣本數(shù)據(jù)(防止過擬合)

通過這 2 者就可以讓一個(gè)算法變的很強(qiáng)大,所以以后當(dāng)你設(shè)計(jì)機(jī)器學(xué)習(xí)算法的時(shí)候一定要考慮自己的樣本規(guī)模,選擇合適的模型適應(yīng)你的數(shù)據(jù),如果你有很多很多的數(shù)據(jù),那么可以選擇復(fù)雜一點(diǎn)的模型,不能白白浪費(fèi)你的數(shù)據(jù)!

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

    關(guān)注

    23

    文章

    4551

    瀏覽量

    92017
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3032

    瀏覽量

    48348
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8306

    瀏覽量

    131838

原文標(biāo)題:從 0 開始機(jī)器學(xué)習(xí) - 機(jī)器學(xué)習(xí)系統(tǒng)的設(shè)計(jì)與誤差分析

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RNN算法的三個(gè)關(guān)鍵步驟

    DL之RNN:RNN算法相關(guān)論文、相關(guān)思路、關(guān)鍵步驟、配圖集合+TF代碼定義
    發(fā)表于 12-28 14:20

    MAKEFILE條件預(yù)構(gòu)建步驟

    您好,我在項(xiàng)目中有兩個(gè)配置,我想在構(gòu)建配置之前做一些事情。我已經(jīng)在項(xiàng)目屬性中使用了預(yù)構(gòu)建步驟,但有不同的東西。我可以使用“IFEQ”來選擇MaFIX文件“.BuffPi::”部分中的配置的預(yù)構(gòu)
    發(fā)表于 01-30 07:54

    六大步驟學(xué)習(xí)貝葉斯算法

    學(xué)習(xí)貝葉斯算法的五個(gè)步驟
    發(fā)表于 07-16 16:57

    怎么將#define值傳遞給后期構(gòu)建步驟?

    我想創(chuàng)建一個(gè)打包后的步驟來打包我的版本。我們使用C源代碼中的一個(gè)定義來配置我們的構(gòu)建。是否有人知道一種方法,可以在后生成步驟中從源代碼中傳遞清單常數(shù)的值?例如,如果在Cfg.h中存在
    發(fā)表于 10-08 10:17

    PID算法調(diào)試步驟

    0、前言在我看來,其實(shí)控制題是較好做(混)的一種題型,你懂我意思吧??刂祁}簡單概括下,大概就是三個(gè)步驟。1、構(gòu)建整體方案。2、設(shè)計(jì)整體控制電路。3、軟件程序設(shè)計(jì)—PID算法調(diào)試。1 、整體方案拿到
    發(fā)表于 11-30 06:34

    有什么方法可以添加閃存前和閃存后構(gòu)建步驟嗎?

    有什么方法可以添加閃存前和閃存后構(gòu)建步驟嗎?對于我的系統(tǒng),我必須向 ESP 發(fā)送一條特殊命令以將其置于引導(dǎo)加載程序模式,然后再發(fā)送一條命令使其真正啟動(dòng)。除了正常的構(gòu)建步驟之外,我似乎無
    發(fā)表于 03-02 08:36

    有什么方法可以添加閃存前和閃存后構(gòu)建步驟嗎?

    有什么方法可以添加閃存前和閃存后構(gòu)建步驟嗎?對于我的系統(tǒng),我必須向 ESP 發(fā)送一條特殊命令以將其置于引導(dǎo)加載程序模式,然后再發(fā)送一條命令使其真正啟動(dòng)。除了正常的構(gòu)建步驟之外,我似乎無
    發(fā)表于 04-14 08:07

    基于設(shè)備性能的藍(lán)牙散列網(wǎng)構(gòu)建算法

    藍(lán)牙規(guī)范中沒有提供藍(lán)牙散列網(wǎng)的構(gòu)建方法。該文采用基于設(shè)備性能組建散列網(wǎng)的思想,提出一種散列網(wǎng)構(gòu)建算法算法選擇性能優(yōu)良的設(shè)備擔(dān)任主節(jié)點(diǎn)和橋節(jié)點(diǎn),并采取措施控制
    發(fā)表于 03-29 11:00 ?14次下載

    基于回溯搜索優(yōu)化算法改進(jìn)矩陣填充的指紋庫構(gòu)建

    針對基于信號強(qiáng)度指示( RSSI)的位置指紋定位過程中用于其離線位置指紋庫構(gòu)建的全采法采集工作量較大、位置指紋庫構(gòu)建效率較低、而插值法通常精度有限等問題,提出一種基于回溯搜索優(yōu)化算法改進(jìn)奇異值閾值
    發(fā)表于 11-30 14:33 ?3次下載

    WSN中能量有效的連通支配集構(gòu)建算法

    現(xiàn)有的連通支配集構(gòu)建算法大多過程復(fù)雜、步驟冗余、耗能較多,且不能適應(yīng)網(wǎng)絡(luò)動(dòng)態(tài)拓?fù)涞淖兓?。為此,提出一種能量有效的構(gòu)建算法。該
    發(fā)表于 03-06 17:22 ?1次下載

    OpenHarmony Dev-Board-SIG專場:搭建編譯構(gòu)建主要步驟

    OpenHarmony Dev-Board-SIG專場:搭建編譯構(gòu)建主要步驟
    的頭像 發(fā)表于 12-28 14:37 ?988次閱讀
    OpenHarmony Dev-Board-SIG專場:搭建編譯<b class='flag-5'>構(gòu)建</b>主要<b class='flag-5'>步驟</b>

    TensorRT構(gòu)建具有動(dòng)態(tài)形狀的引擎的步驟

    動(dòng)態(tài)形狀(Dynamic Shapes)?是延遲指定部分或全部張量維度直到運(yùn)行時(shí)的能力。動(dòng)態(tài)形狀可以通過 C++ 和 Python 接口使用。 以下部分提供了更詳細(xì)的信息;但是,這里概述了構(gòu)建具有動(dòng)態(tài)形狀的引擎的步驟
    的頭像 發(fā)表于 05-13 16:40 ?2956次閱讀

    介紹從一組可重用的驗(yàn)證組件中構(gòu)建測試平臺所需的步驟

    本文介紹了從一組可重用的驗(yàn)證組件中構(gòu)建測試平臺所需的步驟。UVM促進(jìn)了重用,加速了測試平臺構(gòu)建的過程。
    的頭像 發(fā)表于 06-13 09:11 ?402次閱讀
    介紹從一組可重用的驗(yàn)證組件中<b class='flag-5'>構(gòu)建</b>測試平臺所需的<b class='flag-5'>步驟</b>

    可重用的驗(yàn)證組件中構(gòu)建測試平臺的步驟

    本文介紹了從一組可重用的驗(yàn)證組件中構(gòu)建測試平臺所需的步驟。UVM促進(jìn)了重用,加速了測試平臺構(gòu)建的過程。 首先對 測試平臺集成者(testbench integrator) 和 測試編寫者(test
    的頭像 發(fā)表于 06-13 09:14 ?490次閱讀
    可重用的驗(yàn)證組件中<b class='flag-5'>構(gòu)建</b>測試平臺的<b class='flag-5'>步驟</b>

    EEMD方法的原理與算法實(shí)現(xiàn)步驟

    電子發(fā)燒友網(wǎng)站提供《EEMD方法的原理與算法實(shí)現(xiàn)步驟.pdf》資料免費(fèi)下載
    發(fā)表于 10-23 11:44 ?0次下載
    EEMD方法的原理與<b class='flag-5'>算法</b>實(shí)現(xiàn)<b class='flag-5'>步驟</b>