0、过拟合欠拟合
一般情况下,模型的训练需要考虑两个方面:
1. 模型训练准不准(是否欠拟合) --- 可以通过模型的效果评估
2. 模型复杂度高不高(是否过拟合) --- 可以通过模型在训练数据和测试数据上的效果差异情况来比较
=============================================================================================
欠拟合、过拟合的直观表现:
1. 欠拟合 ---- 模型在训练数据上的效果都不佳
2. 过拟合 ---- 模型在训练数据上效果不错,但是在测试数据上效果不佳
=============================================================================================
欠拟合:
体现:模型在训练数据上的效果都不佳
产生原因:模型没有学习到训练数据样本上的特征信息(特征属性X和目标属性Y之间的映射关系),所以效果不佳。
-1. 算法学习能力不强;
-2. 算法的模型参数可能不太合适;
-3. 样本数据量过少(数据中各种类型均有,只是数据量太少机器无法学习特征)或者过多;
-4. 可能训练数据中的特征属性X和目标属性Y之间的映射关系本身就不明显(特征属性太少了).
解决方案:
-1. 换一种强学习能力的算法;
-2. 进行交叉验证或者网格交叉验证来进行模型参数选择;
-3. 增加或者减少样本数据量;
-4. 利用集成学习的思想来解决欠拟合问题,主要是Boosting思想;
-5. 对训练用的特征属性做一定的分析,然后根据业务场景选择一些合适的特征属性进来(特征选择)。
-6. 可以考虑将特征数据映射到高维空间中,然后进行模型训练。(多项式扩展+线性回归)
---------------------------------------------------------------------------------------
过拟合:
体现:模型在训练数据上效果不错,但是在测试数据上效果不佳
产生原因:简单理解:模型学习到了过多无用的特征
详细理解:因为模型学习了太多的训练数据上的数据特征,把一些不是特别泛化的、大众的特征信
息也学习到了,所以导致模型最终在其它未知数据上效果不佳(未知数据不满足模型学习到的特征信息) ---> 有可能是训练
数据中存在噪音样本/异常样本,而训练模型将这个异常样本上的特征信息给学到了,但是未知的待预测样本上这个特征信
息是不存在(待预测样本不是异常样本)
-1. 算法的学习能力太强;
-2. 算法的模型参数可能不太合适;
-3. 样本数据量过少(样本量少,且样本过于特殊化);
-4. 训练数据特征属性过少,或者过于特殊化
-5. 训练数据中可能存在一些异常的特征属性/噪音特征属性
解决方案:
-1. 换一个弱学习模型(限制一下模型的学习能力);
-2. 进行交叉验证或者网格交叉验证来进行模型参数选择;
-3. 增加样本数据量;
-4. 利用集成学习的思想来解决过拟合问题,主要是Bagging思想;
-5. 对训练用的特征属性做一定的分析,然后根据业务场景选择一些合适的特征属性进来(特征选择)。
一、机器学习算法总结
1、线性回归
1. 线性回归算法是什么?线性回归基本原理是什么?构建原理是什么?
2. 损失函数是什么?
3. 什么是梯度下降?BGD、SGD、MBGD这三种有什么区别?调优策略?
4. 基于最大似然估计到处最小二乘的损失函数的那个过程理解一下。
5. 你觉得线性回归算法有什么局限性吗?那你觉得这个局限性怎么解决?优缺点
6. 过拟合和欠拟合的解决方案
7. L1正则和L2正则是什么?区别
8. 基于BGD、SGD的线性回归代码的实现
答:
1、线性回归算法是什么?线性回归基本原理是什么?构建原理是什么?
1.1 线性回归 指的是空间上寻找一条线或者超平面,是的空间中样本均匀的分布其两侧
1.2 样本到超平面的误差的平方和最小,即空间中样本均匀的分布其两侧
1.3 最小二乘法、极大似然函数p(yi | xi)累乘。
2、 损失函数是什么?
pass
3、什么是梯度下降?BGD、SGD、MBGD这三种有什么区别?调优策略?
1.1 它是一种迭代更新的算法,求解无约束条件下凸函数的极值问题。
1.2 BGD叫批量梯度下降,它是需要所有样本梯度累加后 更新一次模型参数,循环迭代至终止条件;公式为:pass
SGD叫随机梯度下降,它指的是每次更新模型参数只需要一个样本,循环迭代至终止条件;公式:pass
MBGD小批量随机梯度下降,结合BGD与SGD的优缺点。公式:pass
BGD更新速度较慢,但它比较稳定,可以抗拒较多异常样本
SGD更新速度比BGD要快,但它需要训练集异常样本较少;SGD受到异常样本的影响,有可能跳出局部最优解,在训练集
中有大量正常样本是效果不会比BGD差太多,SGD在最优解收敛时会出现波动。
MBGD保证算法的训练过程比较快,又需要保证最终参数训练的准确率。
1.3 调优策略?
学习率的选择:学习率较大时,可能回跳过局部最优甚至发散。学习率较小时迭代速度较慢。
初始值的选择:梯度下降是一种局部最优的求解方法,因而初始值不同会导致模型求解结果不同,因此我们可以取不
同的初始值,求得使得损失函数最小的参数作为模型最优参数。
标准化:样本在不同特征上的取值范围不同会导致特征参数更新速度不同,因此需要进行标准化。
4、pass
5、线性回归的优缺点:
5.1 优点:
① 模型解释性很强、构造简单(就是空间上寻找超平面使得样本点均匀分布在其两侧),
② 建模速度快,不需要复杂的计算,当数据量庞大的时候依然能保证很快的运行速度
③ 模型参数θ易获得,易保存到数据库中,即模型部跨平台署简单。
5.2 缺点:
① 线性回归对异常值敏感 (因为回归模型需要考虑所有的样本点,而异常值对模型有较大的影响)
② 线性回归需要数据是线性的,因此对复杂数据的效果并不好(非线性数据需要扩展维度,多项式扩展、GBDT扩展)
5.3 局限性的解决方案:
异常数据处理:
① 数据清洗时应当删除数据
② 利用Bagging的思想抽样求多个模型的均值
非线性数据的解决方案:
将数据有低维映射到高维(多项式扩展、GBDT扩展维度),是的数据在高维空间线性可分。
6、pass(原文)
7、l1、l2 正则
1、L2、L1正则项的作用: ------- ① 都可以解决过拟合问题 ② 还可以解决多重线性特征模型的空间不稳定性(通过减小多
重共线特征的权重大小)。
1.1 L2、L1 代表损失函数屈最小值时必须满足 L2、L1所围成的面积,类似 拉格朗日函数约束条件。
1.2 L2正则通常用作解决模型的过拟合问题。L1正则也可以解决过拟合问题,但是它通常用作特征提取。
1.3 惩罚项系数λ越大,表示模型对 θ 允许的 大小越小,反之,对 θ 约束越小。
2、L2、L1正则的区别:
2.1 L2 各个参数的范围是缩放到一个圆内的,因此极难出现某个维度θ出现为0的情况,即不会产生稀释解。
L2 Ridge模型效果稳定,鲁棒性强(Lasso去除噪声特征)
2.2 L1 各个参数的范围是缩放到一个折线内的,因此很容易出现稀释解,常作为 特征提取 后用 Ridge回归模型 预测。
L1 Lasso回归模型计算速度快
2.3 考虑稳定性也考虑求解的速度,就使用Elasitc Net
3、稀释解:稀释解可以帮助模型去除冗余的噪声特征,可以增加模型的鲁棒性(泛化能力)
8. pass
常见的特征提取(选择):
① Lasso、决策树(RF、GBDT、XGBoost)
② 特征工程的 API
③
2、逻辑回归
1. 逻辑回归算法是什么?逻辑回归基本原理是什么?构建原理是什么(sigmiod函数)?
2. 逻辑损失函数是什么?
3. softmax回归算法是什么?softmax回归基本原理是什么?构建原理是什么(softmax函数)?
4. 基于最大似然估计推导逻辑回归
5. 你觉得逻辑回归算法有什么局限性吗?那你觉得这个局限性怎么解决?优缺点
6. 基于BGD、SGD的逻辑回归代码的实现
1. 逻辑回归算法是什么?逻辑回归基本原理是什么?构建原理是什么(sigmiod函数)?
1.1 逻辑回归是一个有监督学习的二分类算法,它的底层基于线性回归,空间中寻找一个超平面,将样本的
两个类别尽可能的分隔开,使得所有样本距离超平面越远越好,即符合类别概率越大越好。
1.2 逻辑回归的底层是线性回归(wx + b 或 θx),将样本的 θx的预测值作为决策函数值 z 通过sigmiod
函数进行转化概率 p,当p > threshold 时,预测类别为 1,p < threshold 时,预测类别为 0。
1.3 sigmiod函数的公式与性质?
pass
2. 逻辑损失函数是什么?
pass
3. softmax回归算法是什么?softmax回归基本原理是什么?构建原理是什么(softmax函数)?
3.1 softmax 回归 是一个有监督学习的多分类算法,它的底层基于线性回归。用每一个类别的训练集数据
分别训练多组θ,将测试集数据分别代入多组θ方程中,将得到的结果映射到 0-1 区间内后作为样本符合
某个类型的概率,求概率最大的类型作为样本的预测类别。
3.2 softmax函数?
pass
4. 基于最大似然估计推导逻辑回归
pass
5. 你觉得逻辑回归算法有什么局限性吗?那你觉得这个局限性怎么解决?优缺点
逻辑回归算法底层基于线性回归,因此特性也符合线性回归的特性
5.1 逻辑回归的优缺点:
5.1.1 优点:
① 逻辑回归解析性很强,模型构造简单
② 建模速度快,不需要复杂的计算,当数据量庞大的时候依然能保证很快的运行速度
③ 模型参数θ易获得,易保存到数据库中,即模型部跨平台署简单。
5.1.2 缺点:
① 线性回归对异常值敏感 (因为回归模型需要考虑所有的样本点,而异常值对模型有较大的影响)
异常值解决方案:
① 数据清洗时应当删除数据
② 利用Bagging的思想抽样求多个模型的均值
② 线性回归需要数据是线性的,因此对复杂数据的效果并不好(非线性数据需要扩展维度,多项式扩展、GBDT扩展)
非线性数据解决方案:
将数据有低维映射到高维(多项式扩展、GBDT扩展维度),是的数据在高维空间线性可分。
6. 基于BGD、SGD的逻辑回归代码的实现
pass
3、KNN
KNN算法总结:
-1. KNN算法是什么?KNN算法的基本原理是什么?
-2. 损失函数是什么?
-3. KNN伪代码怎么写的?基于Python实现KNN分类算法(多数投票的分类算法)
-4. 你觉得有哪些因素可能影响KNN算法模型效果呢?你觉得KNN算法有什么缺点?怎么来解决?
-5. 什么是KD树?KD树的创建策略?KD树的查找方式?
1. KNN算法是什么?KNN算法的基本原理是什么?
KNN是有监督学习的K近邻的机器学习算法,K值得是最近的K个样本的意思;它的思想是 ‘近朱者赤近墨者黑’,若果空间中
某些样本具有相近的特征属性(样本距离比较近),我们可以认为它们的目标属性Y是相近的。我们可以用已有的最近K个样本
的目标属性来预测(分类:加权多票表决,回归:加权均值)待测样本的目标属性。
2. 损失函数是什么?
KNN算法没有损失函数
3. KNN伪代码怎么写的?基于Python实现KNN分类算法(多数投票的分类算法)
pass
4. 你觉得有哪些因素可能影响KNN算法模型效果呢?你觉得KNN算法有什么优缺点?怎么解决?
该算法适用于对样本容量比较大的类域进行自动分类。
4.1 你觉得有哪些因素可能影响KNN算法模型效果呢?
① KNN三要素的选择:
K值的选择、距离计算方式、决策函数决策方式
② 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少),较少样本类别预测较差
4.2 你觉得KNN算法有什么优缺点?
4.2.1 KNN算法的优点:
① 思想简单,理论成熟,即可以做分类也可以做回归
② 可以天然解决多分类问题
③ 可以用非线性数据分类,即数据与数据存在交叉时效果也不错。
④ 训练时间复杂度为比SVM低
⑤ 准确度高,对异常点不敏感
4.2.1 你觉得KNN算法有什么优缺点?怎么解决?
① KNN算法的计算量很大(每次预测都需要计算所有的距离)
解决方案:KD树
② 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少),较少样本类别预测较差
解决方案:特征工程解决数据不均衡的方法(上下采样 ...)
③ 需要大量的内存;
5. 什么是KD树?KD树的创建策略?KD树的查找方式?
5.1 KD树是一个树状的数据结构,他是为了解决KNN算法样本数量过大时,计算距离最近K个样本速度过慢的问题。
5.2 KD Tree构建方式:
KD树采用从m个样本的n维特征中,分别计算n个特征取值的方差,用方差最大 的第k维特征nk作为根节点。对于这个特征,选择取
值的中位数nkv作为样本的划分点,对于小于该值的样本划分到左子树,对于大于等于该值的样本划分到右子 树,对左右子树采用
同样的方式找方差最大的特征作为根节点,递归即可产生 KD树。
5.3 KD树的查找方式
pass
4、决策树
1、决策树算法:
NOTE:
决策树是一个贪心算法,每次选择划分数据的划分节点的时候,都是选择让损失函数变的更小的这个特征属性作为划
分节点,只考虑局部最优没有考虑全局最优。
在分类的时候,损失函数可以理解为信息熵;在回归的时候,损失函数可以理解为MSE。
只有基于决策树模型才能传入多个标签,其他的模型需要用多标签多类别的API去做,但实际工作中通常
一个一个标签的去做。
2、决策树算法知识脉络:
-1. 决策树算法是什么?你怎么理解决策树算法的?
-2. 决策树算法的执行过程?你觉得为什么可以基于决策树做特征选择?
-3. 决策树算法的优缺点?如何解决这个缺点?
-4. 回归决策树的构建的思想?(以往MSE最小化的方向进行数据的划分)
-5. 决策时过拟合欠拟合的解决方案?
-6. 简述一下ID3的优缺点,C4.5对于ID3解决了那些问题、CART对于C4.5解决了什么问题?
1. 决策树算法是什么?你怎么理解决策树算法的?
1.1 决策树是一种贪心算法(局部最优),根据已知样本分布的概率来来进行划分数据的一种有监督学习方法,决策树是一种
解释性强、直观、准确度高的一种用于概率分析的树状结构的模型。
2. 决策树算法的执行过程?你觉得为什么可以基于决策树做特征选择?
2.1 决策树算法的执行过程:
决策树算法生成思想:特征选择、决策树生成、剪枝(前项剪枝、后项剪枝)。
① 特征选择:特征选择是指从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多
不同量化评估标准标准,从而衍生出不同的决策树算法。
② 决策树生成: 根据选择的特征评估标准(ID3、C4.5、CART评估是什么?),从上至下递归地生成子节点,直到数据
集不可分或达到限制条件则停止决策树停止生长。 树结构来说,递归结构是最容易理解的方式。
③ 剪枝:决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。
2.2 为什么决策树可以进行数据划分?
决策树算法在进行根节点特征选择的时候是让数据尽可能的存,即条件熵最小,所以该跟节点是对数据局决策能力最大的
特征,循环该步骤,则决策树的特征划分从上到下特征重要性依次减小。
3. 决策树算法的优缺点?如何解决这个缺点?
3.1 优点:
① 决策树是一种解释能力极强、直观、逻辑性强的树状算法
② 可以同时处理类别型与数值型的数据
⑤ 在合理的剪枝情况下,模型的准确度很高。
③ 可以处理线性数据与非线性数据的分类、回归问题。
④ 模型训练好以后,模型运行的速度非常快。
⑤ 便于集成学习。
缺点:
① 决策树模型对噪声数据敏感,容易过拟合(可以通过剪枝缓解)
② 在处理特征关联型数据时表现效果不明显。
③ 决策树是一种贪心算法,只考虑局部最优,没有考虑全局最优
4. 回归决策树的构建的思想?(以往MSE最小化的方向进行数据的划分)
回归决策树是以训练数据MSE(回归决策树算法中MSE即方差)最小的特征作为划分节点,以各个叶节点的均值作为预测值。如
果特征是连续的情况,将连续的Y值从大到小进行排序,用Y分位点作为分割的方法。
5. 决策时过拟合欠拟合的解决方案?
欠拟合:
① 增加树的深度
② 利用集成学习Boosting的思想(Adaboost、GBDT、XGboost)
过拟合:
① 剪枝(减少树的深度、节点分割字节点的最小数据量 ....)
② 利用集成学习Bagging的思想(Bagging、RF ....)
6. 简述一下ID3的优缺点,C4.5对于ID3解决了那些问题、CART对于C4.5解决了什么问题?
6.1 ID3算法的优缺点:
pass
6.2 C4.5对于ID3解决了那些问题
针对缺点1:ID3数据划分比较倾向于特征的分类比较多的特征属性
解决方案:C4.5用信息增益率代替信息增益。
针对缺点2:ID3决策树不能处理连续的特征
解决方案:寻找 point_split点进行分割离散化,用这些离散的分割点来进行数据划分。
针对缺点3:ID3算法不支持剪枝,因此容易过拟合
解决方案:C4.5 算法支持剪枝,缓解过拟合。
6.3 CART对于C4.5解决了什么问题?
针对问题1:ID3算法、C4.5算法计算复杂、多叉树问题
解决方案:CART是二叉分类回归树,它用 gini增益 来作为划分评估,减少了计算量。
针对问题2:ID3算法、C4.5算法无法解决回归问题?
解决方案:CART 以MSE作为划分评估,以叶节点的均值作为预测值。
5、集成学习
集成学习是一种思想,并不是一种算法
详情:
pass
6、聚类算法
7、SVM支持向量机
8、贝叶斯分类器、EM算法
9、GMM算法、HMM算法
10、主题模型
11、特征工程
二、面试100例
。。。。。