Machine_Learning¶
ensemble¶
änˈsämbəl
集成学习ensemble分为bagging(减小方差)、boosting(偏差) 和 stacking(改进预测)
bagging和boost¶
当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大)
梯度提升的Boosting方式是使用代价函数对上一轮训练出的模型函数f的偏导来拟合残差。
Bagging和Boosting的区别¶
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
bagging减少方差,boosting是减少偏差¶
bagging是减少variance方差,而boosting是减少bias偏差???再补充
GBDT¶
GBDT 基本思想是根据当前模型损失函数的负梯度信息来训练新加入的弱分类器,然后将训练好的弱分类器以累加的形式结合到现有的模型中。
截图选取一些部分
GBDT 如何用于分类????
GBDT和随机森林异同¶
GBDT和随机森林的相同点
1、都是由多棵树组成
2、最终的结果都是由多棵树一起决定
GBDT和随机森林的不同
1、组成随机森林的树可以是分类树,也可以是回归树;而GBDT只由回归树组成 ???
2、组成随机森林的树可以并行生成;而GBDT只能是串行生成
3、对于最终的输出结果而言,随机森林采用多数投票等;而GBDT则是将所有结果累加起来,或者**加权**累加起来
4、随机森林对异常值不敏感,GBDT对异常值非常敏感
5、随机森林对训练集一视同仁,GBDT是基于权值的弱分类器的集成
6、随机森林是通过减少模型方差提高性能,GBDT是通过减少模型偏差提高性能
AdaBoost算法缺点¶
Xgboost 为什么用二阶泰勒展开¶
XGBoost与GBDT有什么不同¶
XGBoost处理缺失值¶
原是论文中关于缺失值的处理将其看与稀疏矩阵的处理看作一样。在寻找split point的时候,不会对该特征为missing的样本进行遍历统计, 只对该列特征值为non-missing的样本上对应的特征值进行遍历,通过这个技巧来减少了为稀疏离散特征寻找split point的时间开销。在逻辑实现上,为了保证完备性, 会分别处理将missing该特征值的样本分配到左叶子结点和右叶子结点的两种情形,计算增益后选择增益大的方向进行分裂即可。可以为缺失值或者指定的值指定分支的默认方向, 这能大大提升算法的效率。如果在训练中没有缺失值而在预测中出现缺失,那么会自动将缺失值的划分方向放到右子树。
决策树与这些算法框架进行结合所得到的新的算法:¶
xgboost判断特征重要程度的三种指标¶
掉包里面,get_fscore 有三种种评判特征重要程度的方法:
lightGBM¶
基本原理与XGBoost一样,只是在框架上做了一优化(重点在模型的训练速度的优化)。
lightGBM与XGboost对比¶
对结果影响不大,但是xgboost也进行了分裂,带来了务必要的开销。 leaft-wise的做法是在当前所有叶子节点中选择分裂收益最大的节点进行分裂,如此递归进行,很明显leaf-wise这种做法容易过拟合,因为容易陷入比较高的深度中,因此需要对最大深度做限制,从而避免过拟合。
lightgbm哪些方面做了并行¶
有监督机器学习算法¶
liner regression 线性回归¶
lasso 回归和岭回归(ridge regression)其实就是在标准线性回归的基础上分别加入 L1 和 L2 正则化(regularization)
岭回归和Lasso的区别¶
liner regression 矩阵解¶
Logistics regression¶
李宏毅视频
用pytorch手写逻辑回归请见 leetcode那一页的非常规题 https://knowledge-record.readthedocs.io/zh-cn/latest/leetcode/leetcode.html#pytorch
为什么LR要用sigmoid¶
浅层: 值在0-1之间,连续,单调上升,光滑可导。关于0.5中心对称,符合LR要求预测值等于概率的要求。
深层:最大似然
正态分布解释
最大熵解释 该解释是说,在我们给定了某些假设之后,我们希望在给定假设前提下,分布尽可能的均匀。对于Logistic Regression,我们假设了对于{X,Y}, 我们预测的目标是Y|XY|X,并假设认为Y|XY|X服从bernoulli distribution,所以我们只需要知道P(Y|X)P(Y|X);其次我们需要一个线性模型,所以P(Y|X)=f(wx)P(Y|X)=f(wx)。 接下来我们就只需要知道f是什么就行了。而我们可以通过最大熵原则推出的这个f,就是sigmoid
分类为什么用CE而不是MSE¶
非凸:
非凸应该是如果有很多个x,这些loss叠加起来是一个非凸的,因为是二次的叠加。
SVM¶
SVM中的常考点以及手推SVM
机器学习–手推SVM以及KKT条件 https://zhuanlan.zhihu.com/p/45444502
手推SVM 支持向量机的简易推导和理解 https://blog.csdn.net/asd136912/article/details/79192239 这个讲的稍微简单些
手推一下:
是一种二分类有监督算法,目标是最小间隔最大化,可以理解为一个求解凸二次规划问题
(函数间隔 、 几何间隔(对函数间隔做了归一化))
然后,使其满足KKT条件,变为二次凸优化问题,引入拉格朗日乘子
未完待续….
为什么要把原问题转化为对偶问题? | (方便计算,方便引入核函数) | 1.对偶问题将原始问题中的约束转为了对偶问题中的等式约束 | 2.方便核函数的引入 | 3.改变了问题的复杂度。由求特征向量w转化为求比例系数a,在原始问题下,求解的复杂度与样本的维度有关,即w的维度。在对偶问题下,只与样本数量有关。
为什么hinge loss在SVM时代大放异彩,但在神经网络时代就不好用了呢?主要就是因为svm时代我们用的是二分类,通过使用一些小技巧比如1 vs 1、1 vs n 等方式来做多分类问题。而如论文[3]这样直接把hinge loss应用在多分类上的话,当类别数特别大时,会有大量的非目标分数得到优化, 这样每次优化时的梯度幅度不等且非常巨大,极易梯度爆炸。
朴素贝叶斯(Naive Bayes)¶
李航统计学习
https://www.zhihu.com/question/19725590/answer/241988854
P(x | w1)这个x在w上的条件概率是有意义的, 因为可能存在P(y | w1) (那个检测的问题 有患病、阳性、不患病、阴性) luo
朴素贝叶斯的假设 “属性条件独立性假设 假设所有属性相互独立
我很喜欢这个解释: 链接:怎样用非数学语言讲解贝叶斯定理(Bayes’s theorem)? - 猴子的回答 - 知乎 https://www.zhihu.com/question/19725590/answer/241988854
这里的P(A)是先验概率,P(B|A)/P(B)称为”可能性函数”(Likelyhood)。后验概率(新信息出现后的A概率) = 先验概率(A概率) * 可能性函数(新信息带来的调整)
决策树¶
|《李航 统计学习方法》 P60
信息增益¶
信息增益率¶
g(D,A)是上面的的信息增益。g(D,A) = H(D) - H(D|A)
分类树和回归树的区别¶
应用于分类和回归
分类树使用信息增益或增益比率来划分节点,回归树使用最大均方差划分节点
分类树:以C4.5分类树为例,穷举每一个feature的每一个阈值,找到使得按照feature<=阈值,和feature>阈值分成的两个分枝的熵最大的阈值, 按照该标准分枝得到两个新节点,用同样方法继续分枝直到所有人都被分入性别唯一的叶子节点,或达到预设的终止条件,若最终叶子节点中的性别不唯一, 则以多数人的性别作为该叶子节点的性别。
回归树:每个节点(不一定是叶子节点)都会得一个预测值,以年龄为例,该预测值等于属于这个节点的所有人年龄的平均值。 分枝时穷举每一个feature的每个阈值找最好的分割点,但衡量最好的标准不再是最大熵,而是最小化均方差即(每个人的年龄-预测年龄)^2 的总和 / N。 也就是被预测出错的人数越多,错的越离谱,均方差就越大,通过最小化均方差能够找到最可靠的分枝依据。分枝直到每个叶子节点上人的年龄都唯一或者 达到预设的终止条件(如叶子个数上限),若最终叶子节点上人的年龄不唯一,则以该节点上所有人的平均年龄做为该叶子节点的预测年龄。
随机森林¶
随机森林面试题
1.1 优缺点
随机森林随机性¶
随机森林的随机性体现在每颗树的训练样本是随机的,树中每个节点的分裂属性集合也是随机选择确定的。
随机森林需要剪枝吗¶
不需要,后剪枝是为了避免过拟合,随机森林随机选择变量与树的数量,已经避免了过拟合,没必要去剪枝了。
为什么要有放回的抽样¶
保证样本集间有重叠,若不放回,每个训练样本集及其分布都不一样,可能导致训练的各决策树差异性很大,最终多数表决无法 “求同”,即最终多数表决相当于“求同”过程。
影响性能因素¶
聚类¶
资料¶
清华大学【数据挖掘:聚类分析】 https://www.bilibili.com/video/BV1Vt411v7YS?p=1
机器学习中的聚类算法演变及学习笔记 https://www.nowcoder.com/discuss/432266?type=post&order=create&pos=&page=0&channel=666&source_id=search_post
聚类的种类¶
其他方法
Kmeans¶
K-Means聚类的优点:¶
K-Means聚类的缺点:¶
K值的选取¶
K-Means聚类变体¶
GMM EM¶
目前的理解是: kmeans是先随机初始化一些中心点,然后根据距离重新划分数据集,然后选择新的中心点,再重新划分数据集
那GMM这里,看起来是首先随机选取几个高斯分布,然后分布计算每个点属于某个高斯分布的概率
看起来像是把kmeans用距离划分改成了 用 高斯分布的概率 ?
DBSCAN¶
20聚类算法-DBSCAN https://www.bilibili.com/video/BV1j4411H7xv?p=1
核心思想….类似传销,发展下线直到不能发展为止
核心点就是划分一个半径,圆内被圈到的数据数量要求大于阈值
不能被发展成下线又不能自成一体的就是离群点。
流程:
DBSCAN的主要优点有:
1)可以对任意形状的稠密数据集进行聚类,相对的,K-Means之类的聚类算法一般只适用于凸数据集。
2)可以在聚类的同时发现异常点,对数据集中的异常点不敏感。
3)聚类结果没有偏倚,相对的,K-Means之类的聚类算法初始值对聚类结果有很大影响。
DBSCAN的主要缺点有:
1)如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合。
2)如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进。
3)调参相对于传统的K-Means之类的聚类算法稍复杂,主要需要对距离阈值ϵ,邻域样本数阈值MinPts联合调参,不同的参数组合对最后的聚类效果有较大影响。
kmeans 球形 而且倾向于簇的形状一样大 GMM 高斯分布球形 DBSCAN 不要求形状一样
AGNES聚类¶
AGNES聚类的优点:
AGNES聚类的缺点:
sequential leader clustering¶
其他常见问题¶
如何解决机器学习中样本不均衡问题?¶
数据挖掘中常见的「异常检测」算法有哪些?¶
sklearn
https://scikit-learn.org/stable/modules/outlier_detection.html#overview-of-outlier-detection-methods
几种距离度量方法比较¶
https://blog.csdn.net/J_Boom/article/details/86763024
欧氏距离
曼哈顿距离
切比雪夫距离
余弦距离 略
汉明距离(Hamming Distance) 就是编辑距离
杰卡德距离(Jaccard Distance)
相关距离(Correlation distance)
周期性特征的编码问题¶
对于周期性的变量,如日期,月,日,时,分,单纯用数值表示或者简单按数值可取数量编码是欠妥的,如23时和凌晨1h,二者相差只有2h,但是如果只是将时按简单的数字做特征,23与1,二者相差22h,将严重误导模型学习的结果。所以有必要对诸如小时,分钟这样的周期性特征做合适的编码工作。最典型的编码方式是将一维数值变量扩展为二维的(正弦值,余弦值)来编码。步骤如下:
1.某特征X,计算其最大取值max_value,如小时的最大取值是23时,max_value = 23
2.计算正弦值余弦值:
![]()
3.将扩充后的特征Xsin,Xcos加入到特征集合中,去除其对应的原特征X(不用单独的“时”数值特征,用“时”的sin,cos值代替)
具体说一下
计算sin,cos的方式,就是普通的数值转弧度制,计算正弦余弦值。
而单单把一维变量转化为同样是一维的sin/cos的话,由于sin/cos的周期性,会带来同一取值对应多个不同时刻的问题,如下图
第一张sin,第二张cos,数据X:0,1,2,3,…,23,Y:对应的sin(x),cos(x)
单独的一维sin/cos并不能限制取值的唯一性,而sin,cos组合便可以达到这个目的
启发式算法¶
通俗的解释就是利用类似仿生学的原理,将自然、动物中的一些现象抽象成为算法处理相应问题。当一个问题是NP难问题时,是无法求解到最优解的, 因此,用一种相对好的求解算法,去尽可能逼近最优解,得到一个相对优解,在很多实际情况中也是可以接受的。
举例:模拟退火算法(SA)、遗传算法(GA)、蚁群算法(ACO)、人工神经网络(ANN)
生成式和判别式 算法¶
机器学习“判定模型”和“生成模型”有什么区别? https://www.zhihu.com/question/20446337/answer/256466823
举一个例子:判别式模型举例:要确定一个羊是山羊还是绵羊,用判别模型的方法是从历史数据中学习到模型, 然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。
生成式模型举例:利用生成模型是根据山羊的特征首先学习出一个山羊的模型, 然后根据绵羊的特征学习出一个绵羊的模型,然后从这只羊中提取特征,放到山羊模型中看概率是多少,在放到绵羊模型中看概率是多少,哪个大就是哪个。
细细品味上面的例子,判别式模型是根据一只羊的特征可以直接给出这只羊的概率(比如logistic regression,这概率大于0.5时则为正例,否则为反例), 而生成式模型是要都试一试,最大的概率的那个就是最后结果
在机器学习中任务是从属性X预测标记Y,判别模型求的是P(Y|X),即后验概率; 而生成模型最后求的是P(X,Y),即联合概率。从本质上来说:判别模型之所以称为“判别”模型,是因为其根据X“判别”Y;而生成模型之所以称为“生成”模型, 是因为其预测的根据是联合概率P(X,Y),而联合概率可以理解为“生成”(X,Y)样本的概率分布(或称为 依据);具体来说,机器学习已知X,从Y的候选集合中选出一个来, 可能的样本有(X,Y_1), (X,Y_2), (X,Y_3),……,(X,Y_n),实际数据是如何“生成”的依赖于P(X,Y),那么最后的预测结果选哪一个Y呢?那就选“生成”概率最大的那个吧~
L0 L1 L2 正则化¶
两种正则化会导致模型最后有什么不同,为什么会有这种现象
L1 和 L2 正则的区别是什么¶
李飞飞在CS2312中给的更为详细的解释:
L2正则化可以直观理解为它对于大数值的权重向量进行严厉惩罚,倾向于更加分散的权重向量。由于输入和权重之间的乘法操作,这样就有了一个优良的特性: 使网络更倾向于使用所有输入特征,而不是严重依赖输入特征中某些小部分特征。 这样做可以提高模型的泛化能力,降低过拟合的风险。
L1正则化会让权重向量在最优化的过程中变得稀疏(即非常接近0)。也就是说,使用L1正则化的神经元最后使用的是它们最重要的输入数据的稀疏子集,同时对于噪音输入则几乎是不变的了。
在实践中,如果不是特别关注某些明确的特征选择,一般说来L2正则化都会比L1正则化效果好。
这个问题可以从两个角度去解释,概率角度和微积分角度。
首先是概率角度。 正则项来自于对数据的先验知识,这个先验知识的概率密度函数定义为 p(x)。如果我们认为,数据是服从高斯分布的,那么就应该在代价函数中加入数据先验P(x), 一般由于推导和计算方便会加入对数似然,也就是log(P(x)),然后再去优化,如果你去看看高斯分布的概率密度函数P(x),你会发现取对数后的log(P(x))就剩下一个平方项了,这就是L2范式的由来–高斯先验.
同样,如果你认为你的数据是稀疏的,不妨就认为它来自某种laplace分布.不知你是否见过laplace分布的概率密度函数,laplace分布是尖尖的分布, 是不是很像一个pulse?从这张图上,你应该就能看出,服从laplace分布的数据就是稀疏的了,如果取对数,剩下的是一个一次项|x-u|,这就是L1范式. 所以用L1范式去正则,就假定了你的数据是laplace分布,是稀疏的.
微积分角度。
一个优化问题的最优解,一般是在导数 = 0 的位置上。
如果原有模型的参数不是稀疏的,那么就意味着损失函数 f(x) 在求导时,0 点的导数不等于 0 ,即 f’(0) != 0,否则 如果等于 0 的话,那么 0 会是一个局部解导致模型稀疏。
此时,如果加上一个 L2 正则项,原有的 损失函数就变成了 f(x) + C||x||^2, 它在 0 点的导数就是 f’(0) + 2Cx (x = 0)。 因为 f’(0) != 0 所以整个式子不等于 0 ,所以 x = 0 不是极值点。
如果不是 L2, 是 L1,那么 损失函数就变成了 f(x) + C|x|,其 0 点 左导数 -C+f’(0), 右导数是 C+f’(0) , 从而当C > |f’(0)|的时候,次梯度集合是包含0点的, 而根据次梯度的定义,这个时候 x=0 即为最小值。
Normalization & Standardization¶
Normalization typically means rescaling the values into a range of [0,1].
Standardization typically means rescaling values to have a mean of 0 and a standard deviation of 1.
记忆: Standardization 就是 standard deviation of 1 and mean of 0
PCA¶
单层线性神经网络的降维=PCA ??
核心思想,我的总结:在高维空间中散布着很多点,要找到一条特征向量Eigenvector 第一主成分,使得这些点在投影到这个特征向量上以后是分散的最开的。如何衡量分散程度? 用Var 方差最大来衡量。
数学推导的话:PCA(主成分分析法)中,主成分方向的推导 https://www.bilibili.com/video/BV1ED4y1U7CC?from=search&seid=17109712823241897967 这个真的讲得好!颇像当时在JHU上课时学的讲法
关于点积: 求一个点在一个向量上的投影,就用点积。
所以说Var[aTX]要最大。a是那个特征向量
For any vector a∈RN
𝕍𝕒𝕣[aTX]=𝔼[(aTX)(XTa)]=𝔼[aT(XXT)a]Var[aTX]=E[(aTX)(XTa)]=E[aT(XXT)a]
so
𝕍𝕒𝕣[aTX]=aT𝔼[XXT]a=aTCaVar[aTX]=aTE[XXT]a=aT*C*a 其中C=XT*X 是一个实对称矩阵
We have to maximize this such that a**2=1也就是aT*a=1,做个单位化 (不然的话,让aT*C*a大,只需要让a越来越大就好) 注意,这里已经做了μ=0的平移变换了
这是一个优化问题,有对a的限制,用拉格朗日乘子法,转化为求 u(a)=aT*C*a - λ(aT*a-1)的最大值
这个是矩阵的求导有点复杂。可以简单的看成 Ca**2-λa**2。求导的话,是求Ca-λa=0 ===> (C-λI)a=0
当 a,λ 分别为C矩阵的特征向量,特征值时,u(a)有极值
这样一来,可以直接求解C的特征向量和特征值,将特征值从大到小排序,所对应的特征向量作为PCA的轴。
关于如何通过一个给定的矩阵求解他的特征向量和特征值,手算的话请看https://blog.csdn.net/Junerror/article/details/80222540
JHU上课时画的那个图,长得像loss下降的形式是这个意思。比如说前几个最大的λ的值是10,6,1。那么从三维降维成两维,保留的信息就是(10+6)/(10+6+1)
LDA(Linear Discriminant Analysis) 线性判别分析¶
LDA是一种**监督学习**的降维技术,也就是说它的数据集的每个样本是有类别输出的。这一点和PCA不一样,PCA是**无监督学习**
LDA的基本思想:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点中心尽可能远离。更简单的概括为一句话,就是“投影后类内方差最小,类间方差最大”。
周志华《机器学习》
核心思想,我的总结:在高维空间中散布着很多点,已知label。要找到一条特征向量Eigenvector,使得这些点在投影到这个特征向量上以后,同一标签的数据间隔最小,不同标签的数据间隔最大。 如何衡量分散程度?用Var 方差最大来衡量。
LDA(Latent Dirichlet Allocation) 隐含狄利克雷分布¶
常常用于浅层语义分析,在文本语义分析中是一个很有用的模型。
LDA模型是一种主题模型,它可以将文档集中的每篇文档的主题以概率分布的形式给出,从而通过分析一些文档抽取出它们的主题(分布)出来后,便可以根据主题(分布)进行主题聚类或文本分类。
同时,它是一种典型的词袋模型,即一篇文档是由一组词构成,词与词之间没有先后顺序的关系。
LDA模型就是要根据给定一篇文档,推断这个文档的主题是什么,并给出各个主题的概率大小是多少。
参数稀疏有什么好处¶
1)特征选择(Feature Selection): 大家对稀疏规则化趋之若鹜的一个关键原因在于它能实现特征的自动选择。一般来说,xi的大部分元素(也就是特征) 都是和最终的输出yi没有关系或者不提供任何信息的,在最小化目标函数的时候考虑xi这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时, 这些没用的信息反而会被考虑,从而干扰了对正确yi的预测。稀疏规则化算子的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。
2)可解释性(Interpretability): 另一个青睐于稀疏的理由是,模型更容易解释。例如患某种病的概率是y,然后我们收集到的数据x是1000维的, 也就是我们需要寻找这1000种因素到底是怎么影响患上这种病的概率的。假设我们这个是个回归模型:y=w1*x1+w2*x2+…+w1000*x1000+b (当然了,为了让y限定在[0,1]的范围,一般还得加个Logistic函数)。通过学习,如果最后学习到的w*就只有很少的非零元素,例如只有5个非零的wi, 那么我们就有理由相信,这些对应的特征在患病分析上面提供的信息是巨大的,决策性的。也就是说,患不患这种病只和这5个因素有关,那医生就好分析多了。 但如果1000个wi都非0,医生面对这1000种因素.
Rank Averaging¶
有哪些常见的 Feature engineering 特征工程的方法¶
常见的特征工程包括:
异常值处理 Outlier Handling¶
删除异常值 Outlier Removal,长尾截断 Long-tail Truncation,缺失值处理 Missing Value Handling
对于缺失值,首先要做数据统计,看看是不是上游数据出现了问题,缺失值多不多,占比多少,和过去相比怎么样
数值特征处理、类别特征处理 Numerical and Categorical Feature Engineering¶
数值特征处理:
类别特征处理:
特征构造 Feature Construction¶
组合特征:比如相加,相乘等等 Feature Combination (e.g., addition, multiplication, etc.)
降维 Dimensionality Reduction¶
PCA LDA SVD Autoencoder
特征过多/维度灾难/解决方案 https://knowledge-record.readthedocs.io/zh-cn/latest/machine_learning/machine_learning.html#id46
维度过高会导致样本在特征空间中分布稀疏
数据清洗¶
数据清洗一是为了解决数据质量问题,二是让数据更适合做挖掘。
解决数据质量问题¶
让数据更适合做挖掘或展示¶
特征过多/维度灾难/解决方案¶
维度灾难:https://zhuanlan.zhihu.com/p/26945814
样本在特征空间中分布稀疏
使用太多特征导致过拟合。分类器学习了过多样本数据的异常特征(噪声),而对新数据的泛化能力不好。
解决方案¶
1.L1正则化(Lasso):
2.主成分分析 (Principal Component Analysis, PCA):
3.t-Distributed Stochastic Neighbor Embedding (t-SNE)
4.递归特征消除 (Recursive Feature Elimination, RFE):
5.稳定性选择 (Stability Selection):
6.方差阈值 (Variance Threshold):
7.LDA (linear discriminant analysis):
8.使用树模型:
9.特征工程 (Feature Engineering):
总体而言,L1正则化、主成分分析PCA、递归特征消除RFE、使用树模型和方差阈值等方法相对具有较强的可解释性,因为它们提供了直接解释模型或特征选择过程的信息。然而,对于某些方法(如t-SNE),解释性可能相对较弱,主要用于可视化和聚类。
特征选择¶
怎样选择特征,如何筛选特征
特征选择 https://zhuanlan.zhihu.com/p/32749489 这篇文章有点东西的,解释的很详细,而且可以基于sklearn给出示例。
当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面考虑来选择特征:
根据特征选择的形式又可以将特征选择方法分为3种:
特征选择主要有两个目的: | • 减少特征数量、降维,使模型泛化能力更强,减少过拟合; | • 增强对特征和特征值之间的理解。
单变量特征选择的原理是分别单独的计算每个变量的某个统计指标,根据该指标来判断哪些指标重要,剔除那些不重要的指标。
递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,移除若干权值系数的特征,再基于新的特征集进行下一轮训练。
或者很容易将其运用到特征选择任务中,例如回归模型,SVM,决策树,随机森林等等。其实Pearson相关系数等价于线性回归里的标准化回归系数。
最大似然/最小二乘¶
最小二乘,最合理的参数估计量应该使得模型能最好地拟合样本数据,也就是估计值和观测值之差的平方和最小
找一个(组)估计值,使得实际值与估计值之差的平方加总之后的值最小,称为最小二乘。
最大似然,就是利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。
用ln把乘法变成加法,且不会改变极值的位置
为什么先划分训练集和测试集后归一化¶
先对数据划分训练集和测试集后归一化和对数据归一化后划分测试集和训练集,两者的区别:
理论上还是应该 先划分数据集,然后对训练集做预处理,并且保存预处理的参数, 再用同样的参数处理测试集
因为划分训练集和测试集就是假设只知道训练集的信息,而认为 测试集数据是来自未来的,不可得知。如果之前统一做预处理之后再划分的话就利用了测试集的信息
进程与线程¶
先来个直观的解释。核心是 一个进程可以是多线程 (可以有多条线)
https://www.zhihu.com/question/25532384/answer/1130818664 这个解答说的很好,解释的具体,而且面试题也涉及了
概率论¶
概率论中的常见分布类型¶
三种离散型分布:Bernoulli Distribution伯努利分布、Binomial Distribution二项分布、poisson distribution
1. Bernoulli Distribution伯努利分布
伯努利分布(两点分布/0-1分布):伯努利试验指的是只有两种可能结果的单次随机试验。若随机变量X的取值为0和1两种情况,且满足概率分布P(X=1)=p, P(X=0)=1-p,则X服从参数为p的伯努利分布。
举例:假设有产品100件,其中正品90件,次品10件。现在随机从这100件中挑选1件,那么他挑选出正品的概率为0.9,即P(X=正品)=p = 0.9
2.Binomial Distribution二项分布
二项分布是将一个『只有两种可能结果的实验』重复n次,得到n+1种『最终实验结果』。伯努利分布分布是二项分布的特例,二项分布是0-1分布的n次重复
3.poisson distribution
一个单位内(时间、面积、空间)某稀有事件发生K次的概率。 P(X=0),P(X=1),P(X=3),….所有可能的概率共同组成了一个分布,即泊松分布。
应用举例:
三种连续型分布Normal distribution正态分布、Uniform distribution均匀分布、Exponential distribution指数分布
4.Normal distribution正态分布
5.Uniform distribution均匀分布
6.Exponential distribution指数分布
中心极限定理¶
中心极限定理的准定义是:
中心极限定理(CLT)指出,如果样本量足够大,则变量**均值**的采样分布将近似于正态分布,而与该变量在总体中的分布无关。
中心极限定理意味着即使数据分布不是正态的,从中抽取的样本均值的分布也是正态的。
大数定律¶
在试验不变的条件下,重复试验多次,随机事件的频率近似于它的概率
相比较弱大数定律,强大数定律表征着当数列样本量增大后,它再也不会超出虚线所表示的边界,也就是超出这个边界的概率就是0了。这个就叫做强大数定律的处处收敛。
投骰子连续两次是6就停止,求投掷的次数的期望¶
抛硬币直到出现连续N次正面为止的期望¶



