数据处理的统计学习(scikit-learn教程)
|
高维灾难: 如果特征数是P,你就需要n 1/d^p个点。也就是说,如果我们在一维度情况下需要10个点,在P维度情况下需要10^p个点。当P变大的时候,为获得一个好的预测函数需要的点数将急剧增长。 这被称为高维灾难(指数级增长),也是机器学习领域的一个核心问题。 (2)线性模型:从回归到稀疏性Diabets数据集(糖尿病数据集) 糖尿病数据集包含442个患者的10个生理特征(年龄,性别、体重、血压)和一年以后疾病级数指标。 diabetes = datasets.load_diabetes() 线性模型:y = βX+b ? ?X:数据 ? ?y:目标变量 ? ?β:回归系数 ? ?b:观测噪声(bias,偏差) from sklearn import linear_model regr = linear_model.LinearRegression() regr.fit(diabetes_X_train,diabetes_y_train)print(regr.coef_) 收缩(Shrinkage): X = np.c_[ .5,1].T y = [.5,1] test = np.c_[ 0,2].T regr = linear_model.LinearRegression()import pylab as pl pl.figure() np.random.seed(0)for _ in range(6): ? this_X = .1*np.random.normal(size=(2,1)) + X ? regr.fit(this_X,y) ? pl.plot(test,regr.predict(test)) ? pl.scatter(this_X,y,s=3) ? 高维统计学习的一个解决方案是将回归系数缩小到0:观测数据中随机选择的两个数据集近似不相关。这被称为岭回归(Ridge Regression): regr = linear_model.Ridge(alpha=.1) pl.figure() np.random.seed(0)for _ in range(6): ? this_X = .1*np.random.normal(size=(2,s=3) 这是一个偏差/方差(bias/variance)的权衡:岭α参数越大,偏差(bias)越大,方差(variance)越小 我们可以选择α以最小化排除错误,这里使用糖尿病数据集而不是人为制造的数据: alphas = np.logspace(-4,-1,6)from __future__ import print_functionprint([regr.set_params(alpha=alpha ? ? ? ? ? ?).fit(diabetes_X_train,diabetes_y_train,? ? ? ? ? ?).score(diabetes_X_test,diabetes_y_test) for alpha in alphas]) 【注意】扑捉拟合参数的噪声使得模型不能推广到新的数据被称为过拟合。岭回归造成的偏差被称为正则化(归整化,regularization) 稀疏性: 【注意】整个糖尿病数据包含11维数据( 我们可以看到,尽管特征2在整个模型中占据很大的系数,但是和特征1相比,对结果y造成的影响很小。 (编辑:PHP编程网 - 湛江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

