機器學習 模型樹

2022-03-29 09:27:27 字數 1542 閱讀 2090

和回歸樹(在每個葉節點上使用各自的均值做**)不同,模型樹演算法需要在每個葉節點上都構建出乙個線性模型,這就是把葉節點設定為分段線性函式,這個所謂的分段線性(piecewise linear)是指模型由多個線性片段組成。

#####################模型樹#####################

def linearsolve(dataset): #模型樹的葉節點生成函式

m,n = shape(dataset)

x = mat(ones((m,n))); y = mat(ones((m,1))) #建立兩個全部元素為1的(m,n)矩陣和(m,1)矩陣

x[:,1:n] = dataset[:,0:n-1]; y = dataset[:,-1] #x存放所有的特徵,y存放

xtx = x.t*x

if linalg.det(xtx) == 0.0:

raise nameerror('this matrix is singular, cannot do inverse,\n\

try increasing the second value of ops')

ws = xtx.i * (x.t * y) #求線性回歸的回歸係數

return ws,x,y

def modelleaf(dataset): #建立模型樹葉節點函式

ws,x,y = linearsolve(dataset)

return ws

def modelerr(dataset): #模型樹平方誤差計算函式

ws,x,y = linearsolve(dataset)

yhat = x * ws

return sum(power(y - yhat,2))

main.py

# coding:utf-8

# !/usr/bin/env python

import regtrees

import matplotlib.pyplot as plt

from numpy import *

if __name__ == '__main__':

mydat = regtrees.loaddataset('exp2.txt')

mymat = mat(mydat)

mytree = regtrees.createtree(mymat,regtrees.modelleaf,regtrees.modelerr,(1,10))

print mytree

regtrees.plotbestfit('exp2.txt')

得到兩段函式,以0.28為分界

分別為y=3.46877+1.1852x和y=0.001698+11.96477x

而生成該資料的真實模型是y=3.5+1.0x和y=0+12x再加上高斯雜訊生成

樹模型 機器學習面試

cart採用的是二分法 對於連續屬性a,我們可考察包括 n 1 個元素的候選劃分集合 n 個屬性值可形成 n 1 個候選點 利用每個 提前結束 剪枝reduced error pruning rep,錯誤率降低剪枝 pesimistic error pruning pep,悲觀錯誤剪枝 cost c...

機器學習 決策樹模型

決策樹通過生成決策規則來解決分類和回歸問題。整個模型非常容易理解,是所謂的白盒模型。比如通過年齡 職業 年齡 房產來評估信用值,文末有sklearn實現 類似於流程圖的樹結構,由乙個根節點,一組內部節點和一組葉節點組成。每個內部節點 包括根節點 表示在乙個屬性上的測試,每個分支表示乙個測試輸出,每個...

機器學習樹模型對比總結

整合模型對比 rf,adaboost,gbdt,xgboost 1.與lightgbm相比,xgboost明顯的不足 1 xgboosting採用預排序,在迭代之前,對結點的特徵做預排序,遍歷選擇最優分割點,資料量大時,貪心法耗時,lightgbm方法採用histogram演算法,占用的記憶體低,資...