1.常见的四种无监督学习任务?

聚类、可视化、降维和关联规则学习

2.什么是在线学习系统?

在线学习系统能够进行增量学习。这使得它能够快速适应不断变化的数据和自动系统,并能够处理大量数据。

3.什么是核外学习?

核外算法可以处理无法容纳在计算机主内存中的大量数据。核外学习算法将数据分成小批量,并使用在线学习技术从这些小批量数据中学习。

4.模型参数与学习算法的超参数之间有什么区别?

一个模型具有一个或多个模型参数,这些参数确定在给定一个新实例的情况下该模型将预测什么(例如,线性模型的斜率)。一种学习算法试图找到这些参数的最优值,以使该模型能很好地泛化到新实例。超参数是学习算法本身的参数,而不是模型的参数(例如正则化)

5.什么是train-dev集,什么时候需要它,怎么使用?

当训练数据集与验证数据集和测试数据集中使用的数据之间不匹配时,可以使用train-dev集(该数据集应始终与模型投入生产环境后使用的数据尽可能接近)。train-dev集是训练集的一部分(模型未在其上训练过)。该模型在训练集的其他部分上进行训练,并在train-dev集和验证集上进行评估。如果模型在训练集上表现良好,但在train-dev集上均表现不佳,则该模型可能过拟合训练集。如果它在训练集和train-dev集上均表现良好,但在验证集上却表现不佳,那么训练数据与验证数据和测试数据之间可能存在明显的数据不匹配,你应该尝试改善训练数据,使其看起来更像验证数据和测试数据。

6.为什么要使用验证集?

验证集可以用来比较模型。这样就可以选择最佳模型并调整超参数。
而且如果使用测试集来调整超参数,则可能会过拟合测试集,而且所测得的泛化误差会过于乐观(你可能会得到一个性能比预期差的模型)

7.代码

  1. from sklearn import preprocessing
  2. from sklearn import pipeline
  3. poly = preprocessing.PolynomialFeatures(degree=60, include_bias=False)
  4. scaler = preprocessing.StandardScaler()
  5. lin_reg2 = linear_model.LinearRegression()
  6. pipeline_reg = pipeline.Pipeline([('poly', poly), ('scal', scaler), ('lin', lin_reg2)])
  7. pipeline_reg.fit(Xfull, yfull)
  8. curve = pipeline_reg.predict(X[:, np.newaxis])
  9. plt.plot(X, curve)
  10. plt.xlabel("GDP per capita (USD)")
  11. save_fig('overfitting_model_plot')
  12. plt.show()

这里的pipeline之前不知道。
这个是可以将各个步骤串联起来保存模型。
具体参考