閱讀871 返回首頁    go 技術社區[雲棲]


獨家 | 手把手教隨機森林

隨機森林-概述

 

當變量的數量非常龐大時,你將采取什麼方法來處理數據?

 

通常情況下,當問題非常龐雜時,我們需要一群專家而不是一個專家來解決問題。例如Linux,它是一個非常複雜的係統,因此需要成百上千的專家來搭建。

 

以此類推,我們能否將許多專家的決策力,並結合其在專業領域的專業知識,應用於數據科學呢?現在有一種稱為“隨機森林”的技術,它就是使用集體決策來改善單一決策產生的隨機結果。在這種方法中,每個軟件“專家”使用樹型算法來完成它們的任務,然後使用這樣的樹的集合來計算或推導出一個算法模型,最終發現,最終推導出的模型比任何一個專家的輸出結果將更優。

 

決策森林屬於集成學習算法,集成學習(ensemble learning)頗受業內關注。集成學習是使用一係列學習器進行學習,並使用某種規則把各個學習結果進行整合從而獲得比單個學習器更好的學習效果的一種機器學習方法。集成學習的代表性算法為Boosting係列算法和Bagging係列算法。

 

數據決策樹

 

首先讓我們了解基於單個決策樹的決策機製。


許多大學生同時申請“超級專業技術學院”。入學者的SAT曆史平均分數是2,200,GPA的平均分是 4.9。我們獲得1,000位申請人的申請信息。我們需要創建一個模型來預測最有可能被錄取的學生。我們該怎麼做呢?


一種方法是首先將SAT平均分超過2200的申請人劃為一組,標注成“更可能”。然後進一步以GPA的分數劃分, GPA小於或等於4.9的,劃分為“很有可能”,GPA超過4.9的,劃分為“非常可能”。


然後,我們以同樣的方法處理SAT分數低於2,200的組。GAP分數高的,劃分為“可能”,GAP分數低的劃分為“不可能”。這看似非常合理,但是存在很多的問題:

 

  • 如果我們先以GPA成績來劃分,然後以SAT成績劃分,那分組結果會一致麼?什麼才是最好的劃分方式呢?

  • 如果我們采用更多的標準,例如論文得分、選修課、獲獎情況和體育特長等,我們應該用多少特征以及哪些才是最重要的特征呢?

  • 在給定平均值的情況下,離散值和異常值如何?對於特征的分布如何影響誤差率呢?

 

決策樹利用數據的內部結構進行劃分:

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

維基百科的這個圖形[1]表示“泰坦尼克號”幸存者數據集的內在結構。

 

以上就是一個決策樹做決策的框架。 每個節點旁邊的數字是生存概率,百分數代表該分類的觀測值。每個左分支對應的是“是”,右分支對應的是“否”。 每個綠色節點代表“幸存”,每個紅色的節點代表“沒有幸存”。配偶或兄弟姐妹的數量記錄為“sibsp”。

 

通過以上可以得知,如果你是男性,並且在較便宜的艙位中,你的生存機會要小得多。 如果你是嬰兒或女性,並且在最昂貴的艙位,就會有更大的幸存機會。

 

測量決策樹“好”的程度

 

決策樹技術利用信息增益和熵來量化決策樹的好壞程度。本質上,我們希望擁有適當的分割點的數量,以便在我們擁有“最佳”的分割方式後,我們不會繼續分割群組。那麼我們怎麼知道一種分割方式比另一種更好呢?

 

很明顯,如果一個分割點非常明確地數據組分割成“接受”和“拒絕”,那麼這就是“好”的。

 

但是,比方說,我們按照論文分數進行了明確的分割,可是每組的GPA分數非常無序,而且STA的分數平均分配。那麼,我們實際上沒有做出很好的預測,因為兩組同樣混亂,看不出好壞。

 

熵代表一個係統的混亂程度,熵越大,係統越混亂。當一組內所有的變量值都一樣的時候,熵值為零。因此,當我們分割一個集合時,其中一組與另一組的差別越大,同時每一組內的個體之間的差別越小,也就是說,對一個數據集中數據的分組,就是使得該數據集熵減小的過程。如果我們使用一種方法對數據集進行分組,如果熵值並沒有下降,那麼在很大程度上證明,這不是一個好的特征,或是一個好的分割值。

 

如果我們將一棵已經創建的決策樹進行倒置,那麼當我們組合兩個相同位置的節點時,熵變化會隨之增加,熵的增加稱為信息增益。 所以在顛倒後,信息增益越高,分割也越好。

 

這樣看似邏輯性不強,但卻具有非常強的數學基礎做支撐,這種數學基礎被用於創建建模軟件,來構造決策樹。

 

當給定一組具有許多特征的樣本時,決策樹將識別最佳分割的特征以及用於分割的特征值。 然後,它將輸出一係列參數,包括被用於分割的特征數量,具體特征值和信息增益等。

 

那麼建模軟件如何創建最好的決策樹呢? 它一個一個地試,並比較每個的信息增益,然後對比選擇出最好的。

 

介紹一下隨機森林

 

決策樹提供了一個簡單、清晰的概念模型來理解迭代分類過程。然而,在實踐中,單個決策樹對於解決涉及大量變量和中等大小規模數據的現實問題時,並不十分有效。因此,我們需要重型武器——由一群“專家”組成的決策森林。

 

這裏的“專家”指的是什麼呢?

 

我們認為的“專家”們,每人腦子裏有一棵決策樹模型,然後將這樣的100個專家集合在一起,不那麼嚴格地講,我們就創建了一個隨機森林。當我們期望決策結果好於單個決策樹的時候,我們會想要一群“專家”來幫忙做決策。因此,我們需要一些方法來決定如何整理和排序“專家”們的“意見”。

 

回想一下奧林匹克體育比賽或潛水比賽,那裏有一組評委對每一名參賽者打分,你可能會記得,分數中的最高分和最低分將被去掉,其餘的求平均。 隨機森林算法使用這種技術來去除一些“意見”,但可能會隨機去掉一定比例的“意見”,然後重新運行“比賽”,重複進行此操作,比方說 100次,然後對結果求平均。

 

為什麼要有這麼複雜的技術呢?

 

一方麵,數學上證明,他們是更為精確的。而且因為當我們擁有10倍或者100倍的特征數時,隨機森林能夠篩選出最重要的特征,並且將這些特征應用於建模中,而且不需要我們做任何額外的努力。那麼這是如何做到的呢?這涉及計算成本的問題,所以我們的模型可能會運行幾分鍾,而不是幾秒鍾來處理成千上萬個樣本,目前大規模的計算已成為現實。然而,這一個成本還帶來了其他的好處,隨機森林能更好地處理缺失值、噪聲和異常值,並且可以處理數量變量和分類變量的混合型數據類型。

 

我們將探索從手機加速度計量儀和陀螺儀獲取的豐富數據集,並基於對數據特征的特定組合,來了解用戶的各種活動,如坐著,站立,步行等。我們的數據集有500多這樣的特征,數據複雜、多樣,所以這是一個將專業知識與隨機森林力量相結合、進行探索和分析的較佳選擇。


練習


學習下列術語,並研究他們如何將決策樹與隨機森林相關聯的。


  • 自助抽樣

  • 自助聚類

  • Bagging算法

  • Boosting算法

  • 袋外錯誤


參考:

[1] 決策樹: 

     https://en.wikipedia.org/wiki/Decision_tree_learning


隨機森林-數據預處理


簡介

 

現在,我們應用隨機森林對一個從熟悉的源對象獲取的龐雜數據集進行分析。為什麼要使用隨機森林?馬上你就會清楚。


我們將使用從手機加速度器和陀螺儀獲取的數據集來創建預測模型。數據集的格式為R語言[1],存在於Amazon S3,元數據存儲在UCI數據庫中[2]。數據集讀取了手機方位和手機攜帶者運動的編碼數據。


觀察對象從事以下六種活動中的一種 - 坐著,站立,躺下,漫步,往前走,往後走。

 

方法

 

我們的目標是,通過一個給定的數據點,能夠預測出他們正在從事的活動。我們設定了一個目標,即利用可以理解的變量來創建一個模型,而不是一個“黑匣子”模型。我們完全可以選擇創建一個隻有變量和係數的黑盒子模型。當給定數據點時,我們輸入模型,其將彈出一個答案。這通常是可行的,但隻是有太多“魔術”的成分,對於我們建立直覺判斷或應用專業知識沒有太多的幫助。


所以我們打算打開這個盒子,一旦我們形成一些直覺,我們就可以將專業知識和隨機森林的大量功能結合起來。我們發現,從長遠來看,這是一個更令人滿意的方法,而且看起來非常強大。


我們將單獨使用專業知識將自變量的數量減少到36個,然後使用隨機森林來預測“活動”變量。從準確性的角度來看,這可能不是最好的模型,但是我們想要了解發生了什麼,從這方麵來講,事實證明是更佳的。


我們使用準確度指標——正負估計值,敏感度和特異性來評估我們的模型。

 

清理數據

 

給定的數據集包含21名受訪者的活動數據。數據集有7,352行,561個數字列,外加2列整數表示的“主題”列和字符串表示的“活動”列。由於共有563列,我們將省略創建正式數據字典的步驟,直接引用feature_info.txt中的內容。


通過初步分分析發現,列名稱文本含煳且存在許多問題:

 

  • 列名重複-多次出現

  • 列名包含()

  • 許多列名存在多餘的“)”

  • 列名包含“-”

  • 列名包含“,”

  • 許多列名包含“BodyBody”,我們假設這是一個打字錯誤

 

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

 

將“活動”轉換成一個分類變量,將“受訪者”設置為整數類型。


創建一個可解釋的模型,而不是將隨機森林作為一個黑盒子來使用。 所以我們需要了解我們的變量,並提升我們對它們的直覺。

 

為了規劃數據挖掘,UCI網站[2]數據集的文檔非常有用,我們對其進行了詳細的研究。 特別是文檔feature_info.txt,它對我們理解這些變量非常重要。 實際上,我們拒絕使用數據字典,而是使用了feature_info.txt中對術語的解釋。 因此,先回顧一下其中的細節非常關鍵。

 

練習


對每個數據集進行上述清理活動。即:

 

  • 識別和刪除重複的多次出現的列名稱

  • 識別和修正列名中列出的()。 你會如何解決這個問題?

  • 識別和修改列名稱中多餘的)。 你會如何解決這個問題?

  • 識別並修改列名中的“ - ”。 你會如何解決這個問題?

  • 在列名中識別並修改多餘的“,”。 你會如何解決這個問題?

  • 識別並修改包含“BodyBody”的列名

 

對學習者的提示

 

該數據集的主要價值如下,它讓我們領會到:

 

  • 你可以僅使用強大的“黑盒”技術,然後獲得有用的結果。

  • 你也可以利用專業知識來簡化流程。此數據集能夠突顯你在專業知識上獲得的優勢。

  • 它讓我們走出舒適區,從語義相近的數據源中尋求相關信息,以進一步增強分析能力。

  • 這說明了一個事實,就是你很難將數據和所有相關的信息整合在一起。

  • 我們早就知道要對數據進行清理,但是我們更想擴大我們的知識麵,做一點研究來增強我們的專業能力。

  • 所以這個特定的數據集可能看起來有點技術性,但它很容易就與生物學,或者金融、力學相結合。一位數據科學家應該願意把自己搞的有點手忙腳亂。最成功的科學應該是願意跨學科的人。

 

這就是我們所領悟到的。


除了理解每個變量的含義,我們還想得到關於每個變量含義的技術背景。


所以我們使用Android開發人員指南[3]來自學每一個重要的物理參數。以這種方式,我們擴展專業知識,以便我們了解數據語言-我們想讓它活著,對我們說話,並從中獲知它的奧秘。我們對數據來源的背景了解的越多,那麼我們對數據的探究就越好,越快,越深入。

 

在這種情況下,帶有 X,Y,Z前綴/後綴的變量以及Android開發人員指南[3]給出了衡量變量的具體參考框架,包括加速度、加速度的矢量分量、重力角,或者更準確地說是由重力引起的向量加速度。我們在使用這些信息的同時,結合了我們對運動,速度,加速度的直覺。

 

變量壓縮

 

所以我們對變量進行了挖掘,並做了一些簡短的注釋。


在進一步探究之前,你需要打開數據集目錄中的HAR文件夾。有一個名為feature_info.txt的文件。該文件描述了每個特征的物理含義,以及通過對原始數據進行求平均、抽樣等操作後得出的數值。

 

讓我們看一下:

 

  • 所有變量名

  • 物理量

 

首先讓我們了解一下這些內容。一旦我們投入時間開始做,就可以結合對人體的理解和常識,得到一些有用的指南:

 

  • 在靜態活動(坐,站立,躺下)中,運動信息不會很有用。

  • 在動態活動中(3種類型的行走),運動信息將會很重要。

  • 角度變量在區分“躺與站立”和“向前走與向後走”方麵,將非常有用。

  • 加速度和壓力變量在區分各種運動時是重要的,同時過濾掉靜止狀態下的隨機震顫。

  • 大小和角度變量包含了與XYZ變量(=強相關)含有相同的信息

  • 我們選擇專注於後者,因為它們更便於解釋。

  • 這一點非常重要,因為它縮減了幾百個變量。

  • 我們忽略頻率變量,因為我們無法做出簡化和解釋,並將其與物理活動相聯係。

  • 平均值和標準差非常重要,我們也將偏度和峰值包括在內。

  • 將圖1中變量作為預測因子是有效的,它們展示了我們的探究工作並驗證了我們的想法。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

圖1.使用身體加速度的直方圖來評估作為靜態和動態活動的預測因子的變量。 這是一個我們使用專業知識進行變量選擇和數據探究的一個例子。

 

消除幹擾

 

在縮減-X-Y -Z變量(笛卡爾坐標)時,我們刪除了大量的幹擾變量,因為它們與極坐標的大小和角度強相關。 可能仍然會有一些幹擾,但剩餘的影響不會很大。


從常識來看,由於最小值,最大值等與平均值/標準差有相關性,所以我們也刪除所有這些幹擾。最終變量的數量減少到37,如下:

 

閱讀提示:我們做了一些繁瑣的名稱映射,以保持語義完整,因為我們想要一個“白盒子”模型。我們可以用幾行代碼和注釋,將剩餘的變量映射到v1,v2 ..... v37。但是我們將失去利用專業知識進行解釋的,並從中獲取價值的機會。

 

名稱轉換:為了方便研究數據,我們對變量進行了重命名和簡化,以方便閱讀,我們去掉所有的“body”和“Mag”,然後將“mean”替換成“Mean”,將“std”替換成“SD”,如下所示:


例如:

 

tAccBodyMag - - > tAccMean

fAccBodyMag-std - > fAccSD


等等

 

結果:

 

縮減後,已轉換名稱的選定變量(具有有意義的分組):


  • tAccMean, tAccSD tJerkMean, tJerkSD

  • tGyroMean, tGyroSD tGyroJerkMean, tGyroJerkSD

  • fAccMean, fAccSD, fJerkMean, fJerkSD,

  • fGyroMean, fGyroSD, fGyroJerkMean, fGyroJerkSD,

  • fGyroMeanFreq, fGyroJerkMeanFreq fAccMeanFreq, fJerkMeanFreq

  • fAccSkewness, fAccKurtosis, fJerkSkewness, fJerkKurtosis

  • fGyroSkewness, fGyroKurtosis fGyroJerkSkewness, fGyroJerkKurtosis

  • angleAccGravity, angleJerkGravity angleGyroGravity, angleGyroJerkGravity

  • angleXGravity, angleYGravity, angleZGravity

  • subject, activity

 

結論

 

現在,經過處理後,我們得到了完美的結果。

 

獲得的主要變量為加速度的大小、抖動統計量和角度變量。 這讓我們感受到,專注於專業知識,進行一些額外的閱讀、研究,並結合一些基本的身體直覺,收獲將非常大。

 

這是一組語義緊湊,可解釋和相對容易理解的變量。

 

我們可以對變量進行新一輪的研究,我們可能認為,37個變量太多了,無法一次性記住 。為了更好地解決這個問題,我們使用重型武器,借助建模軟件和隨機森林算法來處理。

 

參考

[1] <https://spark-public.s3.amazonaws.com/ dataanalysis/samsungData.rda>
[2] Human Activity Recognition Using Smartphones 

<https://archive.ics.uci.edu/ml/datasets/Human+Activity+Recognition+Using+Smartphones>
[3] Android Developer Reference 

<https://developer.android.com/reference/android/hardware/Sensor.html>
[4] Random Forests

 <https://en.wikipedia.org/wiki/Random_forest>
[5] Code for computation of error measures 

<https://gist.github.com/nborwankar/5131870>

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


隨機森林-分析

 

簡介

 

分析階段的目標是用探究階段處理後的變量數據集來構建一個隨機森林,以預測人類的活動。

這些變量如下:


 tAccMean, tAccSD tJerkMean, tJerkSD

tGyroMean, tGyroSD tGyroJerkMean, tGyroJerkSD

fAccMean, fAccSD, fJerkMean, fJerkSD,

fGyroMean, fGyroSD, fGyroJerkMean, fGyroJerkSD,

fGyroMeanFreq, fGyroJerkMeanFreq fAccMeanFreq, fJerkMeanFreq

fAccSkewness, fAccKurtosis, fJerkSkewness, fJerkKurtosis

fGyroSkewness, fGyroKurtosis fGyroJerkSkewness, fGyroJerkKurtosis

angleAccGravity, angleJerkGravity angleGyroGravity, angleGyroJerkGravity

angleXGravity, angleYGravity, angleZGravity

subject, activity


對於這些:

 

  • 除了最後兩列,其他所有都是數值型數據。

  • “受訪者”是一個整數,用於標識單個的人,其中從1到27的21個數據集有缺失項。

  • “活動”是一個分類變量 - 早期確定的六個活動,包括 “坐”,“站立”,“躺”,“漫步”,“向前走”,“向後走”。

  • 為什麼我們使用隨機森林? 我們在模型中使用隨機森林[4],因為這種方法具有相對較高的精度,其次我們的數據太過複雜。

 

這是我們用隨機森林的兩個主要原因,特別是在壓縮後,特征數量依然很大。

 

方法

 

實驗設計實例

 

通常在分析這些數據集時,我們使用這些數據來創建一個模型。我們如何知道該模型同樣適用於其他數據呢?真實的答案是“我們不知道”。而且我們無法確知我們可以創建一個同樣適用於新數據的模型。

 

但是我們如何做才能降低模型“過度擬合”的概率呢?“過度擬合”是一個技術術語,它表示,模型在給定的數據(適合它)有完美的表現,但對新的數據集,卻表現很差。有一種建模方法來避免這種陷阱。如下所述:


我們從數據集中留出部分數據用於測試,與建模用的數據集相區別,這個“保留”的數據集稱為測試集。

 

然後我們取剩餘的數據,對它進一步劃分,較大的數據集稱為訓練集和較小的集稱為驗證集。然後,我們使用訓練集構建我們的模型,並查看它在驗證集上的表現(這裏不包括“保留”數據)。

 

我們可以隨便使用訓練集和驗證集來調整我們的模型,在模型建好之前,不能使用“保留”的測試集。建模完成後,我們將模型運行“保留”的測試數據,當測試數據達到可接受的錯誤率時,我們就完成了模型的創建。

 

然而,如果模型在運行測試集時,顯示較高的錯誤率,那麼這個模型就有問題。我們不能繼續調整模型以獲得更好的測試結果,因為過度擬合會再次出現。那麼我們該怎麼辦?我們將所有的數據混合,然後“保留”新的測試集,然後重複運行。在某些情況下,我們的測試集將是第三方的數據,我們在交付模型前,是無法利用測試集進行測試驗證的。我們必須一次性成功。

 

我們的實驗設計


我們將數據中的最後4個被訪者的數據作為測試集,其餘用於建模。我們為什麼要做這個?如果我們查看支持文檔,也是建議使用最後4個作為測試集。不妨,我們開始就按照建議來做。我們保留了與這4個相關的所有的行,在建模時將它們排除在外。

 

在剩下的17個“受訪者”中,我們使用前12個“受訪者”作為訓練集,剩下5個作為驗證集。為什麼是這個比例?通常,30%的數據用作驗證集,70%用於實際訓練。驗證集用作我們的“內部”測試,不用於建模,並且每一步都會用到。實際測試集和驗證集之間的區別在於,隻要我們在每次運行軟件後,混合數據,然後重新提取驗證集,就可以繼續調整優化我們的模型。

 

還有一種方法可以在此基礎上,更進一步,能夠進行n次驗證。將訓練集合分為n(通常為10)等份,然後將每個部分依次用作驗證集,其餘部分用於訓練,並進行n次此類建模操作。然後將這些模型求平均,以創建最好的模型。

 

我們在這裏不做n次驗證。

 

因為我們的模型中包含“受訪者”,因此,我們根據“受訪者”變量來劃分數據,並希望將所有測試數據獨立出來。這是什麼意思?測試數據實際上應該對我們而言,是完全未知的數據 - 即它需要獨立於訓練數據。所以假設我們沒有分離出4個測試人員的數據,但是我們隻是混合了所有的行,並隨機選取20%作為測試數據集。

 

請注意,我們有大約7,000行,所以我們每個人都有幾百行。如果我們將它們混合並隨機選擇,那麼我們的測試集將包含21個人的信息,當然訓練集中同樣也會包含21個人的信息。測試集不會獨立於訓練集,因為兩者的數據存在某種程度的重合。因此,被提取的集合不會實現真正有用的驗證效果 - 統計學上,我訓練集和驗證集已經具有相似的信息,即測試集已經泄漏到訓練集中。

 

這與我們某次家庭作業練習的情況類似,後來第二天在課堂上解決了。然後我們收到一組問題,與作業練習非常相似,隻是一些數字改變了。它不會真正地驗證我們對核心問題的理解,隻是讓我們更加了解作業(過度擬合)。

 

所以當我們將部分人的行數據獨立出來後,我們知道訓練集並沒有泄露這些人的信息。對測試數據做這樣的努力是非常值得的,所以我們可以很有信心地講,我們的模型不會過度擬合樣本數據。

 

訓練結果

 

我們在隨機森林的建模軟件上運行我們的數據,如前所述,並推導出一個模型以及一些描述我們的模型有多好的參數。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


應用模型中預測函數運行驗證集和測試集,然後對誤差進行分析,得到以下結果:


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


我們現在應用一些常用方法來預測“好”。

有關這些措施的更多細節見 [6],[7],[8],[9]

 

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


結論


我們可以從以上結果中得出以下具體結論。


在這種情境下,隨機森林的表現令人非常滿意的,較低錯誤率和以及較高預測能力。使用專業知識可以獲得令人驚訝的高預測度量值,以及驗證集和測試集上的低錯誤率。


結果支持,即預測準確率達到90%,OOB誤差率約2%。我們隻做了一次,並沒有來回調整模型。請注意,我們堅持這裏的規則,直到完成建模後才拿到測試集。


將加速度的大小、角度以及抖動的時間和幅度作為變量,構建出了預測能力非常好的模型。當然,暴力模型可以提供更好的預測能力,但它是一個黑盒應用軟件。如果由於某種原因造成的模式錯亂或失敗,我們根本就不了解為什麼。相反,我們使用專業知識來觀察這個過程,創建了模型是可以理解和解釋的。


運行測試時,模型在測試集上的表現優於驗證集,數據無論來源於“匯總”行,還是單獨某個人的。


讓我們看一下今後如何改進模式。注意我們的模型在某些情況下,可能是存在缺陷,或是不完整,待改進等,所以我們不會對模型過分自信,並且做能力之外的事情。

 

點評

 

  • 利用專業知識,模型在變量選擇過程中消除了一些與力的大小相關的特征,如最大值、最小值以及一些與旋轉相關變量。 這些可能很重要,但未經測試。 我們可能會在下次進行觀察。

  • 應該詳細研究變量重要性 - 即我們真的應該使用被認定更為重要的少量特征來來創建模型,看看有什麼區別。 在計算上這將更有效率。 我們甚至可以使用簡單的方法,如邏輯回歸,對簡化的數據集進行分類。

 

練習

 

不是使用專業知識來減少變量,而是直接在全部列上使用“隨機森林”。 然後使用變量重要性並對變量進行排序。

 

將得到的模型與您使用專業知識獲得的模型進行比較。您可以通過簡單地重命名變量x1,x2 ... xn,y來縮短數據清理過程,其中y是因變量的“活動”。

 

現在看看你得到的新的隨機森林模型。 在預測中可能比我們以上方法更準確。 這是一個黑匣子模型,其中的變量沒有什麼意義。

 

  • 它給了你什麼見解?

  • 你喜歡哪個型號?

  • 為什麼?

  • 這是絕對的偏好還是可能會改變?

  • 什麼可能導致它改變?


原文發布時間為:2017-08-17
本文作者:Nitin Borwankar

最後更新:2017-10-11 11:34:31

  上一篇:go  【雲棲大會】阿裏巴巴成立“達摩院” 引入頂尖科學家3年研發投入將超千億
  下一篇:go  數據蔣堂 | 從SQL語法看集合化