Julia 入門(mén)
- 數(shù)據(jù)類(lèi)型在 Julia 中特別重要鲁冯,使用數(shù)據(jù)類(lèi)型,可以使我們開(kāi)發(fā)出的程序和函數(shù)具有更好的性能机错,并在表達(dá)上更加精確偏螺。
- 你可以將數(shù)據(jù)從一種數(shù)據(jù)類(lèi)型轉(zhuǎn)換為另一種數(shù)據(jù)類(lèi)型,使用與目標(biāo)數(shù)據(jù)類(lèi)型同名的函數(shù)即可(例如叼架,Int64()可以將一些類(lèi)型的數(shù)據(jù)轉(zhuǎn)換為 Int64 類(lèi)型)畔裕。
- 與 Python 和多數(shù)其他語(yǔ)言不同,Julia 的索引從1開(kāi)始乖订,不是從0開(kāi)始扮饶。
思考題
1.你看過(guò)附錄 B 中列出的 Julia 教程和參考資料了嗎?
2.Julia 中的函數(shù)(做了代碼性能優(yōu)化)是否優(yōu)于其他語(yǔ)言中的相應(yīng)函數(shù)乍构?
3.假設(shè)你想創(chuàng)建一個(gè)列表甜无,保存在一段文本中遇到的不同的(唯一的)詞以及詞的數(shù)量,你應(yīng)該使用哪種數(shù)據(jù)結(jié)構(gòu)來(lái)保存它們蜡吧,可以最容易地進(jìn)行隨后的數(shù)據(jù)存群硫尽?
4.在一個(gè)函數(shù)中昔善,精確定義每個(gè)輸入?yún)?shù)的數(shù)據(jù)類(lèi)型有意義嗎?會(huì)產(chǎn)生不良后果嗎畔乙?
Julia 進(jìn)階
- 在 Julia 中君仆,字符串處理主要是通過(guò)正則表達(dá)式函數(shù)來(lái)進(jìn)行的,比如 match()牲距、matchall()和 eachmatch()返咱。
- 在 Julia 中,正則表達(dá)式的前綴是“r”牍鞠。例如:r"([A-Z])\w+"是一個(gè)用來(lái)識(shí)別以大寫(xiě)字母開(kāi)頭的單詞的正則表達(dá)式咖摹。
- 在定義一個(gè)使用通用類(lèi)型或抽象類(lèi)型輸入的函數(shù)時(shí),你必須事先定義好輸入類(lèi)型(一般在函數(shù)的輸入?yún)?shù)之前)难述∮┣纾可以使用如下的方式:function F{T<:TypeName}(Array{T}),這里的 TypeName 就是輸入類(lèi)型的名稱(chēng)(一般第一個(gè)字母要大寫(xiě))胁后。
- 在開(kāi)發(fā)一個(gè)完整的解決方案時(shí)店读,為要實(shí)現(xiàn)的算法建立工作流程圖,列出所有必需的函數(shù)攀芯,是一種好的做法屯断。在運(yùn)行包裝器函數(shù)(主函數(shù))之前,必須將所有輔助函數(shù)加載到內(nèi)存中。
思考題
1.你可以使用同樣的函數(shù)來(lái)處理類(lèi)型完全不同的數(shù)據(jù)嗎殖演?如果可以氧秘,應(yīng)該使用 Julia 語(yǔ)言的哪種特性?
2.考慮一下前面的 hdist()函數(shù)趴久,為什么它不能使用‘a(chǎn)’,‘b’作為輸入敏储?它們的距離不能為1嗎?[1]
3.是否可以將前面的 mode()函數(shù)擴(kuò)展一下朋鞍,使它能夠處理像234(一個(gè)單獨(dú)的數(shù)值已添,不是一個(gè)數(shù)組)這樣的輸入,并將這個(gè)輸入做為輸出返回滥酥?做這樣的修改需要利用 Julia 語(yǔ)言的哪種特性更舞?
4.寫(xiě)一個(gè)簡(jiǎn)單的函數(shù),在一段給定的文本中計(jì)算單詞的數(shù)量(假設(shè)在文本中沒(méi)有換行符)坎吻。在完成之后缆蝉,使用一些文本來(lái)測(cè)試它(你可以在博客文章或電子書(shū)中隨機(jī)找?guī)讉€(gè)段落)并評(píng)價(jià)函數(shù)的性能。
5.寫(xiě)一個(gè)簡(jiǎn)單的函數(shù)瘦真,在一段給定的文本中計(jì)算字符的數(shù)量刊头,并計(jì)算出非空格字符的比例。
6.寫(xiě)一個(gè)完整的解決方案诸尽,以一個(gè)數(shù)值型數(shù)組作為輸入(你可以假設(shè)數(shù)組中都是浮點(diǎn)數(shù))原杂,給出由數(shù)組形成的文本中所有數(shù)字的分布(也就是說(shuō),其中有多少個(gè)0您机,多少個(gè)1穿肄,等等)。并計(jì)算其中哪個(gè)數(shù)字出現(xiàn)的次數(shù)最多际看?最簡(jiǎn)單的實(shí)現(xiàn)方法是寫(xiě)一個(gè)函數(shù)咸产,統(tǒng)計(jì)出在一個(gè)給定字符串中字符 x 有多少個(gè),然后在包裝器函數(shù)中將所有的統(tǒng)計(jì)結(jié)果累加起來(lái)并進(jìn)行輸出仲闽。如果你需要的話(huà)脑溢,也可以使用其他的輔助函數(shù)。
Julia 數(shù)據(jù)科學(xué)應(yīng)用概述
- 數(shù)據(jù)科學(xué)項(xiàng)目的最終結(jié)果或者是一種數(shù)據(jù)產(chǎn)品(例如赖欣,數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用程序屑彻,儀表盤(pán)程序),或者是具有可操作性的知識(shí)畏鼓,可以為分析數(shù)據(jù)的組織機(jī)構(gòu)提供價(jià)值酱酬。
- 數(shù)據(jù)科學(xué)流程由7個(gè)獨(dú)立的階段組成,可以分成3個(gè)大的階段云矫。
- 數(shù)據(jù)工程膳沽。
- 數(shù)據(jù)準(zhǔn)備:確保數(shù)據(jù)是標(biāo)準(zhǔn)化的,沒(méi)有缺失值,字符串?dāng)?shù)據(jù)具有一致的大小寫(xiě)挑社,不包含任何不必要的字符陨界。
- 數(shù)據(jù)探索:創(chuàng)造性地與數(shù)據(jù)進(jìn)行交流,以使我們理解數(shù)據(jù)集的結(jié)構(gòu)和數(shù)據(jù)集中變量的用途痛阻。這需要大量的可* 視化工作菌瘪。
- 數(shù)據(jù)表示:使用正確類(lèi)型的變量來(lái)表示數(shù)據(jù),并開(kāi)發(fā)出能有效捕獲數(shù)據(jù)中的信息的特征阱当。
- 數(shù)據(jù)建模俏扩。
- 數(shù)據(jù)發(fā)現(xiàn):通過(guò)使用統(tǒng)計(jì)檢驗(yàn)和其他方法,準(zhǔn)確捕捉到數(shù)據(jù)中的模式弊添,這些模式經(jīng)常隱藏在特征空間的結(jié)構(gòu)之中录淡。
- 數(shù)據(jù)學(xué)習(xí):對(duì)前一階段中的所有發(fā)現(xiàn)進(jìn)行智能分析和消化吸收,并訓(xùn)練計(jì)算機(jī)在新的陌生數(shù)據(jù)上重復(fù)這些發(fā)現(xiàn)油坝。
- 信息萃取嫉戚。
- 數(shù)據(jù)產(chǎn)品創(chuàng)建:使用前面階段中創(chuàng)建的模型,開(kāi)發(fā)易于使用的程序(一般是 API澈圈、APP 或儀表盤(pán)程序)彬檀。
- 知識(shí)、交付物和可視化產(chǎn)品:可視化程度最高的一個(gè)階段瞬女,包括與數(shù)據(jù)科學(xué)項(xiàng)目相關(guān)的所有信息溝通窍帝,方式有可視化產(chǎn)品、報(bào)告拆魏、集中展示等等盯桦。
- 盡管數(shù)據(jù)科學(xué)流程的各個(gè)環(huán)節(jié)一般是按順序進(jìn)行的,但為了提高和改善最終結(jié)果渤刃,我們也經(jīng)常需要對(duì)某個(gè)階段進(jìn)行回顧和重復(fù)。
- 基于你獲取的知識(shí)和提出的新問(wèn)題贴膘,數(shù)據(jù)科學(xué)流程一個(gè)循環(huán)的結(jié)束經(jīng)常意味著一個(gè)新循環(huán)的開(kāi)始卖子。
- 對(duì)于數(shù)據(jù)科學(xué)流程的各個(gè)階段,Julia 都有相應(yīng)的擴(kuò)展包刑峡,如果你在其中找不到合適的工具洋闽,你完全可以自己開(kāi)發(fā)一個(gè),不用擔(dān)心對(duì)系統(tǒng)性能的影響突梦。
- 盡管 Julia 可以勝任數(shù)據(jù)科學(xué)流程的各個(gè)階段诫舅,你也完全可以將它與其他編程語(yǔ)言結(jié)合起來(lái)使用,比如 Python 和 R宫患,如果需要的話(huà)(參見(jiàn)附錄 D)刊懈。
- 數(shù)據(jù)科學(xué)流程是一個(gè)不斷發(fā)展變化的過(guò)程。現(xiàn)有的步驟不是一成不變的。因此虚汛,我們要抓住數(shù)據(jù)科學(xué)的本質(zhì):將原始數(shù)據(jù)轉(zhuǎn)換為可用的形式匾浪,為最終用戶(hù)創(chuàng)造出具有真正價(jià)值的產(chǎn)品。
思考題
1.什么是數(shù)據(jù)工程卷哩?它是必需的嗎蛋辈?
2.?dāng)?shù)據(jù)準(zhǔn)備階段的重要性是什么泉孩?
3.?dāng)?shù)據(jù)科學(xué)與其他數(shù)據(jù)分析的主要區(qū)別是什么坠七?
4.對(duì)于以下數(shù)據(jù),你如何進(jìn)行數(shù)據(jù)準(zhǔn)備:“The customer appeared to be dissatisfied with product 1A2345 (released last May).”
5.?dāng)?shù)據(jù)探索階段需要做什么工作糯钙?
6.?dāng)?shù)據(jù)表示階段包括哪些過(guò)程尊浓?
7.?dāng)?shù)據(jù)發(fā)現(xiàn)包括哪些工作逞频?
8.什么是數(shù)據(jù)學(xué)習(xí)?
9.什么是數(shù)據(jù)產(chǎn)品創(chuàng)建眠砾?
10.在知識(shí)虏劲、交付物和可視化產(chǎn)品階段,需要做什么工作褒颈?和數(shù)據(jù)產(chǎn)品創(chuàng)建階段有什么不同柒巫?
11.?dāng)?shù)據(jù)科學(xué)流程是一個(gè)線(xiàn)性流程嗎?解釋一下谷丸。
12.什么是數(shù)據(jù)產(chǎn)品堡掏?它為什么很重要?
13.舉出幾個(gè)數(shù)據(jù)產(chǎn)品的例子刨疼。
14.在流程的最后階段創(chuàng)建的可視化產(chǎn)品與在數(shù)據(jù)探索階段創(chuàng)建的可視化產(chǎn)品有什么不同泉唁?
15.流程的所有階段都是不可或缺的嗎?為什么揩慕?
Julia 數(shù)據(jù)工程
- 數(shù)據(jù)工程是數(shù)據(jù)科學(xué)流程中的一個(gè)必備環(huán)節(jié)亭畜,盡管很花費(fèi)時(shí)間,也很枯燥無(wú)味迎卤,但長(zhǎng)遠(yuǎn)來(lái)看拴鸵,能為你節(jié)省大量的時(shí)間。
- 數(shù)據(jù)框是一種流行的數(shù)據(jù)結(jié)構(gòu)蜗搔,它可以有效地處理缺失值(以 NA 表示)劲藐,缺失值可以通過(guò) isna()函數(shù)識(shí)別出來(lái)。向數(shù)據(jù)框中加載數(shù)據(jù)非常容易樟凄,使用 readtable()命令即可聘芜,將數(shù)據(jù)框保存為分隔值文件也非常容易,使用 writetable()即可缝龄。
- 要想使用 .json 文件中的數(shù)據(jù)汰现,可以使用 JSON 擴(kuò)展包和其中的 parse()命令挂谍。你可以使用這個(gè)擴(kuò)展包中的 print()命令創(chuàng)建一個(gè) .json 文件。從 .json 文件中提取出的數(shù)據(jù)是保存在字典對(duì)象中的服鹅。
- 數(shù)據(jù)清洗是一個(gè)復(fù)雜的過(guò)程凳兵,根據(jù)數(shù)據(jù)類(lèi)型的不同,包括以下步驟企软。
- 數(shù)值型數(shù)據(jù):去除缺失值庐扫,處理離群點(diǎn)。
- 文本數(shù)據(jù):去除不必要的字符仗哨,去除停用詞(在進(jìn)行文本分析時(shí))
數(shù)據(jù)格式化(將每個(gè)變量轉(zhuǎn)換為最合適的類(lèi)型)非常重要形庭,因?yàn)榭梢怨?jié)省存儲(chǔ)資源,并有助于在隨后的階段中避免錯(cuò)誤厌漂。 - 數(shù)據(jù)轉(zhuǎn)換是數(shù)據(jù)工程中的常見(jiàn)操作萨醒,它的具體操作取決于數(shù)據(jù)的類(lèi)型。
- 數(shù)值型數(shù)據(jù):標(biāo)準(zhǔn)化(使所有特征的值可以互相比較)苇倡、離散化(將連續(xù)型特征轉(zhuǎn)換為離散型特征)富纸、二值化(將一個(gè)離散型特征轉(zhuǎn)換為一組二值變量),以及將二值特征轉(zhuǎn)換為連續(xù)型特征(僅適用于二值分類(lèi)問(wèn)題)旨椒。
- 文本數(shù)據(jù):大小寫(xiě)標(biāo)準(zhǔn)化(使所有字符都大寫(xiě)或者都小寫(xiě))和向量化(將文本轉(zhuǎn)換為二值數(shù)組)晓褪。
- 特征評(píng)價(jià)對(duì)理解數(shù)據(jù)集是非常必要的。根據(jù)你隨后想建立的模型的類(lèi)型综慎,有多種策略可以完成特征評(píng)價(jià)涣仿,其中最重要的如下。
- 區(qū)分指數(shù)——連續(xù)型特征示惊。
- 費(fèi)舍爾判別比——連續(xù)型特征好港。
- 相似度指數(shù)——離散型特征。
- 杰卡德相似度——離散型特征米罚。
- 互信息——既適用于離散型特征钧汹,也適用于連續(xù)型特征。
思考題
1.在數(shù)據(jù)科學(xué)項(xiàng)目中录择,數(shù)據(jù)工程具有哪些重要性崭孤?
2.?dāng)?shù)據(jù)框與矩陣相比,有哪些主要的優(yōu)點(diǎn)糊肠?
3.如何從 .json 文件中導(dǎo)入數(shù)據(jù)?
4.假如你必須使用大于計(jì)算機(jī)內(nèi)存容量的數(shù)據(jù)文件來(lái)進(jìn)行數(shù)據(jù)工程遗锣,那么你該如何進(jìn)行這項(xiàng)工作货裹?
5.?dāng)?shù)據(jù)清洗要做什么?
6.在數(shù)據(jù)工程中精偿,數(shù)據(jù)類(lèi)型為什么特別重要弧圆?
7.你應(yīng)對(duì)數(shù)值型數(shù)據(jù)進(jìn)行怎樣的轉(zhuǎn)換赋兵,才能使所有的變量在取值上具有可比性?
8.在解決文本分析問(wèn)題時(shí)搔预,你認(rèn)為 Julia 中的哪種數(shù)據(jù)類(lèi)型是最有用的霹期?
9.假設(shè)你有一些文本數(shù)據(jù),你要對(duì)其進(jìn)行數(shù)據(jù)工程拯田。每條記錄中都有一個(gè)字符串變量历造,其中或者包含關(guān)鍵字或關(guān)鍵短語(yǔ),或者不包含船庇。你應(yīng)如何有效地保存這個(gè)文件吭产,才能使你以后可以使用這個(gè)文件,并分享給其他同事鸭轮?
10.你應(yīng)如何評(píng)價(jià) OnlineNewsPopularity 數(shù)據(jù)集中的特征臣淤?你應(yīng)如何評(píng)價(jià) Spam 數(shù)據(jù)集中的特征?
探索數(shù)據(jù)集
數(shù)據(jù)探索包含很多不同的技術(shù)窃爷。其中最重要的是描述性統(tǒng)計(jì)(可以由 StatsBase 擴(kuò)展包實(shí)現(xiàn))邑蒋、繪制統(tǒng)計(jì)圖(Gadfly 擴(kuò)展包)和假設(shè)形成與檢驗(yàn)(HypothesisTests 擴(kuò)展包)。
描述性統(tǒng)計(jì)使用 StatsBase 擴(kuò)展包按厘,你可以計(jì)算出變量 x 的一些最重要的描述性統(tǒng)計(jì)量医吊,常用函數(shù)如下。
summarystats(x)
:這個(gè)函數(shù)的優(yōu)點(diǎn)是可以將統(tǒng)計(jì)結(jié)果保存在一個(gè)對(duì)象中刻剥,以供我們隨后使用遮咖。describe(x)
:通過(guò)將統(tǒng)計(jì)結(jié)果顯示在控制臺(tái)中,這個(gè)函數(shù)可以使我們更好地理解變量造虏。使用下面任何一種函數(shù)御吞,都可以計(jì)算出兩個(gè)變量之間的相關(guān)性。
cor(x,y)
:皮爾遜方法漓藕,適用于正態(tài)分布陶珠。corspearman(x,y)
:斯皮爾曼方法,適用于任何類(lèi)型的分布享钞。corkendall(x,y)
:肯德?tīng)柗椒ㄗ岱蹋瑯舆m用于任何類(lèi)型的分布。如果想創(chuàng)建一個(gè)相關(guān)性表格栗竖,其中包含數(shù)據(jù)集中所有變量之間的相關(guān)性暑脆,可以使用上面任何一種相關(guān)性函數(shù),并將整個(gè)數(shù)據(jù)集轉(zhuǎn)換為數(shù)組狐肢,作為唯一的參數(shù)傳遞給它添吗。
統(tǒng)計(jì)圖
在 Julia 中,有好幾種擴(kuò)展包可以繪制統(tǒng)計(jì)圖份名,其中最重要的是:Gadfly碟联、Plotly妓美、Bokeh、Winston 和 Vega鲤孵。
在使用 Gadfly 創(chuàng)建可視化產(chǎn)品之前壶栋,最好將所有的變量保存在數(shù)據(jù)框中。
在所有的 Gadfly 統(tǒng)計(jì)圖中普监,你可以在 plot()函數(shù)中使用如下參數(shù)為統(tǒng)計(jì)圖做標(biāo)記贵试。
Guide.xlabel("Name of your X axis")
Guide.ylabel("Name of your Y axis")
Guide.title("Name of your plot")
你可以使用 Gadfly 輕松地創(chuàng)建以下統(tǒng)計(jì)圖。
條形圖:
plot(DataFrameYouWishToUse,
x="IndependentVariable",Geom.bar)鹰椒。
- 折線(xiàn)圖:
plot(DataFrameYouWishToUse,
y="DependentVariable",Geom.line)锡移。
- 散點(diǎn)圖:
plot(x=DataFrameName[:IndependentVariable],
y=DataFrameName[:DependentVariable],Geom.point)。
- 直方圖:
plot(x=DataFrameName[:VariableName],
Geom.histogram)漆际。
不管數(shù)據(jù)集的維度如何淆珊,你都可以使用 tSNE 擴(kuò)展包中的 t-SNE 算法對(duì)整個(gè)數(shù)據(jù)集進(jìn)行可視化。
你可以保存創(chuàng)建出的統(tǒng)計(jì)圖奸汇,使用 Cairo 擴(kuò)展包施符,可以將其保存在一個(gè)對(duì)象中±拚遥或者戳吝,你可以對(duì)統(tǒng)計(jì)圖進(jìn)行屏幕截圖,也可以在 REPL 中運(yùn)行命令贯涎,然后將其在瀏覽器中生成的結(jié)果保存為 HTML 文件听哭。
假設(shè)檢驗(yàn)
- 如果你對(duì)變量之間的關(guān)系有些猜想,假設(shè)檢驗(yàn)就是檢驗(yàn)這些猜想的可靠性的一種非常好的方法塘雳÷脚蹋可以使用 HypothesisTests 擴(kuò)展包中的工具進(jìn)行假設(shè)檢驗(yàn)。最常用的假設(shè)檢驗(yàn)方法如下败明。
- t-檢驗(yàn):pvalue(EqualVarianceTTest(x,y))隘马,或者對(duì)于變量具有不同方差的情況,pvalue(UnequalVarianceTTest (x,y))妻顶。
- 卡方檢驗(yàn):ChisqTest(X)酸员。
- 假設(shè)檢驗(yàn)可以基于兩種方式進(jìn)行評(píng)價(jià),每種方式都不能反映檢驗(yàn)結(jié)果的價(jià)值讳嘱。然而幔嗦,它們可以表示出檢驗(yàn)在科學(xué)上的有效性。這兩種方式如下沥潭。
- 顯著性(alpha):假設(shè)檢驗(yàn)發(fā)生第一類(lèi)錯(cuò)誤的概率崭添。顯著性水平經(jīng)常使用閾值來(lái)定義,對(duì)應(yīng)的 alpha 值為0.05(通常為最高值)叛氨、0.01和0.001(通常為最低值)呼渣。
- 檢驗(yàn)力:假設(shè)檢驗(yàn)沒(méi)有發(fā)生第二類(lèi)錯(cuò)誤的概率。檢驗(yàn)力對(duì)應(yīng)著假設(shè)檢驗(yàn)得到正面結(jié)果(結(jié)果或者正確寞埠,或者不正確)的可能性屁置。
- 除了 t-檢驗(yàn)和卡方檢驗(yàn),你還可以使用其他若干種檢驗(yàn)方法仁连,這在 HypothesisTests 的文檔中有詳細(xì)的介紹蓝角。
思考題
1.如果識(shí)別出數(shù)據(jù)集中的兩個(gè)變量高度相關(guān),那么應(yīng)該采取什么操作饭冬?
2.在假設(shè)檢驗(yàn)中使鹅,滿(mǎn)足什么條件,可以接受原假設(shè)昌抠?
3.在一個(gè)分類(lèi)問(wèn)題中患朱,在什么條件下,你可以使用相關(guān)性來(lái)表示一個(gè)特征與分類(lèi)變量一致的程度炊苫?
4.選擇一個(gè)數(shù)據(jù)集進(jìn)行探索裁厅,并記下所有有價(jià)值的發(fā)現(xiàn)。
5.對(duì)于不規(guī)則分布的變量侨艾,可以進(jìn)行t-檢驗(yàn)嗎执虹?
6.假設(shè)我們有一個(gè)由20位患者的數(shù)據(jù)組成的醫(yī)療數(shù)據(jù)集。使用標(biāo)準(zhǔn)的檢驗(yàn)方法唠梨,可以對(duì)其中的變量得出統(tǒng)計(jì)上顯著的結(jié)論嗎袋励?為什么?
7.要表示出數(shù)據(jù)集的特征空間当叭,最好使用哪種統(tǒng)計(jì)圖茬故。
8.t-SNE 函數(shù)的主要用途是什么?
構(gòu)建數(shù)據(jù)空間
- 數(shù)據(jù)降維是數(shù)據(jù)科學(xué)中的一個(gè)基本環(huán)節(jié)科展,因?yàn)樗梢詨嚎s并精簡(jiǎn)數(shù)據(jù)集均牢,使數(shù)據(jù)分析方法更加有效。降維后的數(shù)據(jù)集會(huì)占用更少的存儲(chǔ)空間才睹,并節(jié)約其他資源徘跪,這也是一個(gè)額外的收獲。
數(shù)據(jù)降維有兩種主要方法:僅使用特征(無(wú)監(jiān)督)的方法琅攘,以及使用特征和目標(biāo)變量組合的方法(監(jiān)督式)垮庐。
無(wú)監(jiān)督數(shù)據(jù)降維方法
- 最常用的無(wú)監(jiān)督數(shù)據(jù)降維方法是主成分分析(PCA)。這種統(tǒng)計(jì)方法適合于小型或中型的特征集坞琴。它使提取出的元特征能夠最大化地解釋原數(shù)據(jù)集中的方差哨查。
- 獨(dú)立成分分析(ICA)是 PCA 的一種重要替代方法,它同樣不使用目標(biāo)變量剧辐。ICA 使互信息最大化寒亥,而不是方差邮府。它同樣可以生成元特征。
監(jiān)督式數(shù)據(jù)降維方法
- 監(jiān)督式數(shù)據(jù)降維方法可以更進(jìn)一步地分為基本方法(對(duì)單獨(dú)的特征進(jìn)行評(píng)價(jià))與高級(jí)方法(對(duì)成組特征進(jìn)行評(píng)價(jià))溉奕。
- 基本方法按照目標(biāo)變量的類(lèi)型褂傀,對(duì)每個(gè)特征都進(jìn)行評(píng)價(jià),選取出其中評(píng)分最高的加勤。
- 連續(xù)型目標(biāo)變量:余弦相似度仙辟、皮爾遜相關(guān)性、其他相似性度量鳄梅。
- 離散型目標(biāo)變量:費(fèi)舍爾判別比叠国、區(qū)別度指數(shù)、互信息戴尸。
高級(jí)方法
- 連續(xù)型目標(biāo)變量:基于遺傳算法(GA)的方法粟焊。
- 離散型目標(biāo)變量:基于區(qū)別度指數(shù)或基于 GA 的方法。
- 在進(jìn)行數(shù)據(jù)降維時(shí)校赤,沒(méi)有一種方法可以包治百病吆玖。需要根據(jù)具體的數(shù)據(jù)和資源來(lái)做出選擇。
思考題
1.給你一個(gè)包含1000000行和10000個(gè)特征的數(shù)據(jù)集马篮。你會(huì)對(duì)這個(gè)數(shù)據(jù)集進(jìn)行降維嗎沾乘?如果會(huì),你將使用什么方法浑测?為什么翅阵?
2.你正在進(jìn)行一個(gè)項(xiàng)目,其中有一個(gè)1000000行和500個(gè)特征的數(shù)據(jù)集迁央。你會(huì)進(jìn)行數(shù)據(jù)降維嗎掷匠?如果會(huì),你將使用什么方法岖圈?為什么讹语?
3.在對(duì)初始的基因表達(dá)數(shù)據(jù)進(jìn)行了大量?jī)?yōu)化工作之后,你得到了一個(gè)200行和5000個(gè)特征的數(shù)據(jù)集蜂科。你會(huì)對(duì)這個(gè)數(shù)據(jù)集做哪些數(shù)據(jù)降維操作顽决?為什么?
4.給你一個(gè)10000行和20個(gè)特征的數(shù)據(jù)集导匣,你會(huì)對(duì)這個(gè)數(shù)據(jù)集做數(shù)據(jù)降維嗎才菠?為什么?
5.一個(gè)統(tǒng)計(jì)學(xué)家研制成功了一種數(shù)據(jù)降維方法贡定,通過(guò)檢查所有可能的特征組合赋访,可以保證找出最好的降維特征集合。你會(huì)在數(shù)據(jù)科學(xué)項(xiàng)目中使用這種方法嗎?為什么蚓耽?
6.與常用的統(tǒng)計(jì)方法(例如渠牲,PCA)相比,基于特征評(píng)價(jià)的數(shù)據(jù)降維方法的優(yōu)點(diǎn)有哪些田晚?
7.一位著名學(xué)者開(kāi)發(fā)了一種方法嘱兼,只要輸入在統(tǒng)計(jì)上互相獨(dú)立,就能夠以極高的效率和表現(xiàn)來(lái)處理數(shù)據(jù)贤徒。要將數(shù)據(jù)集轉(zhuǎn)換為可控的規(guī)模,你應(yīng)該使用哪種數(shù)據(jù)降維方法汇四?為什么接奈?
8.給你一個(gè)1000000個(gè)特征和100000000行的數(shù)據(jù)集。很多特征彼此相關(guān)通孽。你有充足的時(shí)間來(lái)挖掘這個(gè)數(shù)據(jù)集序宦,目標(biāo)是建立一個(gè)模型,使這個(gè)模型在降維后的數(shù)據(jù)集上具有最高的準(zhǔn)確率背苦。你應(yīng)該使用什么方法互捌?為什么?
數(shù)據(jù)抽樣與結(jié)果評(píng)價(jià)
1.抽樣
- 抽樣可以提供一個(gè)更容易處理的規(guī)模較小的數(shù)據(jù)集行剂,同時(shí)(在某種程度上)保留初始數(shù)據(jù)集中的信息秕噪。
基本抽樣不考慮數(shù)據(jù)集中的類(lèi)別結(jié)構(gòu),對(duì)于相對(duì)均衡的數(shù)據(jù)集效果較好厚宰。在回歸問(wèn)題中腌巾,它是最常用的抽樣方法。 - 分層抽樣要考慮每種類(lèi)別中元素的數(shù)量铲觉,它生成的樣本與初始數(shù)據(jù)具有同樣的類(lèi)別分布澈蝙。這種抽樣方法特別適合不平衡的數(shù)據(jù)集和 K 折交叉驗(yàn)證。
通過(guò)分類(lèi)模型和回歸模型的性能指標(biāo)可以對(duì)模型結(jié)果進(jìn)行評(píng)價(jià)撵幽。
2.分類(lèi)
- 評(píng)價(jià)分類(lèi)模型的指標(biāo)有好幾種灯荧,最重要的是準(zhǔn)確度(基本準(zhǔn)確度和加權(quán)準(zhǔn)確度)、精確度盐杂、召回度逗载、F1、總成本(基于成本矩陣)和 ROC 曲線(xiàn)(及其相關(guān)指標(biāo))况褪。多數(shù)指標(biāo)都與特定分類(lèi)問(wèn)題的混淆矩陣相關(guān)撕贞。
- 混淆矩陣是一個(gè) qxq 的矩陣,表示分類(lèi)器預(yù)測(cè)標(biāo)簽的正確程度以及錯(cuò)誤預(yù)測(cè)的位置(q=類(lèi)別數(shù)量)测垛。對(duì)角線(xiàn)上的元素對(duì)應(yīng)于正確分類(lèi)捏膨。
- 準(zhǔn)確度是一個(gè)基本性能指標(biāo),表示正確分類(lèi)數(shù)量與總預(yù)測(cè)數(shù)量的比值。它的值在0和1之間(越高越好)号涯,在平衡的數(shù)據(jù)集上效果很好目胡。
- 加權(quán)準(zhǔn)確度是準(zhǔn)確度的一個(gè)變種,它考慮了每種類(lèi)別的重要性链快,并據(jù)此對(duì)指標(biāo)值進(jìn)行了轉(zhuǎn)換誉己。它適合不平衡的數(shù)據(jù)集,或我們對(duì)其中一種類(lèi)別的預(yù)測(cè)結(jié)果更加重視的數(shù)據(jù)集域蜗。權(quán)重可以任意定義巨双。
- 精確度是表示分類(lèi)器預(yù)測(cè)某種類(lèi)別的可靠程度的一種指標(biāo)。
- 召回度是表示某種類(lèi)別的元素被正確辨別出的比例的一種指標(biāo)霉祸。
- F1 是精確度和召回度的調(diào)和平均數(shù)筑累,表示分類(lèi)器在一個(gè)特定類(lèi)別上的性能。
- 成本矩陣是一個(gè) q×q 矩陣丝蹭,表示每種誤判的成本(對(duì)角線(xiàn)上都是0)慢宗。它與加權(quán)準(zhǔn)確度非常相似,可以用來(lái)計(jì)算一個(gè)分類(lèi)器在某個(gè)數(shù)據(jù)集上出現(xiàn)誤判的總成本奔穿。成本可以隨意定義镜沽。
- ROC 曲線(xiàn)可以表示出一個(gè)分類(lèi)器的整體性能,適用于只有兩個(gè)類(lèi)別的分類(lèi)問(wèn)題贱田。
- AUC(曲線(xiàn)下面積的縮寫(xiě))是一種二元分類(lèi)器的性能指標(biāo)缅茉,它基于 ROC 曲線(xiàn),值在0和1之間(越高越好)湘换。
- Gini 系數(shù)是另一種基于 ROC 曲線(xiàn)的性能指標(biāo)宾舅,它表示一個(gè)二元分類(lèi)器優(yōu)于隨機(jī)猜測(cè)的程度。它的值在?1和1之間(越高越好)彩倚,如果值為正筹我,則說(shuō)明分類(lèi)器優(yōu)于隨機(jī)分類(lèi)。
3.回歸
- 回歸模型使用預(yù)測(cè)值與實(shí)際值之間距離的一些變種來(lái)進(jìn)行評(píng)價(jià)帆离。最常用的評(píng)價(jià)指標(biāo)是均方誤差(MSE)和誤差平方和(SSE)蔬蕊。
- 平方誤差是一個(gè)向量,其中包含回歸模型對(duì)各個(gè)數(shù)據(jù)點(diǎn)的預(yù)測(cè)誤差的平方哥谷。誤差就是實(shí)際值與預(yù)測(cè)值之間的差異岸夯。
- MSE 是回歸問(wèn)題中平方誤差的算術(shù)平均數(shù)。
- RMSE 是回歸問(wèn)題中 MSE 的平方根们妥。
- SSE 是回歸問(wèn)題中平方誤差的總和猜扮,它等價(jià)于以向量表示的預(yù)測(cè)值和實(shí)際值之間的距離的平方。
4.K 折交叉驗(yàn)證(KFCV)
- KFCV 是一種評(píng)價(jià)策略监婶,它將分類(lèi)模型或回歸模型運(yùn)行多次旅赢,以使我們對(duì)模型性能有比較全面的認(rèn)識(shí)齿桃,確保評(píng)價(jià)結(jié)果不會(huì)因某一個(gè)特殊的訓(xùn)練集或測(cè)試集而確定。
- 執(zhí)行 KFCV 時(shí)煮盼,要將數(shù)據(jù)集劃分為 K 個(gè)大致相等的子集短纵,在隨后的 K 次實(shí)驗(yàn)中,每次使用一個(gè)子集作為測(cè)試集僵控。
- KFCV 中 K 的值要根據(jù)數(shù)據(jù)集規(guī)模來(lái)確定香到。規(guī)模比較大的數(shù)據(jù)集需要的 K 值較小,對(duì)于規(guī)模比較小的數(shù)據(jù)集报破,最好使用比較大的 K 值悠就。
- 留一法是一種特殊的 KFCV,這時(shí) K 等于數(shù)據(jù)集中數(shù)據(jù)點(diǎn)的數(shù)量充易。它適合于非常小的數(shù)據(jù)集理卑,在數(shù)據(jù)科學(xué)中不經(jīng)常使用。
思考題
1.你能對(duì)具有連續(xù)型目標(biāo)變量的數(shù)據(jù)集進(jìn)行分層抽樣嗎蔽氨?
2.對(duì)于嚴(yán)重不平衡的數(shù)據(jù)集,應(yīng)該使用何種抽樣方法帆疟?為什么鹉究?
3.哪種抽樣方法產(chǎn)生的樣本偏離最小踪宠?
4.能夠給出一個(gè)總成本(基于誤判成本)的標(biāo)準(zhǔn)定義自赔,使它的值位于0和1之間嗎?如何實(shí)現(xiàn)柳琢?
5.可以在三分類(lèi)問(wèn)題上應(yīng)用 ROC 曲線(xiàn)嗎绍妨?
6.對(duì)于任何問(wèn)題都可以進(jìn)行 KFCV 嗎?給出一個(gè)例子來(lái)支持你的答案柬脸。
無(wú)監(jiān)督式機(jī)器學(xué)習(xí)
- 無(wú)監(jiān)督式學(xué)習(xí)是一種沒(méi)有目標(biāo)變量的數(shù)據(jù)分析過(guò)程他去。
- 無(wú)監(jiān)督式學(xué)習(xí)可以從數(shù)據(jù)集中挖掘出深層次的知識(shí),幫助我們更好地理解數(shù)據(jù)集倒堕,使監(jiān)督式學(xué)習(xí)更加可控灾测,并經(jīng)常可以獲得更好的效果垦巴。
- 無(wú)監(jiān)督式學(xué)習(xí)有很多類(lèi)型媳搪,包括聚類(lèi)、關(guān)聯(lián)規(guī)則發(fā)現(xiàn)和混合分解骤宣。
- 聚類(lèi)是至今為止最常用的無(wú)監(jiān)督式學(xué)習(xí)方法秦爆,已經(jīng)被研究得非常充分。
- 聚類(lèi)方法可以使用很多種方式進(jìn)行分類(lèi)憔披,最常用的是分割聚類(lèi)和層次聚類(lèi)等限,這種分類(lèi)的重點(diǎn)在于聚類(lèi)過(guò)程的目標(biāo)。其他分類(lèi)方法關(guān)注的是聚類(lèi)算法的其他方面,比如確定聚類(lèi)和隨機(jī)聚類(lèi)精刷。
- 分割聚類(lèi)生成一定數(shù)量的互斥的子集(劃分)拗胜,每個(gè)子集中的數(shù)據(jù)點(diǎn)都盡可能相似,而與其他子集中的數(shù)據(jù)點(diǎn)盡可能相異怒允。多數(shù)分割聚類(lèi)算法都使用子集數(shù)量作為參數(shù)埂软。
- 絕大多數(shù)分割聚類(lèi)方法本質(zhì)上都具有隨機(jī)性,分割聚類(lèi)不但可以進(jìn)行數(shù)據(jù)探索纫事,還可以為分類(lèi)問(wèn)題找出目標(biāo)變量勘畔。Julia 的 Clustering 擴(kuò)展包實(shí)現(xiàn)了分割聚類(lèi)方法。
- K-均值方法是最常用的分割聚類(lèi)算法丽惶,它根據(jù)數(shù)據(jù)點(diǎn)之間的距離將數(shù)據(jù)集劃分成 K 個(gè)簇炫七。它的速度特別快,在比較簡(jiǎn)單的數(shù)據(jù)集上效果非常好钾唬。要在 Julia 中應(yīng)用 K-均值算法万哪,可以使用代碼:kmeans(data,K),這里的 data 是數(shù)據(jù)集(用行來(lái)表示特征)抡秆,K 是簇的數(shù)量奕巍。
- DBSCAN 是一種更加強(qiáng)大的分割聚類(lèi)算法,它使用密度這個(gè)概念來(lái)處理難度更大的數(shù)據(jù)集儒士。它的速度不如 K-均值那么快的止,但整體性能更好,而且不需要事先確定簇的數(shù)量着撩。在 Julia 中運(yùn)行 DBSCAN 可以使用如下代碼:dbscan(D,d,K)诅福,這里的 D 是數(shù)據(jù)點(diǎn)兩兩之間的距離矩陣,d 是一個(gè)最小密度值拖叙,超過(guò)這個(gè)值的數(shù)據(jù)點(diǎn)就被認(rèn)為是密集的氓润,K 是計(jì)算密度時(shí)需要考慮的附近數(shù)據(jù)點(diǎn)的數(shù)量。
- 層次聚類(lèi)是另外一種聚類(lèi)的方式憋沿,它將數(shù)據(jù)點(diǎn)逐漸組合在一起旺芽,直至形成一個(gè)獨(dú)立的簇。最后得到一個(gè)樹(shù)結(jié)構(gòu)辐啄,可以在二維平面上將所有有意義的分組都表示出來(lái)采章。
- 層次聚類(lèi)主要用于數(shù)據(jù)探索。在 Julia 中壶辜,你可以使用 QuickShift-Clustering 擴(kuò)展包來(lái)完成層次聚類(lèi)悯舟,代碼如下:quickshift(data),其中 data 是數(shù)據(jù)集(用行表示特征砸民,和前面一樣)抵怎。你可以使用代碼 quickshiftplot(Z,data,labels)來(lái)查看結(jié)果中的樹(shù)結(jié)構(gòu)奋救,其中 Z 是 quickshift()函數(shù)的輸出,labels 是聚類(lèi)算法分配的標(biāo)簽(quickshiftlabels(Z)的輸出)反惕。
- 所有聚類(lèi)方法都會(huì)使用某種相異度指標(biāo)尝艘,比如歐氏距離。在 Julia 的 Distances 擴(kuò)展包中姿染,提供了若干種距離度量方式背亥。
- 通過(guò)幾種不同的度量方式,可以對(duì)聚類(lèi)系統(tǒng)的輸出進(jìn)行驗(yàn)證悬赏,最常用的度量方式是 Silhouette 和信息變異度〗坪海現(xiàn)在 Julia 中只完整實(shí)現(xiàn)了 Silhouette(參見(jiàn)本章筆記本文件)。
- Silhouette 是一種基于距離的度量方式闽颇,它的值在-1和1之間盾戴,表示與其他簇相比,數(shù)據(jù)點(diǎn)與其屬于的簇之間的相近程度兵多,值越高越好尖啡。通過(guò) Julia 自定義函數(shù) sil():sil(Labels,D)可以計(jì)算出這個(gè)指標(biāo),這里的 labels 是一個(gè)向量剩膘,其中包含聚類(lèi)模型分配的標(biāo)簽可婶,D 是數(shù)據(jù)點(diǎn)兩兩之間的距離矩陣。
- 要想更加有效地進(jìn)行聚類(lèi)援雇,需要注意以下幾點(diǎn)。
- 控制特征數(shù)量椎扬,使其總數(shù)較少(在不損失大量信息的情況下盡可能地減少特征數(shù)量)惫搏。
- 對(duì)聚類(lèi)過(guò)程中使用的所有特征和元特征進(jìn)行標(biāo)準(zhǔn)化。
- 創(chuàng)建可視化圖形蚕涤,來(lái)理解各個(gè)簇以及簇之間的聯(lián)系筐赔。
- 檢查簇中心點(diǎn),獲得關(guān)于簇的性質(zhì)的額外信息揖铜。
思考題
1.在聚類(lèi)中茴丰,距離為什么非常重要?
2.對(duì)于特別復(fù)雜的數(shù)據(jù)集天吓,你應(yīng)該使用哪種聚類(lèi)方法贿肩?
3.為什么不能使用第9章中介紹的度量方式來(lái)評(píng)價(jià)聚類(lèi)系統(tǒng)的輸出?
4.所有類(lèi)型的數(shù)據(jù)都可以被聚類(lèi)嗎龄寞?在聚類(lèi)之前汰规,你需要注意什么?
5.分割聚類(lèi)與 t-SNE(第7章)有什么不同物邑?
6.?dāng)?shù)據(jù)科學(xué)中必須要進(jìn)行聚類(lèi)嗎溜哮?為什么滔金?
7.?dāng)?shù)據(jù)維度是如何影響聚類(lèi)的效果的?有什么應(yīng)對(duì)方法茂嗓?
8.在一個(gè)已經(jīng)標(biāo)準(zhǔn)化的數(shù)據(jù)集中餐茵,如何強(qiáng)調(diào)一個(gè)特征,使其在聚類(lèi)過(guò)程中發(fā)揮更大的作用述吸?
監(jiān)督式機(jī)器學(xué)習(xí)
- 監(jiān)督式學(xué)習(xí)包括分類(lèi)和回歸方法忿族,是應(yīng)用最廣泛的數(shù)據(jù)科學(xué)方法,因?yàn)槎鄶?shù)有價(jià)值的成果都來(lái)自于這種方法刚梭。
- 現(xiàn)在有多種監(jiān)督式學(xué)習(xí)方法肠阱。在本章中我們要重點(diǎn)介紹的是:基于樹(shù)的方法、基于網(wǎng)絡(luò)的方法和統(tǒng)計(jì)回歸朴读。
- 基于樹(shù)的方法:基于樹(shù)形機(jī)器學(xué)習(xí)系統(tǒng)的方法包括決策樹(shù)屹徘、回歸樹(shù)和隨機(jī)森林。
- 決策樹(shù)是一種簡(jiǎn)單而有效的分類(lèi)系統(tǒng)衅金,它使用多個(gè)二元選擇噪伊,通過(guò)特征來(lái)對(duì)數(shù)據(jù)進(jìn)行分類(lèi),直至得到一個(gè)可能性足夠高的目標(biāo)標(biāo)簽氮唯。決策樹(shù)使用簡(jiǎn)單鉴吹,解釋性好。
- 回歸樹(shù)是決策樹(shù)的回歸應(yīng)用惩琉。
- 隨機(jī)森林是一組共同工作的樹(shù)豆励,可以解決分類(lèi)問(wèn)題或回歸問(wèn)題。隨機(jī)森林的性能優(yōu)于其中任何一顆單個(gè)的樹(shù)瞒渠,有助于確定數(shù)據(jù)集中某個(gè)特征的值良蒸。
- 基于網(wǎng)絡(luò)的方法:這些方向需要建立一個(gè)網(wǎng)絡(luò)(圖),網(wǎng)絡(luò)的每個(gè)部分都帶有通過(guò)訓(xùn)練階段建立的模型的信息伍玖。它們通常要比基于樹(shù)的方法復(fù)雜嫩痰,它們都需要用圖來(lái)表示泛化能力。最常用的基于網(wǎng)絡(luò)的模型是神經(jīng)網(wǎng)絡(luò)窍箍,極限學(xué)習(xí)機(jī)也在不斷取得進(jìn)展串纺。
- 人工神經(jīng)網(wǎng)絡(luò)(ANN)是一種高級(jí)的監(jiān)督式學(xué)習(xí)方法,它模擬大腦組織的功能椰棘,從數(shù)據(jù)中提取出有用的特征纺棺,并以此來(lái)預(yù)測(cè)未知數(shù)據(jù)點(diǎn)。它既可以用于分類(lèi)問(wèn)題邪狞,也可以用于回歸問(wèn)題五辽。ANN 可以用 Julia 中的多個(gè)擴(kuò)展包來(lái)實(shí)現(xiàn),其中最好的是 BackpropNeuralNet外恕。與其他分類(lèi)器不同杆逗,ANN 需要對(duì)目標(biāo)變量進(jìn)行特殊的預(yù)處理乡翅,才能與算法兼容。
- 極限學(xué)習(xí)機(jī)(ELM)與 ANN 非常相似罪郊,但是它的訓(xùn)練階段要快捷得多蠕蚜,因?yàn)樗鼘⒄麄€(gè)訓(xùn)練過(guò)程簡(jiǎn)化成了一個(gè)簡(jiǎn)單直接的可以使用分析方法解決的最優(yōu)化問(wèn)題。還有悔橄,它的性能也非常好靶累,參數(shù)(隱藏層的數(shù)量,每層節(jié)點(diǎn)數(shù)量)調(diào)整也相當(dāng)容易癣疟。ELM 可以在 Julia 中使用 ELM 擴(kuò)展包實(shí)現(xiàn)挣柬。
- 統(tǒng)計(jì)回歸(也稱(chēng)為廣義回歸模型):這是一種經(jīng)典的回歸方法,它使用可用特征的各種線(xiàn)性組合或非線(xiàn)性組合睛挚,將表示預(yù)測(cè)值和實(shí)際值之間差異的誤差函數(shù)最小化邪蛔。統(tǒng)計(jì)回歸速度非常快扎狱,也非常容易解釋侧到。能實(shí)現(xiàn)的統(tǒng)計(jì)回歸的最好的擴(kuò)展包是廣義線(xiàn)性模型擴(kuò)展包(GLM)。
- 其他監(jiān)督式學(xué)習(xí)系統(tǒng)包括支持向量機(jī)(SVM)淤击、直推式系統(tǒng)匠抗、深度學(xué)習(xí)系統(tǒng)和貝葉斯網(wǎng)絡(luò)。
- 提升決策樹(shù)與隨機(jī)森林有些相似污抬,是一種基于樹(shù)進(jìn)行分類(lèi)的組合式方法汞贸。在 Julia 中,DecisionTree 擴(kuò)展包非常好地實(shí)現(xiàn)了這種算法印机。
- SVM 是一種非常聰明的監(jiān)督式學(xué)習(xí)方法(特別對(duì)于二元分類(lèi))著蛙,它可以改變特征空間,找出分類(lèi)的最佳邊界耳贬。
- 直推式系統(tǒng)是一種基于距離或相似度的監(jiān)督式學(xué)習(xí)方法,通常用于分類(lèi)問(wèn)題猎唁。它通過(guò)找出已知數(shù)據(jù)點(diǎn)和未知數(shù)據(jù)點(diǎn)之間的直接聯(lián)系來(lái)進(jìn)行預(yù)測(cè)咒劲,省略了泛化階段。它不建立模型诫隅,一般來(lái)說(shuō)速度很快腐魂,但難以解釋。
- 深度學(xué)習(xí)系統(tǒng)是當(dāng)今最為復(fù)雜的監(jiān)督式學(xué)習(xí)系統(tǒng)逐纬。它是傳統(tǒng) ANN 的增強(qiáng)版本蛔屹,具有更多的層和輸入節(jié)點(diǎn),它需要大量數(shù)據(jù)才能收到好的效果豁生。深度學(xué)習(xí)主要用于傳統(tǒng)方法難以發(fā)揮作用的專(zhuān)門(mén)的領(lǐng)域兔毒,比如圖像分析漫贞。盡管它需要較長(zhǎng)的訓(xùn)練時(shí)間并且消耗大量資源,但是它可以很好地模擬人類(lèi)大腦的功能育叁,是目前最高級(jí)別的主流 AI 技術(shù)迅脐。
- 貝葉斯網(wǎng)絡(luò)是一種基于網(wǎng)絡(luò)的監(jiān)督式學(xué)習(xí)方法,它基于圖論和貝葉斯統(tǒng)計(jì)對(duì)問(wèn)題進(jìn)行建模豪嗽。通常來(lái)說(shuō)谴蔑,它要比其他方法更消耗時(shí)間,但效果非常好龟梦,特別是當(dāng)特征彼此獨(dú)立的時(shí)候隐锭。
思考題
1.你有一個(gè)包含200個(gè)數(shù)據(jù)點(diǎn)和100個(gè)特征的數(shù)據(jù)樣本,其中多數(shù)特征都是獨(dú)立的计贰。你應(yīng)該使用哪種監(jiān)督式學(xué)習(xí)系統(tǒng)钦睡?為什么?
2.對(duì)于一個(gè)結(jié)構(gòu)良好的數(shù)據(jù)集蹦玫,其中特征的信息非常豐富赎婚,并且在統(tǒng)計(jì)上彼此獨(dú)立,那么最好的分類(lèi)系統(tǒng)應(yīng)該是什么樱溉?
3.對(duì)于一個(gè)海量的數(shù)據(jù)混亂的數(shù)據(jù)集挣输,最合適的分類(lèi)方法是什么留拾?
4.一個(gè)魯棒性非常好的監(jiān)督式學(xué)習(xí)系統(tǒng)不需要進(jìn)行數(shù)據(jù)工程嗎疏尿?解釋一下丹擎。
5.如果在你的項(xiàng)目中竹观,可解釋性非常重要板祝,那么最合適的監(jiān)督式學(xué)習(xí)系統(tǒng)是什么亥宿?
6.對(duì)于回歸問(wèn)題躲惰,統(tǒng)計(jì)回歸與神經(jīng)網(wǎng)絡(luò)之間的關(guān)系是什么乡洼?
7.監(jiān)督式學(xué)習(xí)中的直推式系統(tǒng)的主要局限性是什么拇舀?如何克服逻族?
8.既然深度學(xué)習(xí)方法這么好,為什么不是所有人都應(yīng)該使用骄崩?
9.你正在處理一個(gè)每分鐘都在更新的數(shù)據(jù)集聘鳞。為了確保預(yù)測(cè)及時(shí),應(yīng)該使用哪種監(jiān)督式學(xué)習(xí)系統(tǒng)要拂?
10.除了預(yù)測(cè)抠璃,你還可以使用深度學(xué)習(xí)網(wǎng)絡(luò)做些什么別的事情?如何做脱惰?
11.如何計(jì)算出 ELM 預(yù)測(cè)的正確概率搏嗡?
圖分析
- 圖非常適合于某種問(wèn)題的建模,它也可以用于很多種數(shù)據(jù)集。
- 圖沒(méi)有維度采盒,因?yàn)樗菙?shù)據(jù)的一種抽象表達(dá)旧乞,重點(diǎn)在于數(shù)據(jù)之間的聯(lián)系。聯(lián)系可以是數(shù)據(jù)點(diǎn)之間纽甘、特征之間良蛮、類(lèi)別之間或任何其他數(shù)據(jù)之間的內(nèi)容。
- 圖可以是有向的悍赢,也可以是無(wú)向的决瞳,分別對(duì)應(yīng)于節(jié)點(diǎn)之間的聯(lián)系是單向的還是雙向的。
- 圖的定義可以通過(guò)邊列表(包括每種聯(lián)系的方向)以及相應(yīng)的權(quán)重(如果有的話(huà))來(lái)實(shí)現(xiàn)左权,或者通過(guò)連接矩陣(或鄰接矩陣)來(lái)實(shí)現(xiàn)皮胡。
- 對(duì)于一個(gè)給定的圖 g,我們可以計(jì)算出若干統(tǒng)計(jì)量赏迟,最重要的統(tǒng)計(jì)量如下:
- 節(jié)點(diǎn)數(shù)量——num_vertices(g)屡贺。
- 邊的數(shù)量——num_edges(g)。
- 節(jié)點(diǎn)集合——vertices(g)锌杀。
- 邊的集合——edges(g)甩栈。
- 是否有向圖——Graphs.is_directed(g)。
- 節(jié)點(diǎn) x 的度——out_degree(x,g)糕再。
- 節(jié)點(diǎn) x 的鄰居——Graphs.out_neighbors(x,g)量没。
- 圖的度——圖中所有節(jié)點(diǎn)的度的最大值。
- 環(huán)檢測(cè)需要找出是否有一條路徑突想,從一個(gè)點(diǎn)開(kāi)始并在同一個(gè)點(diǎn)結(jié)束殴蹄。環(huán)檢測(cè)有很多應(yīng)用,對(duì)于特征選擇尤其重要猾担。你可以使用函數(shù) test_cyclic_by_dfs(g)來(lái)在圖 g 上執(zhí)行環(huán)檢測(cè)袭灯。
- 沒(méi)有環(huán)的有向圖稱(chēng)為有向無(wú)環(huán)圖,簡(jiǎn)稱(chēng) DAG绑嘹。
- 連通子圖是一組彼此可達(dá)的節(jié)點(diǎn)的集合(也就是說(shuō)稽荧,對(duì)于集合中任意兩點(diǎn) A 和 B,都有一條路徑可以從 A 到達(dá) B)工腋。通過(guò)函數(shù) Graphs.connected_ components(g)姨丈,可以找出圖 g 中所有連通子圖。
團(tuán)是圖中一個(gè)彼此相連的節(jié)點(diǎn)集合夷蚊。因?yàn)樵趫D中經(jīng)常存在若干個(gè)團(tuán)(特別是社交網(wǎng)絡(luò)中),所以我們一般考慮其中最大的那個(gè)髓介,稱(chēng)為最大團(tuán)惕鼓。 - 最大團(tuán)是圖中最大的團(tuán)。根據(jù)我們所檢查的圖中不同部分唐础,通常有多個(gè)最大團(tuán)箱歧。通過(guò)函數(shù) Graphs.maximal_cliques(g)矾飞,我們可以找出圖 g 中所有最大團(tuán)。
- 圖中連接節(jié)點(diǎn) x 和其他節(jié)點(diǎn)的最短路徑一般是非常重要的呀邢,因?yàn)槭褂盟梢杂行У卦趫D中進(jìn)行移動(dòng)洒沦。要想在圖 g 中為節(jié)點(diǎn) x 找出這些最短路徑及其距離,可以使用 Dijktra 算法价淌,它使用函數(shù) Graphs.dijkstra_shortest_paths(g,ww,x)來(lái)實(shí)現(xiàn)申眼,這里的 ww 是對(duì)應(yīng)于圖中各條邊的權(quán)重向量,表示某種相異度或距離蝉衣。函數(shù)會(huì)生成一個(gè)對(duì)象括尸,其中包含若干條與節(jié)點(diǎn) x 的最短路徑相關(guān)的信息。這個(gè)對(duì)象最重要的屬性如下病毡。
- Parents:與節(jié)點(diǎn) x 相關(guān)的每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)列表濒翻。對(duì)于某個(gè)檢查節(jié)點(diǎn)來(lái)說(shuō),這個(gè)父節(jié)點(diǎn)是到達(dá) x 節(jié)點(diǎn)要經(jīng)過(guò)的最近的節(jié)點(diǎn)啦膜。請(qǐng)記住節(jié)點(diǎn) x 的父節(jié)點(diǎn)就是它自己有送。
Dists:由對(duì)應(yīng)于每條路徑的距離所組成的列表。 - 最小生成樹(shù)(或 MST)是一個(gè)無(wú)環(huán)圖僧家,它可以連接一個(gè)圖中的所有節(jié)點(diǎn)雀摘,并且總體權(quán)重最小⌒ネ危可以使用兩種算法計(jì)算出一個(gè)圖中的 MST:Prim 算法和 Kruskal 算法届宠。后者在 Julia 中更易于使用,可以通過(guò)函數(shù) kruskal_minimum_spantree(g,ww)來(lái)實(shí)現(xiàn)乘粒。這個(gè)函數(shù)的輸出是兩個(gè)對(duì)象:E 和 W豌注,分別表示 MST 的邊列表和相應(yīng)邊上的權(quán)重。
- 你可以使用 LightGraphs 擴(kuò)展包來(lái)保存和加載圖灯萍,如下所示轧铁。
- 保存圖 g:save(fn,g,gn),這里的 fn 是要保存圖 g 的數(shù)據(jù)文件的名稱(chēng)旦棉,gn(可選參數(shù))是在數(shù)據(jù)文件中用來(lái)引用圖的名稱(chēng)齿风。
- 加載圖 g:load(fn,gn),這里的 fn 是保存圖的數(shù)據(jù)文件的名稱(chēng)绑洛,gn(可選參數(shù))是要取出的圖的名稱(chēng)救斑。這個(gè)函數(shù)的輸出是一個(gè) LightGraphs 圖對(duì)象。如果你沒(méi)有使用第二個(gè)參數(shù)真屯,就會(huì)得到一個(gè)字典脸候,里面包含所有保存在數(shù)據(jù)文件中的圖。
- 如果你想圖可以同時(shí)被 Graphs 擴(kuò)展包和 LightGraphs 擴(kuò)展包所使用,那么可以將圖從一種類(lèi)型轉(zhuǎn)換為另一種類(lèi)型运沦。這可以通過(guò)自定義函數(shù) G2LG()和 LG2G()來(lái)實(shí)現(xiàn)泵额,這兩個(gè)函數(shù)可以將圖對(duì)象在 Graphs 類(lèi)型和 LightGraphs 類(lèi)型之間進(jìn)行轉(zhuǎn)換。
- Julia 在圖分析領(lǐng)域中可以發(fā)揮重要的作用携添,理由是它的高性能嫁盲,并且可以容易地實(shí)現(xiàn)和理解圖分析任務(wù)所用的算法。
思考題
1.為什么圖在數(shù)據(jù)科學(xué)中的用處非常大烈掠?
2.如何使用圖分析來(lái)提高特征集合的可靠性羞秤?
3.所有問(wèn)題都可以用圖來(lái)建模和分析嗎?為什么向叉?
4.可以使用 MST 作為分類(lèi)系統(tǒng)嗎锥腻?解釋一下。
5.可以在數(shù)據(jù)集上直接使用現(xiàn)有的圖分析工具嗎母谎?為什么瘦黑?
6.編寫(xiě)程序在給定圖中找出最大生成樹(shù)。(提示:如果你使用一個(gè)圖分析擴(kuò)展包中的函數(shù)作為基礎(chǔ)奇唤,那么程序就會(huì)非常小幸斥。)
7.保存圖(gg)的數(shù)據(jù)文件中包含了圖的所有信息嗎?為什么咬扇?