成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

隨機(jī)森林算法入門(python)

張遷 / 1821人閱讀

摘要:翻譯自昨天收到推送了一篇介紹隨機(jī)森林算法的郵件,感覺作為介紹和入門不錯(cuò),就順手把它翻譯一下。隨機(jī)森林引入的隨機(jī)森林算法將自動(dòng)創(chuàng)建隨機(jī)決策樹群?;貧w隨機(jī)森林也可以用于回歸問題。結(jié)語(yǔ)隨機(jī)森林相當(dāng)起來(lái)非常容易。

翻譯自:http://blog.yhat.com/posts/python-random-forest.html

昨天收到yhat推送了一篇介紹隨機(jī)森林算法的郵件,感覺作為介紹和入門不錯(cuò),就順手把它翻譯一下。


目錄

1 什么是隨機(jī)森林

1.1 集成學(xué)習(xí)

1.2 隨機(jī)決策樹

1.3 隨機(jī)森林

1.4 投票

2 為什么要用它

3 使用方法

3.1 變量選擇

3.2 分類

3.3 回歸

4 一個(gè)簡(jiǎn)單的Python示例

結(jié)語(yǔ)


前言: 隨機(jī)森林是一個(gè)非常靈活的機(jī)器學(xué)習(xí)方法,從市場(chǎng)營(yíng)銷到醫(yī)療保險(xiǎn)有著眾多的應(yīng)用。它可以用于市場(chǎng)營(yíng)銷對(duì)客戶獲取和存留建?;蝾A(yù)測(cè)病人的疾病風(fēng)險(xiǎn)和易感性。

隨機(jī)森林能夠用于分類和回歸問題,可以處理大量特征,并能夠幫助估計(jì)用于建模數(shù)據(jù)變量的重要性。

這篇文章是關(guān)于如何使用Python構(gòu)建隨機(jī)森林模型。

1 什么是隨機(jī)森林

隨機(jī)森林可以用于幾乎任何一種預(yù)測(cè)問題(包括非線性問題)。它是一個(gè)相對(duì)較新的機(jī)器學(xué)習(xí)策略(90年代誕生于貝爾實(shí)驗(yàn)室)可以用在任何方面。它屬于機(jī)器學(xué)習(xí)中的集成學(xué)習(xí)這一大類。

1.1 集成學(xué)習(xí)

集成學(xué)習(xí)是將多個(gè)模型進(jìn)行組合來(lái)解決單一的預(yù)測(cè)問題。它的原理是生成多個(gè)分類器模型,各自獨(dú)立地學(xué)習(xí)并作出預(yù)測(cè)。這些預(yù)測(cè)最后結(jié)合起來(lái)得到預(yù)測(cè)結(jié)果,因此和多帶帶分類器的結(jié)果相比,結(jié)果一樣或更好。

隨機(jī)森林是集成學(xué)習(xí)的一個(gè)分支,因?yàn)樗揽坑跊Q策樹的集成。更多關(guān)于python實(shí)現(xiàn)集成學(xué)習(xí)的文檔:?Scikit-Learn 文檔。

1.2 隨機(jī)決策樹

我們知道隨機(jī)森林是將其他的模型進(jìn)行聚合, 但具體是哪種模型呢?從其名稱也可以看出,隨機(jī)森林聚合的是分類(或回歸) 樹。一顆決策樹是由一系列的決策組合而成的,可用于數(shù)據(jù)集的觀測(cè)值進(jìn)行分類 。

1.3 隨機(jī)森林

引入的隨機(jī)森林算法將自動(dòng)創(chuàng)建隨機(jī)決策樹群。由于這些樹是隨機(jī)生成的,大部分的樹(甚至 99.9%)對(duì)解決你的分類或回歸問題是沒有有意義。

1.4 投票

那么,生成甚至上萬(wàn)的糟糕的模型有什么好處呢?好吧,這確實(shí)沒有。但有用的是,少數(shù)非常好的決策樹也隨之一起生成了。

當(dāng)你要做預(yù)測(cè)的時(shí)候,新的觀察值隨著決策樹自上而下走下來(lái)并被賦予一個(gè)預(yù)測(cè)值或標(biāo)簽。一旦森林中的每棵樹都給有了預(yù)測(cè)值或標(biāo)簽,所有的預(yù)測(cè)結(jié)果將被歸總到一起,所有樹的投票返回做為最終的預(yù)測(cè)結(jié)果。

簡(jiǎn)單來(lái)說,99.9%不相關(guān)的樹做出的預(yù)測(cè)結(jié)果涵蓋所有的情況,這些預(yù)測(cè)結(jié)果將會(huì)彼此抵消。少數(shù)優(yōu)秀的樹的預(yù)測(cè)結(jié)果將會(huì)脫穎而出,從而得到一個(gè)好的預(yù)測(cè)結(jié)果。

2 為什么要用它

隨機(jī)森林是機(jī)器學(xué)習(xí)方法中的Leatherman(多功能折疊刀)。你幾乎可以把任何東西扔給它。它在估計(jì)推斷映射方面做的特別好,從而不需要類似SVM醫(yī)一樣過多的調(diào)參(這點(diǎn)對(duì)時(shí)間緊迫的朋友非常好)。

2.1 一個(gè)映射的例子

隨機(jī)森林可以在未經(jīng)特意手工進(jìn)行數(shù)據(jù)變換的情況下學(xué)習(xí)。以函數(shù)f(x)=log(x)為例。

我們將在Yhat自己的交互環(huán)境Rodeo中利用Python生成分析數(shù)據(jù),你可以在here下載RodeoMac,WindowsLinux的安裝文件。

首先,我們先生成一下數(shù)據(jù)并添加噪聲。

import numpy as np
import pylab as pl

x = np.random.uniform(1, 100, 1000)
y = np.log(x) + np.random.normal(0, .3, 1000)

pl.scatter(x, y, s=1, label="log(x) with noise")

pl.plot(np.arange(1, 100), np.log(np.arange(1, 100)), c="b", label="log(x) true function")
pl.xlabel("x")
pl.ylabel("f(x) = log(x)")
pl.legend(loc="best")
pl.title("A Basic Log Function")
pl.show()

得到如下結(jié)果:

如果我們建立了一個(gè)基本的線性模型通過使用x來(lái)預(yù)測(cè)y,我們需要作一條直線,一定成都市算是平分log(x)函數(shù)。而如果我們使用隨機(jī)森林算法,它可以更好的逼近log(x)曲線從而使得它看起來(lái)更像實(shí)際的函數(shù)。?

當(dāng)然,你也可以說隨機(jī)森林對(duì)log(x)函數(shù)有點(diǎn)過擬合。不管怎么樣,這說明了隨機(jī)森林并不限于線性問題。

3 使用方法 3.1 特征選擇

隨機(jī)森林的一個(gè)最好用例是特征選擇。嘗試很多個(gè)決策樹變量的一個(gè)副產(chǎn)品就是,你可以檢查變量在每棵樹中表現(xiàn)的是最佳還是最糟糕。

當(dāng)一些樹使用一個(gè)變量,而其他的不使用這個(gè)變量,你就可以對(duì)比信息的丟失或增加。實(shí)現(xiàn)的比較好的隨機(jī)森林工具能夠?yàn)槟阕鲞@些事情,所以你需要做的僅僅是去查看那個(gè)方法或參數(shù)。

在下述的例子中,我們嘗試弄明白區(qū)分紅酒或白酒時(shí),哪些變量是最重要的。

3.2 分類

隨機(jī)森林也很善長(zhǎng)分類問題。它可以被用于為多個(gè)可能目標(biāo)類別做預(yù)測(cè),它也可以在調(diào)整后輸出概率。你需要注意的一件事情是過擬合。

隨機(jī)森林容易產(chǎn)生過擬合,特別是在數(shù)據(jù)集相對(duì)小的時(shí)候。當(dāng)你的模型對(duì)于測(cè)試集合做出“太好”的預(yù)測(cè)的時(shí)候就應(yīng)該懷疑一下了。避免過擬合的一個(gè)方法是在模型中只使用有相關(guān)性的特征,比如使用之前提到的特征選擇。

3.3 回歸

隨機(jī)森林也可以用于回歸問題。

我發(fā)現(xiàn),不像其他的方法,隨機(jī)森林非常擅長(zhǎng)于分類變量或分類變量與連續(xù)變量混合的情況。

4 一個(gè)簡(jiǎn)單的Python示例
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np

iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df["is_train"] = np.random.uniform(0, 1, len(df)) <= .75
df["species"] = pd.Categorical.from_codes(iris.target, iris.target_names)
df.head()

train, test = df[df["is_train"]==True], df[df["is_train"]==False]

features = df.columns[:4]
clf = RandomForestClassifier(n_jobs=2)y, _ = pd.factorize(train["species"])
clf.fit(train[features], y)

preds = iris.target_names[clf.predict(test[features])]

pd.crosstab(test["species"], preds, rownames=["actual"], colnames=["preds"])

下面就是你應(yīng)該看到的結(jié)果了。由于我們隨機(jī)選擇數(shù)據(jù),所以實(shí)際結(jié)果每次都會(huì)不一樣。

preds sertosa versicolor virginica
actual
sertosa 6 0 0
versicolor 0 16 1
virginica 0 0 12
5 結(jié)語(yǔ)

隨機(jī)森林相當(dāng)起來(lái)非常容易。不過和其他任何建模方法一樣要注意過擬合問題。如果你有興趣用R語(yǔ)言使用隨機(jī)森林,可以查看randomForest包。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/44250.html

相關(guān)文章

  • 如何在Python中從零開始實(shí)現(xiàn)隨機(jī)森林

    摘要:在本教程中,您將了解如何在中從頭開始實(shí)現(xiàn)隨機(jī)森林算法。如何將隨機(jī)森林算法應(yīng)用于預(yù)測(cè)建模問題。如何在中從頭開始實(shí)現(xiàn)隨機(jī)森林圖片來(lái)自,保留部分權(quán)利。這被稱為隨機(jī)森林算法。如何更新決策樹的創(chuàng)建以適應(yīng)隨機(jī)森林過程。 歡迎大家前往云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 決策樹可能會(huì)受到高度變異的影響,使得結(jié)果對(duì)所使用的特定測(cè)試數(shù)據(jù)而言變得脆弱。 根據(jù)您的測(cè)試數(shù)據(jù)樣本構(gòu)建多個(gè)模型(稱為套袋)可...

    MasonEast 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<