PRML 1.3 模型选择 1.4 维度灾难

Posted Real&Love

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PRML 1.3 模型选择 1.4 维度灾难相关的知识,希望对你有一定的参考价值。

PRML 1.3 模型选择 1.4 维度灾难

在我们的模型选择中,我们可以通过交叉验证的方法来训练模型。但是交叉验证的缺点也很明显,随着训练次数随“分割”的增加,训练时间也是很大的消耗。而且随着模型参数的每一次修改,这些分割的模型也会再一次修改。PRML书上还讲述了一种方法。

1.3.1 AIC(赤池信息准则)

赤池信息量准则(英语:Akaike information criterion,简称AIC)是评估统计模型的复杂度和衡量统计模型“拟合”资料之优良性(英语:Goodness of Fit,白话:合身的程度)的一种标准,是由日本统计学家赤池弘次创立和发展的。赤池信息量准则建立在信息熵的概念基础上
A I C = 2 K − 2 l n ( L ) AIC=2K-2ln(L) AIC=2K2ln(L)
其中:k是参数的数量,L是似然函数

结论

  • 参数越少,AIC值越小,模型越好
  • 样本数越多,AIC值越小,模型越好

1.3.2 BIC(贝叶斯信息准则)

BIC的惩罚项比AIC的大,考虑了样本数量,样本数量过多时,可有效防止模型精度过高造成的模型复杂度过高
B I C = k l n ( n ) − 2 l n ( L ) BIC=kln(n)-2ln(L) BIC=kln(n)2ln(L)

说明: 此书后面第4章会更详细的将AIC和BIC。

下面时sklearn中的例子节选

import time

import numpy as np
import matplotlib.pyplot as plt

from sklearn.linear_model import LassoCV, LassoLarsCV, LassoLarsIC
from sklearn import datasets

diabetes = datasets.load_diabetes()
X = diabetes.data
y = diabetes.target

rng = np.random.RandomState(42)
X = np.c_[X, rng.randn(X.shape[0], 14)]  # add some bad features

# normalize data as done by Lars to allow for comparison
X /= np.sqrt(np.sum(X ** 2, axis=0))

# #############################################################################
# LassoLarsIC: least angle regression with BIC/AIC criterion

model_bic = LassoLarsIC(criterion='bic')
t1 = time.time()
model_bic.fit(X, y)
t_bic = time.time() - t1
alpha_bic_ = model_bic.alpha_

model_aic = LassoLarsIC(criterion='aic')
model_aic.fit(X, y)
alpha_aic_ = model_aic.alpha_

def plot_ic_criterion(model, name, color):
    alpha_ = model.alpha_
    alphas_ = model.alphas_
    criterion_ = model.criterion_
    plt.plot(-np.log10(alphas_), criterion_, '--', color=color,
             linewidth=3, label='%s criterion' % name)
    plt.axvline(-np.log10(alpha_), color=color, linewidth=3,
                label='alpha: %s estimate' % name)
    plt.xlabel('-log(alpha)')
    plt.ylabel('criterion')

plt.figure()
plot_ic_criterion(model_aic, 'AIC', 'b')
plot_ic_criterion(model_bic, 'BIC', 'r')
plt.legend()
plt.title('Information-criterion for model selection (training time %.3fs)'
          % t_bic)
plt.show()

在这里插入图片描述
在这里插入图片描述

1.4 维度灾难


1.4.1 什么是维度灾难

维度也就是数据集的特征,如果遵循奥卡姆剃刀原则, 数据的特征越简单越好。当维度很高时,某些重要的特征便会隐藏在一些无关的特征中;另一方面,训练数据时,对时间复杂度,和参数估计也是一种考验; 而且如果不对特征维度进行处理,那么一些具有相关性的特征,我们不做处理,模型的效果肯定是不好的。(例如:回归问题中的多重共线性)

1.4.2 解决方法

  • 主成分分析法PCA
  • 线性判别法LDA
  • 奇异值分解简化数据
  • 拉普拉斯特征映射
  • Lassio缩减系数法
  • 小波分析法

以上是关于PRML 1.3 模型选择 1.4 维度灾难的主要内容,如果未能解决你的问题,请参考以下文章

数仓第二篇: 数据模型(维度建模)

[机缘参悟-93]:时间空间多维度动态全局系统思考模型汇总

清风:数学建模算法编程和写作培训

特征选择

如何理解维度灾难?

数据仓库思维导图