当我尝试将adaboost与购物车树一起使用时,每次迭代的错误率越来越大,接近0.5。但是我朋友的算法不喜欢我。他的adaboost在错误率方面表现稳定。所以我不知道我的算法有什么问题吗?
我使用“ alpha = 0.5 ln(1 / error_rate-1)”来更新数据集的权重。我认为Gini(D)= 1-总和(Pk)** 2,其中Pk使用权重。最后但并非最不重要的一点是,我考虑了树生成的递归终止中的权重。
for i in range(21):
t = tree_generate(train_set, atb_list, high=high)
e = error(t, train_set)
print(e, end=' ')
if e > 0.5 or e == 0:
break
alpha = 0.5 * np.log(1 / e - 1)
forest.append(t)
alphas.append(alpha)
print(alpha)
for j in range(m):
if is_right(t, train_set.iloc[j, :]):
train_set.iloc[j, -1] *= np.exp(-alpha)
else:
train_set.iloc[j, -1] *= np.exp(alpha)
train_set['weight'] /= train_set['weight'].sum()
def gini(data_set, pos=-2):
result = 1
cla = set(data_set.iloc[:, pos].values)
for c in cla:
d = data_set[data_set.iloc[:, pos] == c]
result -= d['weight'].sum() ** 2
return result
我认为该错误应该更稳定。如果您能表达您的想法,我将不胜感激。