学习完机器学习,把知识点做一个整理,提供给需要面试的各位以及后期自己的巩固复习作一个简单的知识点梳理。
本文针对有一定机器学习基础的同学,如果有不正确处请指正。
预处理与特征工程
异常值/缺失值
- 1个:可以直接删除;
- 多个:通过方差齐性检验判断是否删除异常值所在特征列,或者用众数(针对离散值)或者均数(针对连续值)进行替换补充所在行。
归一化、标准化
- 树模型/逻辑回归型模型:不需要此预处理;
- SVM:需要此预处理,因为数据必须满足正态分布才可以进行后续的损失函数中去运用最小二乘法和距离计算,且提高精度
- 梯度和矩阵:加快求解速度
文字编码独热化,时间sin化
特征选择
- 过滤法:方差过滤、相关性过滤(卡方检验、F检验、互信息法),适合需要遍历所有特征的模型(决策树合适但随机森林不合适)
- 嵌入法:L1,L2,输入阈值即可通过模型判断选择特征,适合线性回归和逻辑回归
- 包装法:RFE,黑箱,通过Loss function判断选择特征,适合SVM
总结:一般来说,过滤法更快,但是粗糙。后两者更准确但是比较慢。当数据量很大时,优先使用方差过滤和互信息法。使用逻辑回归时,用嵌入法。使用SVM时,用包装法。迷茫的时候,从过滤法走起。
降维
- PCA:衡量指标是对角线,对角线上是方差,利用特征值分解映射新维度,不可解释
- SVD:衡量指标是奇异值,对角线上是奇异值,利用奇异值分解映射新维度,减少计算量
- LDA:找到有判别力的维度映射,相似的特征映射在一起
- PCA与LDA之间的差别:PCA和LDA虽然都用到数据降维的思想,但是监督方式不一样,目的也不一样。PCA是为了去除原始数据集中冗余的维度,让投影子空间的各个维度的方差尽可能大,也就是熵尽可能大。LDA是通过数据降维找到那些具有有判别力的维度,使得原始数据在这些维度上的投影,不同类别尽可能区分开来。下面这张图一定程度上表示了PCA和LDA之间投影选择的差别。
模型
线性模型
特点:速度快,小数据准确率高,降噪能力强
- 逻辑回归
分类模型
回归方程:y=????(x),求sigmoid函数的对数几率得到此回归方程,sigmoid函数可以将x转化为0-1的近似概率。
损失方程:????(????)=−1????∑????=1????????(????)????????????(????(????(????)????⋅????))+(1−????(????))????????????(1−????(????(????)????⋅????)), 又称交叉熵,与????有关,用最大似然估计的方法求的此损失方程,之后可以通过梯度下降求????
过拟合解决:L1, L2,C控制损失函数
样本不均衡解决:上采样,即复制增加少数类;或用class_weight+混淆矩阵的方式
多分类:solver, 分箱
- 线性回归
预测模型
回归方程:y=b+w1(x1)+w2(x2)…
损失方程:MSE,用最小二乘法求MSE(残差平方和,L2范式)最小的损失方程
过拟合解决:L1,L2,C控制损失函数
样本不均衡:class_weight+混淆矩阵的方式
多项式回归:与L1,L2连用
SVM
- SVC分类
特点:适合二分类、图像、文本等高维低样本数据,可以看成单个神经元
原理:从数据分布种找到一个超平面为决策边界,使数据分类误差最小
损失方程最小化/间隔最大化:d=w^2/2,限制条件为y(wx+b)≥1,∂≥0,凸函数用拉格朗日乘法求解,运用对偶求解是因为求w和b时有∂,对偶求出∂才能带入求w和b
软间隔:近似线性可分时才可以用,损失方程求解结果与硬间隔相同,只是最后∂限制不同
调参方案:C与核函数运用网格搜索联调
什么是核技巧:核技巧是使用核函数,确保在高纬空间不需要明确计算点的坐标。能够使用数据原始空间中的向量计算来表示升维后的空间中的点积结果的数学方式
树模型
特点:适合多分类、低维样本
- 决策树
分类:少数服从多数
分类依据:信息熵(更敏感、容易过拟合、运算慢),基尼系数
随机性:random_split、max_depth等属性控制
- 回归树
分类:平均数
分类依据:MSE,MAE
预剪枝和后剪枝的区别:预剪枝就是在树的构建过程(只用到训练集),设置一个阈值(样本个数小于预定阈值或GINI指数小于预定阈值),使得当在当前分裂节点中分裂前和分裂后的误差超过这个阈值则分列,否则不进行分裂操作。后剪枝是在用训练集构建好一颗决策树后,利用测试集进行的操作。
- 随机森林
bagging的代表算法
分步建树,树可为决策树或回归树,所以结果是平均或者少数服从多数
有放回抽样(带外数据直接作为测试集,不需要分训练集和测试集)
- XGBoost
boost的代表算法
迭代树,结果是权重直接相加(GBDT是加权平均)
分布计算GAIN值,有放回抽样(注重预测错误的样本)
lost function:k-1棵树的准确率(传统的Loss function,泰勒二阶展开)+树的复杂度(叶子个数+正则项)
调参方法:n_estimate即树的棵数+eta迭代树的学习率联合调参,再用gamma(Gain中的分裂阈值控制),max_depth等调参
bias和variable的概念:偏差是指模型的预测值和真实值之间的误差,即模型的准确性和精确度,会有过拟合和欠拟合的问题。模型越复杂,Bias会降低,但导致模型过拟合,会很难将你的只是从训练集推广到测试集。方差是由于学习算法过于复杂而产生的错误,反应了每一次输出结果与模型输出期望之间的误差,即模型的稳定性。Variance过高会对训练数据的高纬度变化过于敏感,会导致模型过度拟合数据从而从训练数据中带来噪音,对测试数据有一定好处。从本质上说,使模型复杂并添加更多变量,将会失去一些bias但获得一些variance,这就是权衡。
XGBoost对GBDT进行优化:损失函数进行了二阶泰勒展开,目标函数加入正则项控制复杂度,处理缺失值,加权直接求和替代加权平均。
评估指标
混淆矩阵
分类指标,1代表少数类,0代表多数类
-
准确度(Accuracy) = (11+00) / (11+10+10+00)
-
精度(precision) = 11 / (01 + 11)
被我们预测为少数类样本中,真正的少数类所占比例;当判错成本高昂时,我们回追求高精确度。即少数类被判对的能力 -
召回(recall) = 11 / (10 + 11)
少数类中被预测为少数类的比例;如果我们不惜一切代价找出少数类,则关注召回率。 -
特异度(specificity) = 00 / (01 + 00)
1-specificy为假正率;即把多数类判错的能力 -
F1值(F1-score) = 2TP / (2TP+FP+FN)
Precision和recall此消彼长,F1越接近1越好
RC曲线
- recall为X轴,假正率为Y轴
- AUC面积越大越好,约登指数为recall和FRP差距最大的阈值,可以用阈值控制
MSE & R square
回归指标
MSE:
-
MAE是L1范式,和MSE选其一就行,一般选MSE,这里不赘述。
-
MSE/MAE越靠近0越好。
R-Square
- R-square代表捕捉到的信息占样本携带总信息量的比例。
- 有一种情况下除了看MSE还要看R平方:当回归线前大半段拟合非常好,但是后小部分的线拟合得非常差,这时候MSE会很小因为被平分掉了,但是R平方会看出差别有多大。
多重共线性问题
判断是否有多重共线性问题:
- 统计学可以通过VIF判断
- 机器学习中用岭回归(L2范式)看岭迹线,如果随着∂增大交叉线越多则说明存在多重共线性。
岭回归(L2范式)
w中加上一个∂的单位矩阵,∂越大,模型受到共线性影响越小,可以解决多重共线性问题。
Lasso回归(L1范式)
w中减去了∂项,可以把w压缩到0,可以进行特征选择。
以上, 如有不正处,请指正。