线性回归
线性回归
最小二乘法小结
脊回归(Ridge Regression)
Lasso Regression
多重共线性的解决方法之——岭回归与LASSO
感知机
感知机原理小结
在《统计学习方法》中,定义的方式有一些不同,如下图所示

书中所提到了“不考虑∥w∥1”,实际意思是说不会影响解,
对于最小化问题−∥w∥1∑yi(wxi+b)来说,如果我们添加一个条件∥w∥=1后(注意,添加这个条件之后,并不会对原问题的意义进行改变,仍然是在找经验误差最小的分类面,但加入说要是假设分子为1,那这个优化问题的意义就改变了),优化问题变成了−11∑yi(wxi+b),得到一组解w1=[w11,w12...],b1;然后把这个条件改成∥w∥=2后,优化问题变成了−21∑yi(wxi+b),得到了第二组解w2=[w21,w22...],b2,很容易能看出这两个优化问题是完全相同的,并且第一组解和第二组解的对应项的比例是相同的,比如w21w11=w22w21=b2b1=21,也就是说不仅两个优化问题的最终大小一样,所代表的的分类面也一样
进而能说明的是,即使不对w进行约束,无论w在优化过程中会怎样变化,最终的解所代表的分类面也都是唯一的,反正最终的最优解中∥w∥都是一个常数a
另外刘建平的博客里有另一种解释方法,即把样本所处的n维特征空间扩充为n+1维,就是把那个常数1也当做特征的一个维度,样本就从x=[x1,x2,...]变成了x=[1,x1,x2,...],并且参数空间也从n维扩充到了n+1维,参数就从w,b变成了θ=[b,w],于是点到新空间的分类面的距离就变成了∥θ∥θx,所以无论θ是多大都不影响最终的解
最近邻
机器学习之KNN算法
最近邻查找算法kd-tree
详解KDTree
Scikit-learn:最近邻搜索sklearn.neighbors与ball tree
《机器学习实战》学习笔记——基于sklearn使用 KNN
用balltree找某个目标点target的所属的时候,我猜应该是从上往下依次比较target点距离左球与右球的球心的距离,距离哪个球心更近,就走哪条路径
Logistics
逻辑斯蒂回归(Logistic Regression)
Logistic回归原理及公式推导
Softmax
Softmax回归
SVM
SMO优化算法(Sequential minimal optimization)
支持向量机通俗导论(理解SVM的三层境界)
支持向量机的核心:支持向量机的模型构建意义是找到一个分类超平面,能够把特征空间中的样本全部正确分类的同时,保证距离分类超平面最近的样本能够尽可能远离这个分类超平面,距离的评估用的是几何间隔,也就是高中数学中的点到平面距离,于是就有了如下优化问题(称这个优化问题为问题A),其中r^就是距离分类超平面最近的样本距离分类平面的函数距离
问题A:w,bmax∥w∥r^,s.t. yi(wTxi+b)≥r^
并且同时,无论这个距离分类超平面最近的样本是样本集中的哪个点、位置在哪,都将这个点到达分类超平面的函数距离设置为1,于是原问题就变成了新的优化问题(称这个优化问题为问题B)
问题B:w,bmax∥w∥1,s.t. yi(wTxi+b)≥1
可以从如下两个角度来理解:第一,函数间隔的大小收到点与分类面的相对位置和分类超平面的参数的两方面的影响,一旦支持向量确定,那么更改分类超平面的参数就会等比例的放大或者缩小函数间隔,而这个函数间隔的变化并不会让分类超平面变化。第二,设置距离分类超平面最近的样本到平面的函数间隔为1,其实类似于在设置单位,训练集一旦确定,分类面也一定是确定的
这里我想给出我自己的理解方法,在问题A的基础上人为添加一个条件r^=1,得到如下优化问题,称之为问题C,很容易知道问题C的解可能不是问题A的解,但这两个问题代表的超平面一定是同一个超平面
问题C:s.t.w,bmax∥w∥r^ yi(wTxi+b)≥r^r^=1
如果我们现在解开了问题A,得到的解wA∗,bA∗,这个解代表了SVM的分类超平面,但这个解并不一定是问题C的解,但如果对wA∗,bA∗进行等比例的放大或者缩小得到wC∗,bC∗使得r^=1成立,那么这个wC∗,bC∗就是问题C的解,但注意,wA∗,bA∗与wC∗,bC∗代表的平面是同一个平面
同样地,如果我们现在解开了问题B,得到的解wB∗,bB∗,这个解也代表了SVM的分类超平面,但这个解并不一定是问题C的解,但如果对wB∗,bB∗进行等比例的放大或者缩小得到wC∗,bC∗使得r^=1成立,那么这个wC∗,bC∗就是问题C的解,但注意,wB∗,bB∗与wC∗,bC∗代表的平面是同一个平面
所以仅仅从分类面的同一性角度来说,wB∗,bB∗与wA∗,bA∗是同一个分类面,问题A与问题B也就等价了,解的具体是多大就无所谓了
文中有下式

之所以b∗是这个,是因为那两个max和min对应的是分类面两边的支持向量,而且分类面肯定过这两个支持向量的中点
至于为什么非支持向量样本对应的的αi=0,是因为首先非支持向量不是距离分类面最近的点,所以满足yi(wTxi+b)>1,又因为解要满足KKT条件,即αiyi(wTxi+b)=0,所以有如上结论
核函数存在的意义:原本的思路是将低维空间x∈Rd通过函数ϕ映射到高维空间ϕ(x)∈Rd+m,把原本线性不可分的数据变成高维空间的线性可分数据,然后在高维空间求解如下问题,从而计算分类面参数去做SVM
w,bmax∥w∥1,s.t. yi(wTϕ(x)+b)≥1且w∈Rd+m
这有着维度爆炸的问题,那么核函数的出现告诉我们没有必要先映射后在高维空间求解,在低维空间同样可以完成这个事情,为什么呢?因为求解SVM的对偶问题的时候,我们需要的仅仅是训练集中任意两个样本的内积而已,要做的就仅仅是在求解对偶问题的时候,把两个向量的内积变成高维空间下的内积就可以了
SMO算法关于α不同取值对应意义的解释

首先回顾一下原问题

其拉格朗日方程为

由于KKT条件,因此有riξi=0,i=1,...,n,而又因为∂ξ∂L=0,因此有C−αi−ri=0,因此如果ri=0,则αi=C且ξi可以取大于0的值,这就表明了xi这个点是需要松弛的点;而如果ri̸=0,则有0≤αi<C且ξi=0,而ξi=0对应的就是xi不需要松弛,那么αi=0和αi>0分别对应了不是支持向量与是落在距离分类平面函数距离为1的区域的支持向量(有可能不存在)。在线性不可分的情况里,只要αi>0就是支持向量
支持向量机(SVM)的特点与不足
多核学习
从 SVM 到多核学习 MKL
特征提取-特征后期融合-多核学习方法(MKL)
贝叶斯方法
算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
朴素贝叶斯算法原理小结
补充:后验概率最大化


解释一下,机器学习的目的就是“在假设空间找到一个模型,使得期望风险函数最低”,而期望风险指的是每次预测的损失的期望(期望是一个随机变量的平均值)也就是说,我们要找的是让Rexp最小的模型,根据全期望公式有Rexp(f)=E[L(Y,f(X))]=E[E[L∣X]],那么一种方法就是,无论输入的X=x是什么,E[L∣X=x]都是最小的,也就有了图中所说的“逐个极小化”
而E[L∣X=x]=∑k=1K[L(ck,f(X=x)]P(ck∣X=x),讲的是当样本输入给定为x的时候,预测损失的期望,因为这个样本可能属于不同的类,因此当样本属于不同类的时候,损失这个随机变量的取值也有差异,所以这个期望就等于当预测为f(X=x)而样本属于ck时候的损失(就是L(ck,f(X=x))乘以损失为这么大的概率,也就是这个样本X=x属于ck这一类的概率(就是P(ck∣X=x),暂且假设这个后验概率分布是已知的)再求和,相当于在对Y求积分
什么时候能让E[L∣X=x]最小,先假设f(X=x)=y=cj,由于L为0-1损失,那么对于X=x这个样本来说,它的损失的期望就等于E[L∣X=x]=1−P(cj∣X=x),也就是说P(cj∣X=x)=P(y∣X=x)越大损失越小,如果在当前输入X=x下,P(cj∣X=x)=max{P(c1∣X=x),P(c2∣X=x),...,P(ck∣X=x)}的时候,E[L∣X=x]有最小值,也就是说在当前输入的X=x下,模型输出的是后验概率最大的那个类(即图中最后一个公式),就能保证对于每个输入X=x来说,E[L∣X=x]都是最小的,进而保证了Rexp(f)是最小的
而之前我们假设的是P(ck∣X=x)已知,而此时这个概率分布是未知的,而朴素贝叶斯的训练过程就是用来学习这个概率分布的

说来生气,之前和组里的老师和同学讨论这个问题的时候,我说这个值是极大似然估计出来的,他们说极大什么极大,这不就明摆着的么,呵呵= =
这个式子实在太通俗易懂了,所以没人追究他是怎么来的,这个式子讲的是:我们一共有N个样本,其中ck类的样本有a个,那么随机采样出现ck的概率就是Na
设从样本集中随机采样一个样本是ck类的概率为θ,设采样N次结果中出现了a个ck类的事件为A,那么似然函数为L(θ)=P(A∣θ)=CNaθa(1−θ)N−a于是对似然函数求导为∂θ∂L=CNaθa−1(1−θ)N−a−1[a(1−θ)−(N−a)θ],等于0时,刚好有θ=Na
从贝叶斯方法谈到贝叶斯网络
概率图模型之:贝叶斯网络
超细致的贝叶斯决策论
从决策树学习谈到贝叶斯分类算法、EM、HMM
决策树
决策树算法原理(上)
为什么信息增益倾向于选择多的特征,直观来讲,选特征数目多的,输出的叶子节点会更纯,可以让每个叶子节点更纯
假设数据中的每个人都是一个样本,每个人的姓名都不同,那么信息增益就会选择姓名作为最佳属性,因为按姓名分裂后,每个叶子节点只包含一条记录,而每个叶子只属于一类(信息增益最大),因此纯度最高。但是这样的分类没有意义。
举个实际数据例子,假如一个两类问题之中,总样本数目为4,其中正样本数目为2,负样本数目为2,并且该样本有a,b两个特征,其中特征a的取值可以是a1,a2,总样本之中,特征a,b当取不同值的,样本分布情况如下表,如:特征a取值为a1的样本数目为2,其中正负样本数目均为1。
可以算出总样本的熵H(D)=−21∗log21−21∗log21
当特征选a的时候,H(D∣a)=−42(21∗log21+21∗log21)−42(21∗log21+21∗log21)
当特征选b的时候,H(D∣b)=−11∗log11−11∗log11−11∗log11−11∗log11
所以[H(D)−H(D∣b)]>[H(D)−H(D∣a)],所以说倾向于选择特征取值更多的特征
但是注意,“倾向选择取值更多的特征”不一定就是坏事,因为熵和分类误差率的单调性完全一致,因此即使有着“倾向选择取值更多的特征”的性质,也不会使得一个不好的特征的信息增益比一个好的特征高;但仍不能否认,仅从数据的角度来看b特征就是比a特征好。甚至把问题再深入一点,假设下面表格中样本数目都乘以一百万,数据量足够大的时候b特征仍能保持一个特别好分类结果,那么也就证明了b特征就是一个很好的特征。
| 特征a取值 |
样本数目 |
正样本数目 |
负样本数目 |
| a1 |
2 |
1 |
1 |
| a2 |
2 |
1 |
1 |
| 特征b取值 |
样本数目 |
正样本数目 |
负样本数目 |
| b1 |
1 |
1 |
0 |
| b2 |
1 |
0 |
1 |
| b3 |
1 |
1 |
0 |
| b4 |
1 |
0 |
1 |
c4.5为什么使用信息增益比来选择特征? - 夕小瑶的回答 - 知乎
决策树算法原理(下)
scikit-learn决策树算法类库使用小结
决策树系列(五)——CART
集成学习
集成学习原理小结
Bagging和Boosting 概念及区别
Bagging与随机森林算法原理小结
[Machine Learning & Algorithm] 随机森林(Random Forest)
集成学习之Adaboost算法原理小结
统计学习方法中146页的解释


由8.4式可知,每一次迭代后每个样本权值变化公式为
wm+1,i=Zmwm,iexp(−αmyiGm(xi))=Zm−1Zmwm−1,iexp(−αm−1yiGm−1(xi))exp(−αmyiGm(xi))=∏k=1mZkw1,iexp(k=1∑m−αkyiGk(xi))=N∏k=1mZk1exp(k=1∑m−αkyiGk(xi))
并且fm−1(x)=∑k=1m−1αkGk(x),所以有
wm,i=N∏k=1m−1Zk1exp(−yifm−1(x))=N∏k=1m−1Zk1wˉm,i
并且由于Zk对任意样本都相同,因此说Gm∗就是AdaBoost算法之中第m轮输出的基本分类器
梯度提升树(GBDT)原理小结
GBDT相对于BDT(提升树)好在哪呢,为什么一定要用负梯度来拟合呢?
如果我们用的是平方损失,那么在训练新树的时候,就要针对L(y,fm−1(x)+T(x;θm))=[y−fm−1(x)−T(x;θm)]2=[r−T(x;θm)]2这时候新的树恰好需要拟合残差而已,但如果这个损失是个别的损失,那新树要去拟合的就不是残差了;而实际上可以把L看做以f为自变量的函数,于是对L关于f进行梯度下降得到∂f∂L,也就是说当自变量f沿着负梯度方向的时候,L减小最快,那么在实际数据中要做的就是学习一个新模型,使得当输入为x时输出值为∂f∂L,把这个模型加回给之前的模型,就完成了对L的梯度下降工作
在GBDT回归的时候,每一个新的弱分类器的叶子节点个数可能都不一样,GBDT回归的核心之一在于每个叶子节点的值的选择
多元GBDT分类的每个fk(x)代表的是针对“是第k类样本”和“不是第k类样本”的分类模型
一步一步理解GB、GBDT、xgboost
xgboost原理及应用–转
Complete Guide to Parameter Tuning in XGBoost (with codes in Python)
综合
感知机、线性回归、逻辑回归的简单对比