【机器学习面试总结】————(二)

简介: 【机器学习面试总结】

e054cd02ff294658842bdd120eb514b2 (1).png


1、使用机器学习模型时,一般怎么处理数据集


  • 离散值的处理: 因为离散值的差值是没有实际意义的。比如如果用0,1,2代表红黄蓝,1-0的差值代表黄-红,是没有意义的。因此,我们往往会把拥有d个取值的离散值变为d个取值为0,1的离散值或者将其映射为多维向量。
  • 属性归一化: 归一化的目标是把各位属性的取值范围放缩到差不多的区间,例如[-0.5,0.5]。这里我们使用一种很常见的操作方法:减掉均值,然后除以原取值范围。
  • 分割数据集: 一般把数据集分为两部分,一部分为训练集,用于训练数据,一部分为测试集,用于测试训练的数据,测试集不应过多或过少,数据较少时训练集:测试集可以为8:2,较多时比例可以达到9:1 。


2、什么是训练误差和测试误差


  • 泛化能力:机器学习的目标是使学得的模型能够很好的适用于新的样本,而不是仅仅在训练样本上工作的很好。学得的模型对新样本(即新鲜数据)的适应能力称为泛化能力。
  • 误差:学习到的模型在样本上的预测结果与样本的真实结果之间的差 。
  • 训练误差:模型在训练集上的误差。
  • 泛化误差(测试误差):在新样本上的误差。
  • 显然,我们更希望得到泛化误差小的模型。


3、什么是过拟合与欠拟合?怎么解决

  • 欠拟合:学得的模型训练误差很大的现象。
  • 过拟合:学得的模型的训练误差很小,但泛化误差大(泛化能力较弱)的现象。


解决拟合的方法:

  • 正则化(Regularization)(L1和L2)。
  • 数据增强(Data augmentation),也就是增加训练数据样本。
  • Dropout


L1、L2正则化是通过改动代价函数来实现的,而Dropout则是通过改动神经网络本身来实现的,它是在训练网络时用的一种技巧(trike)。


  • early stopping


对模型进行训练的过程即是对模型的参数进行学习更新的过程,这个参数学习的过程往往会用到一些迭代方法,如梯度下降(Gradient descent)学习算法。Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。


欠拟合是指模型在训练集、验证集和测试集上均表现不佳的情况


解决方法:


1. 模型复杂化

       •  对同一个算法复杂化。例如回归模型添加更多的高次项,增加决策树的深度,增加神经网络的隐藏层数和隐藏单元数等。


       •  弃用原来的算法,使用一个更加复杂的算法或模型。例如用神经网络来替代线性回归,用随机森林来代替决策树等。


2. 增加更多的特征,使输入数据具有更强的表达能力

       •  特征挖掘十分重要,尤其是具有强表达能力的特征,往往可以抵过大量的弱表达能力的特征,特征的数量往往并非重点,质量才是,总之强特最重要。


       •  能否挖掘出强特,还在于对数据本身以及具体应用场景的深刻理解,往往依赖于经验。


3. 调整参数和超参数

       •  超参数包括:神经网络中的学习率、学习衰减率、隐藏层数、隐藏层的单元数、Adam优化算法中的β1和β2参数、batch_size数值等。其他算法中:树模型(随机森林、GBDT、xgboost)的树数量,k-means中的cluster数,正则化参数λ等。


4. 增加训练数据往往没有用

       •  欠拟合本来就是模型的学习能力不足,增加再多的数据给它训练它也没能力学习好,因此,正如方法2一样,高质量的数据是前提,正如BAT这些大公司,为什么算法模型很强,那是因为平台积累的数据质量足够好。


5. 降低正则化约束

       •  正则化约束是为了防止模型过拟合,如果模型压根不存在过拟合而是欠拟合了,那么就考虑是否降低正则化参数λ或者直接去除正则化项,与过拟合相反操作。


4、机器学习当中的回归模型有哪些


线性回归模型

线性回归是一种经典的机器学习模型,它建立了自变量和因变量之间线性关系的模型,通过最小化残差平方和来求解最优参数。线性回归适用于特征和目标变量之间存在线性关系的情况。

fromsklearn.linear_modelimportLinearRegression#定义线性回归模型model=LinearRegression()
#拟合模型model.fit(X, y)
#预测y_pred=model.predict(X_test)

决策树回归模型

决策树回归是一种基于树结构的机器学习模型,它通过递归地将数据集划分为更小的子集,并在每个子集上递归地建立回归模型。决策树回归适用于特征和目标变量之间具有非线性关系的情况。

fromsklearn.treeimportDecisionTreeRegressor#定义决策树回归模型model=DecisionTreeRegressor()
#拟合模型model.fit(X, y)
#预测y_pred=model.predict(X_test)

支持向量机回归模型

支持向量机回归是一种基于核函数的机器学习模型,它通过找到一个超平面来最小化预测误差和正则化项之和。支持向量机回归适用于特征和目标变量之间具有非线性关系的情况。

fromsklearn.svmimportSVR#定义支持向量机回归模型model=SVR()
#拟合模型model.fit(X, y)
#预测y_pred=model.predict(X_test)

XGBoost回归模型

XGBoost是一种基于决策树的集成学习算法,它通过梯度提升的方式逐步提升模型的预测性能。XGBoost适用于处理大规模数据和高维特征的情况。


importxgboostasxgb#定义XGBoost回归模型model=xgb.XGBRegressor()
#拟合模型model.fit(X, y)
#预测y_pred=model.predict(X_test)

LightGBM回归模型

LightGBM也是一种基于决策树的集成学习算法,它采用了一些优化策略,如GOSS和EFB,来提高模型的训练速度和准确性。LightGBM适用于处理大规模数据和高维特征的情况。


/

importlightgbmaslgb#定义LightGBM回归模型model=lgb.LGBMRegressor()
#拟合模型model.fit(X, y)
#预测y_pred=model.predict(X_test)

神经网络回归模型

神经网络是一种基于人工神经元的机器学习模型,它通过前向传播和反向传播的方式逐步优化模型参数。神经网络适用于特征和目标变量之间具有非线性关系的情况,通常适合处理大规模数据和高维特征。

importtorchimporttorch.nnasnn#定义神经网络模型classNet(nn.Module):
definit(self):
super(Net, self).init()
self.fc1=nn.Linear(10, 5)
self.fc2=nn.Linear(5, 1)
defforward(self, x):
x=torch.relu(self.fc1(x))
x=self.fc2(x)
returnx#定义神经网络回归模型model=Net()
#定义损失函数criterion=nn.MSELoss()
#定义优化器optimizer=torch.optim.SGD(model.parameters(), lr=0.01)
#训练模型forepochinrange(100):
optimizer.zero_grad()
y_pred=model(X)
loss=criterion(y_pred, y)
loss.backward()
optimizer.step()
#预测y_pred=model(X_test)


5、机器学习当中的分类模型有哪些


逻辑回归

逻辑回归的本质就由线性回归演变而来,是一个线性分类器。sklearn实现的LogisticRegression不仅可用于二分类,也可以用于多分类。


  • 优点:

模型训练速度非常快,计算量只与特征的数目有关。模型的可解释性非常好,从特征的权重可以看到不同特征对最后结果的影响。内存资源占用小,只需要存储特征权重等信息。逻辑回归的抗噪能力比较强。


  • 缺点:

若数据集是非线性的,逻辑回归并不能得到很好的结果。逻辑回归对极不平衡的数据集训练效果不好。逻辑回归对数据特征的分布和相关性要求相对较高。逻辑回归本身无法筛选特征。

fromsklearn.linear_modelimportLogisticRegressionfromsklearn.datasetsimportload_breast_cancer#乳腺癌数据集fromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportaccuracy_scoreimportnumpyasnpimportmatplotlib.pyplotasplt%matplotlibinline#获得特征标签数据data=load_breast_cancer()
X=data['data']
y=data['target']
#分割训练姐测试集X_train, X_test, y_train, y_test=train_test_split(X, y, test_size=0.3, random_state=1)
lr_l1=LogisticRegression(penalty="l1", C=0.5, solver="liblinear")
lr_l2=LogisticRegression(penalty="l2", C=0.5, solver="liblinear")
#训练模型lr_l1.fit(X_train, y_train)
lr_l2.fit(X_train, y_train)


决策树

决策树是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规 则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。


  • 优点:

对数据不太敏感,无需做数据预处理。比如归一化、标准化。决策树模型可以进行可视化分析,便于理解和解释。训练速度快。


  • 缺点:

容易发生过拟合。泛化能力比较差。容易忽略数据中特征的相关性。


#决策分类树模型训练fromsklearnimporttreeclf=tree.DecisionTreeClassifier(criterion='entropy', 
random_state=1, 
splitter='random')
clf.fit(X_train, Y_train)
clf.score(X_vali, Y_vali)
#调参方式和逻辑回归一样,可以使用学习曲线和网格搜索。

决策树可调的参数比较多,criterion(衡量分枝质量的指标)、splitter(分枝策略)、max_depth(树的最大深度)、max_features(做最佳分枝时考虑特征的个数)等等,具体接口参见官方文档。


【数据挖掘】-决策树算法+代码实现


支持向量机


  • 优点:


  1. SVM利用内积核函数代替向高维空间的非线性映射。
  2. SVM分类决策是由少数的支持向量决定的。计算复杂性取决于支持向量的数目。


  • 缺点:

  1. SVM并不适合大规模训练样本
  2. SVM不能用于多分类问题
  3. 对于分类结果有"概率"值要求的不适用
#支持向量机SVMfromsklearn.svmimportSVCclf=SVC(kernel='linear'          ,gamma='auto'          ,degree=1          ,cache_size=5000).fit(X_train, Y_train)
clf.score(X_vali, Y_vali)
#调参方式和逻辑回归一样,可以使用学习曲线和网格搜索。

随机森林

随机森林是一个集成算法分类器,其所有的基分类器都是决策树,然后通过装袋法(Bagging)进行集成。


  • 优点:

可用于处理高维度的数据,并且不需要做特征选择。训练模型后可以知道哪些特征比较重要。对不平衡数据比较不敏感


  • 缺点:

当数据集中有特征数据噪声比较大时,容易出现过拟合。无法知道模型内部的运行,可解释性较差。

#随机森林分类器fromsklearn.ensembleimportRandomForestClassifierrfc=RandomForestClassifier()
rfc.fit(X_train, Y_train)
rfc.score(X_test, Y_test)
#调参方式和逻辑回归一样,可以使用学习曲线和网格搜索。

XGBoost模型

XGBoost模型是一种使用提升法(Boosting)集成的集成分类器,利用许多弱分类器集成在一起形成一个强分类器的模型。


  • 优点:

当样本存在缺失值时,XGBoost能自动学习分裂方向。

XGBoost借鉴RF的做法,支持列抽样,不仅能防止过拟合,还能降低计算。

XGBoost的代价函数引入正则化,控制了模型的复杂度,防止模型过拟合。


  • 缺点:

XGBoost在迭代之前需要对特征做预排序,大数据集下计算耗时。

XGBoost采用level-wise算法生成决策树,同时分裂同一层的叶子,这样导致很多不必要分裂叶子节点被分裂,带来了不必要的开销。


LightGBM模型

LightGBM模型也是一种使用提升法(Boosting)集成的集成分类器,利用弱分类器(决策树)迭代训练以得到最优模型。


LightGBM提出的主要原因就是为了解决GBDT在海量数据遇到的问题,让GBDT可以更好更快地用于工业实践。


  • 优点:

训练速度快。相对XGBoost,采用直方图算法进行样本遍历,极大降低了时间复杂度;训练过程中,采用单边梯度算法过滤梯度小的样本,减少了大量的计算;基于leaf-wise算法的增长策略构建树,减少了很多不必要的计算;同时采用了并行(特征并行、数据并行)的方式加速计算,优化了缓存,增加了缓存命中率。内存消耗更小。


  • 缺点:

使用leaf-wise算法可能会长出比较深的决策树,而产生过拟合。

由于LightGBM是基于偏差的算法,所以对噪点数据比较敏感。


6、回归和分类模型的评价指标都有哪些


分类指标

MSE 均方误差、RMSE 均方根误差、MAE 平均绝对误差


分类问题

准确率和错误率、精确率和召回率、PR曲线图、 F1值、ROC、AUC值、 ROC 和 PR。


【数据挖掘】-模型的评估


参考链接:

https://blog.csdn.net/u010899985/article/details/79471909

http://t.csdn.cn/0DSxf

目录
相关文章
|
7月前
|
机器学习/深度学习 人工智能 算法
机器学习笔试面试之图像数据不足时的处理方法、检验方法、不均衡样本集的重采样
机器学习笔试面试之图像数据不足时的处理方法、检验方法、不均衡样本集的重采样
100 0
|
1月前
|
机器学习/深度学习 数据采集 Python
Python机器学习面试:Scikit-learn基础与实践
【4月更文挑战第16天】本文探讨了Python机器学习面试中Scikit-learn的相关重点,包括数据预处理(特征缩放、缺失值处理、特征选择)、模型训练与评估、超参数调优(网格搜索、随机搜索)以及集成学习(Bagging、Boosting、Stacking)。同时,指出了常见错误及避免策略,如忽视数据预处理、盲目追求高精度、滥用集成学习等。掌握这些知识点和代码示例,能帮助你在面试中展现优秀的Scikit-learn技能。
47 5
|
1月前
|
机器学习/深度学习 数据采集 算法
2024年机器学习入门,2024年最新字节跳动视频面试一般多久会收到结果
2024年机器学习入门,2024年最新字节跳动视频面试一般多久会收到结果
2024年机器学习入门,2024年最新字节跳动视频面试一般多久会收到结果
|
1月前
|
机器学习/深度学习 自然语言处理 算法
百度2024校招机器学习、数据挖掘、自然语言处理方向面试经历
百度2024校招机器学习、数据挖掘、自然语言处理方向面试经历
171 2
|
7月前
|
机器学习/深度学习 算法 数据可视化
机器学习面试笔试之特征工程、优化方法、降维、模型评估2
机器学习面试笔试之特征工程、优化方法、降维、模型评估
85 0
|
7月前
|
机器学习/深度学习 存储 算法
机器学习面试笔试之特征工程、优化方法、降维、模型评估1
机器学习面试笔试之特征工程、优化方法、降维、模型评估
115 0
|
2天前
|
机器学习/深度学习 人工智能 算法
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集('蜜蜂', '甲虫', '蝴蝶', '蝉', '蜻蜓', '蚱蜢', '蛾', '蝎子', '蜗牛', '蜘蛛')进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一张昆虫图片识别其名称。
36 7
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
|
2天前
|
机器学习/深度学习 人工智能 算法
算法金 | 统计学的回归和机器学习中的回归有什么差别?
**摘要:** 统计学回归重在解释,使用线性模型分析小数据集,强调假设检验与解释性。机器学习回归目标预测,处理大数据集,模型复杂多样,关注泛化能力和预测误差。两者在假设、模型、数据量和评估标准上有显著差异,分别适用于解释性研究和预测任务。
23 8
算法金 | 统计学的回归和机器学习中的回归有什么差别?
|
3天前
|
机器学习/深度学习 人工智能 Dart
AI - 机器学习GBDT算法
梯度提升决策树(Gradient Boosting Decision Tree),是一种集成学习的算法,它通过构建多个决策树来逐步修正之前模型的错误,从而提升模型整体的预测性能。
|
5天前
|
机器学习/深度学习 算法 数据挖掘
机器学习与智能优化——利用简单遗传算法优化FCM
机器学习与智能优化——利用简单遗传算法优化FCM
22 5

热门文章

最新文章