引言
想通過隨機森林來獲取數據的主要特征
1、理論
隨機森林是一個高度靈活的機器學習方法,擁有廣泛的應用前景,從市場營銷到醫療保健保險。 既可以用來做市場營銷模擬的建模,統計客戶來源,保留和流失。也可用來預測疾病的風險和病患者的易感性。
根據個體學習器的生成方式,目前的集成學習方法大致可分為兩大類,即個體學習器之間存在強依賴關系,必須串行生成的序列化方法,以及個體學習器間不存在強依賴關系,可同時生成的并行化方法;
前者的代表是Boosting,后者的代表是Bagging和“隨機森林”(Random
Forest)
隨機森林在以決策樹為基學習器構建Bagging集成的基礎上,進一步在決策樹的訓練過程中引入了隨機屬性選擇(即引入隨機特征選擇)。
簡單來說,隨機森林就是對決策樹的集成,但有兩點不同:
(2)特征選取的差異性:每個決策樹的n個分類特征是在所有特征中隨機選擇的(n是一個需要我們自己調整的參數)
隨機森林,簡單理解, 比如預測salary,就是構建多個決策樹job,age,house,然后根據要預測的量的各個特征(teacher,39,suburb)分別在對應決策樹的目標值概率(salary<5000,salary>=5000),從而,確定預測量的發生概率(如,預測出P(salary<5000)=0.3).
隨機森林是一個可做能夠回歸和分類。 它具備處理大數據的特性,而且它有助于估計或變量是非常重要的基礎數據建模。
參數說明:
最主要的兩個參數是n_estimators和max_features。
n_estimators:表示森林里樹的個數。理論上是越大越好。但是伴隨著就是計算時間的增長。但是并不是取得越大就會越好,預測效果最好的將會出現在合理的樹個數。
max_features:隨機選擇特征集合的子集合,并用來分割節點。子集合的個數越少,方差就會減少的越快,但同時偏差就會增加的越快。根據較好的實踐經驗。如果是回歸問題則:
max_features=n_features,如果是分類問題則max_features=sqrt(n_features)。
如果想獲取較好的結果,必須將max_depth=None,同時min_sample_split=1。
同時還要記得進行cross_validated(交叉驗證),除此之外記得在random forest中,bootstrap=True。但在extra-trees中,bootstrap=False。
2、隨機森林python實現
2.1Demo1
實現隨機森林基本功能
#隨機森林from sklearn.tree import DecisionTreeRegressor from sklearn.ensemble import RandomForestRegressor import numpy as np from sklearn.datasets import load_iris iris=load_iris() #print iris#iris的4個屬性是:萼片寬度 萼片長度 花瓣寬度 花瓣長度 標簽是花的種類:setosa versicolour virginica print(iris['target'].shape)rf=RandomForestRegressor()#這里使用了默認的參數設置 rf.fit(iris.data[:150],iris.target[:150])#進行模型的訓練 #隨機挑選兩個預測不相同的樣本 instance=iris.data[[100,109]] print(instance)rf.predict(instance[[0]])print('instance 0 prediction;',rf.predict(instance[[0]]))print( 'instance 1 prediction;',rf.predict(instance[[1]]))print(iris.target[100],iris.target[109])
新聞熱點
疑難解答