從零開始學習人工智慧(機器學習基礎知識)(二)

2021-10-06 23:34:36 字數 2096 閱讀 8720

我們在做決策樹的時候,會經歷兩個階段:構造和剪枝

構造就是生成一棵完整的決策樹。簡單來說,構造的過程就是選擇什麼屬性作為節點的過程,那麼在構造過程中,會存在三種節點:

根節點:就是樹的最頂端,最開始的那個節點。在上圖中,「女朋友」就是乙個根節點;

葉節點:就是樹最底部的節點,也就是決策結果,比如說「繼續睡覺」。

節點之間存在父子關係。那麼在構造過程中,你要解決三個重要的問題:

選擇哪個屬性作為根節點;

選擇哪些屬性作為子節點;

什麼時候停止並得到目標狀態,即葉節點。

剪枝就是給決策樹**,這一步想實現的目標就是,不需要太多的判斷,同樣可以得到不錯的結果。之所以這麼做,是為了防止「過擬合」(overfitting)現象的發生。

過擬合:指的是模型的訓練結果「太好了」,以至於在實際應用的過程中,會存在「死板」的情況,導致分類錯誤。

欠擬合:指的是模型的訓練結果不理想。

一是因為訓練集中樣本量較小。如果決策樹選擇的屬性過多,構造出來的決策樹一定能夠「完美」地把訓練集中的樣本分類,但是這樣就會把訓練集中一些資料的特點當成所有資料的特點,但這個特點不一定是全部資料的特點,這就使得這個決策樹在真實的資料分類**現錯誤,也就是模型的「泛化能力」差。

泛化能力:指的分類器是通過訓練集抽象出來的分類能力,你也可以理解是舉一反三的能力。如果我們太依賴於訓練集的資料,那麼得到的決策樹容錯率就會比較低,泛化能力差。因為訓練集只是全部資料的抽樣,並不能體現全部資料的特點。

預剪枝:在決策樹構造時就進行剪枝。方法是,在構造的過程中對節點進行評估,如果對某個節點進行劃分,在驗證集中不能帶來準確性的提公升,那麼對這個節點進行劃分就沒有意義,這時就會把當前節點作為葉節點,不對其進行劃分。

後剪枝:在生成決策樹之後再進行剪枝。通常會從決策樹的葉節點開始,逐層向上對每個節點進行評估。如果剪掉這個節點子樹,與保留該節點子樹在分類準確性上差別不大,或者剪掉該節點子樹,能在驗證集中帶來準確性的提公升,那麼就可以把該節點子樹進行剪枝。方法是:用這個節點子樹的葉子節點來替代該節點,類標記為這個節點子樹中最頻繁的那個類。

下面展示一段構建決策樹的**

@data

public class treenode

@data

public class decisiontreeutils

return treeroot;

}private string create(string beforecondition,featureandconditionbean featureandconditionbean)

treenode.setfeature(featureandconditionbean.getfeature());

treeroot = treenode;

return featureandconditionbean.getcondition();

}hashmaptreenodehashmap = treenode.getfeaturesmap();

if (treenodehashmap == null)

treenode treenode1 = treenodehashmap.get(beforecondition);

if (treenode1 == null)

treenode.setfeaturesmap(treenodehashmap);

treenode = treenode1;

return featureandconditionbean.getcondition();

}public static void main(string args)

}

從零開始學習人工智慧 python篇 (二)

mac 系統自帶python,本人系統為macos high sierra,版本為10.13.3,在終端輸入指令python v 獲得到的python版本為 2.7.15,所以mac系統是自帶python的。但是2020 年 1 月 1 日,官方宣布停止 python 2 的更新。所以本著要玩就玩最...

資料分析 機器學習 人工智慧,從零開始起步

作為乙個原cs畢業,畢業沉溺於金融行業5年後,終於意識到金融的虛無和對個人未來追求的毫無幫助,決定重回cs領域,努力奮戰,尋找個人得以長遠發展的領域。需補充基礎數學知識 高等數學 線性代數 資訊理論 機器學習實戰 演算法 實現 統計學習方法 演算法數學原理 機器學習實踐應用 演算法與業務結合入門 網...

從零開始人工智慧(一) 飛速看盡Python基礎

python免費 開源,並且擁有龐大的庫,因此往往是學習人工智慧 網路爬蟲等技術必要的基礎。有python基礎的人可以直接跳過本篇文章,直接從第二篇文章開始看起。python是一種簡單主義至上的語言。說php是世界上最好的語言,這完全是乙個梗。但是說python是世上最好的語言,想必應者甚多。閱讀良...