机器学习中的分类算法总结
朴素贝叶斯
贝叶斯分类法是基于贝叶斯定理的统计学分类方法。它通过预测一个给定的元组属于一个特定类的概率,来进行分类。朴素贝叶斯分类法假定一个属性值在给定类的影响独立于其他属性的 —— 类条件独立性。
朴素贝叶斯的优缺点
- 优点
- 所需估计的参数少,对于缺失数据不敏感。
- 缺点
- 假设属性之间相互独立,这往往并不成立。(喜欢吃番茄、鸡蛋,却不喜欢吃番茄炒蛋)。
- 需要知道先验概率。
- 分类决策错误率。
朴素贝叶斯的公式
- 朴素贝叶斯求解:
P(C|F1,...,Fn)=p(C)p(F1,...,Fn|C)p(F1,...,Fn)=p(C)∏i=1np(Fi|C)
Decision Tree
决策树是一种简单但广泛使用的分类器,它通过训练数据构建决策树,对未知的数据进行分类。决策树的每个内部节点表示在一个属性上的测试,每个分枝代表该测试的一个输出,而每个树叶结点存放着一个类标号。
在决策树算法中,ID3基于信息增益作为属性选择的度量,C4.5基于信息增益比作为属性选择的度量,CART基于基尼指数作为属性选择的度量。
决策树代码
- 1
决策树的优缺点
- 优点
- 不需要任何领域知识或参数假设。
- 适合高维数据。
- 简单易于理解。
- 短时间内处理大量数据,得到可行且效果较好的结果。
- 缺点
- 对于各类别样本数量不一致数据,信息增益偏向于那些具有更多数值的特征。
- 易于过拟合。
- 忽略属性之间的相关性。
- 不支持在线学习
决策树公式
- 熵:
Entropy(S)=−∑pilogpi
- 信息增益:
Entropy(S,A)=Entropy(S)−∑v∈V(A)|Sv||S|Entropy(Sv)
- 分裂信息:
SplitInfoR=−∑j=1k|Dj||D|log2|Dj||D|
- 增益比率:
GainRatio(R)=Gain(R)SplitInfoR(D)
- 基尼指数:
Gini(S)=1−∑imp2i
SVM
支持向量机把分类问题转化为寻找分类平面的问题,并通过最大化分类边界点距离分类平面的距离来实现分类。
支持向量机的优缺点
- 优点
- 可以解决小样本下机器学习的问题。
- 提高泛化性能。
- 可以解决高维、非线性问题。超高维文本分类仍受欢迎。
- 避免神经网络结构选择和局部极小的问题。
- 缺点
- 缺失数据敏感。
- 内存消耗大,难以解释。
- 运行和调差略烦人。
支持向量机的公式
转自研究者July: SVM的求解,先导出 12||w||2 ,继而引入拉格朗日函数,转化为单一因子对偶变量a的求解。如此求w.b与a的等价,而求a的解法即为SMO。把求分类函数 f(x)=ω∗x+b 的问题转化为求w,b的最优化问题,即凸二次规划问题,妙。
从上图我们可以看出,这条红色的线(超平面)把红色的点和蓝色的点分开了。超平面一边的点对应的y全部是-1,而另外一边全部是1。
接着我们可以令分类函数: f(x)=ωTx+b 。显然x是超平面上的点时,f(x)=0。那么我们不妨要求所有满足f(x)<0的点,其对应的y等于-1,而f(x)>0则对应的y=1的数据点。(我盗用了很多图。。。)
回忆之前的目标函数:
这个问题等价于
很显然这是一个凸优化的问题,更具体的,它是一个二次优化问题—目标函数是二次的,约束条件是线性的。这个问题可以用任何现成的QP(Quadratic Programming)优化包解决。但是因为这个问题的特殊性,我们还可以通过Lagrange Duality变换到对偶变量的优化问题,找到一种更加行之有效的方法求解。首先我们给每一个约束条件加上一个Lagrange mutiplier,我们可以将它们融合到目标函数中去。 L(ω,b,a)=12||ω||2−∑ni=1α(yi(wTxi+b)−1) ,然后我们令 θ(ω)=maxai≥0L(ω,b,a) 容易验证,当某个约束条件不满足时,例如 yi(wTxi+b)<1 ,那么我们显然有 θ(w)=∞ 。而当所有约束条件都满足时,则有 θ(ω)=12||ω||2 ,亦即我们最初要最小化的量。那么我们现在的目标函数就变成了: minw,bθ(ω)=minω,bmaxai≥0L(ω,b,α)=p∗ ,并且我们有 d∗≤p∗ ,因为最大值中最小的一个一定要大于最小值中最大的一个。总之 p∗ 提供了一个第一个问题的最优值 p∗ 的一个下界。在满足KKT条件时,二者相等,我们可以通过求解第二个问题来求解第一个问题。
先让L关于 ω 和b最小化,我们分别把L对w和b求偏导:
再带回L得到:
此时我们得到关于dual variable α 的优化问题:
maxα∑ni=1αi−12∑ni,j=1αiαjyiyjxTixjs.t.,αi≥0,i=1,...,n∑ni=1αiyi=0
这个问题存在高效的算法,不过求解过程就不在这里介绍了。对于一个数据点进行分类时,我们是把x带入到 f(x)=wTx+b 中,然后根据其正负号来进行类别划分的。把 ω=∑ni=1αiyixi 代入到 f(x)=wTx+b ,我们就可以得到 f(x)=∑ni=1αiyi<xi,x>+b ,这里的形式的有趣之处在于,对于新点x的检测,只需要计算它与训练数据点的内积即可。
为什么非支持向量的 α 等于零呢?因为对于非支持向量来说, L(ω,b,a)=12||ω||2−∑ni=1α(yi(wTxi+b)−1) 中的, (yi(wTxi+b)−1) 是大于0的,而且 αi 又是非负的,为了满足最大化, αi 必须等于0。悲剧的非支持向量就被无声的秒杀了。。。
KNN
K近邻的优缺点
- 优点
- 暂无
- 缺点
- 计算量太大
- 对于样本分类不均衡的问题,会产生误判。
K近邻的公式
Logistic Regression
逻辑回归的优缺点
- 优点
- 速度快。
- 简单易于理解,直接看到各个特征的权重。
- 能容易地更新模型吸收新的数据。
- 如果想要一个概率框架,动态调整分类阀值。
- 缺点
- 特征处理复杂。需要归一化和较多的特征工程。
逻辑回归的公式
如果是连续的,那么就是多重线性回归;如果是二项分布,就是Logistic回归;如果是Poission分布,就是Poisson回归;如果是负二项分布,那么就是负二项分布。
回归问题常见步骤是:寻找h函数;构造J函数;想办法使得J函数最小并求得回归参数。逻辑回归的h函数为:
- 1
- 2
- 3
hθ(x)=g(θTx)=11+e−θTx
其中 hθ(x) 的值表示结果取1的概率。
那么对于输入x的分类结果对于类别1和类别0的概率分别为:
P(y=1|x;θ)=hθ(x)
P(y=0|x;θ)=1−hθ(x)
那么对于构造损失函数J,它们基于最大似然估计推到得到的:
∑ni=1Cost(hθ(xi),yi)=−1m[∑ni=1yiloghθ(xi)+(1−yi)log(1−hθ(xi))]
最小化上式,与最大化下式子类似:
P(y|x;θ)=(hθ(x))y(1−hθ(x))1−y
取似然函数:
l(θ)=logL(θ)=∑ni=1yi(loghθ(xi)+(1−yi)log(1−hθ(xi)))
使用梯度上升的方法,求解 θ ,同样如果把 J(θ) 取为
−1ml(θ) ,这样通过梯度下降求解梯度最小值。
梯度下降法求最小值:
θj:=θj−ασσθiJ(θ)
代入后得到:
θj:=θj−α1m∑mi=1(hθ(xi)−yi)xji
然后 θ 的更新过程如下:
其中E=g(A)-y。
正则化Regularization:
正则化是在经验风线上增加一个正则化项或者惩罚项。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化就越大。
λ 是正则项系数。多分类时可以去样本被判定为分类概率最大的那个类。
逻辑回归的问题
- 过拟合问题
- 减少feature个数
- 规格化
神经网络
神经网络的优缺点
- 优点
- 分类准确率高。
- 并行处理能力强。
- 分布式存储和学习能力强。
- 鲁棒性较强,不易受噪声影响。
- 缺点
- 需要大量参数(网络拓扑、阀值、阈值)。
- 结果难以解释。
- 训练时间过长。
神经网络公式
深度学习???
Ensemble learning
集成学习的思路是在对新的实例进行分类的时候,把多个单分类器的结果进行某种组合,来对最终的结果进行分类。
更好的数据往往打败更好的算法,设计好的特征大有脾益。并且如果你有一个庞大的数据集,使用某种特定的算法的性能可能并不要紧。大可以挨个分类器尝试,并且选取最好的一个。(可以多从易用性和性能考虑)
而且从Netfliex Prize的经验教训来看,尝试各类分类器、交叉验证、集成方法往往能取得更好的结果,一般的boosting>bagging>single classifier。集成学习的方法主要有一下三种:
1. 在样本上做文章,基分类器为同一个分类算法,主要有bagging和boosting。
2. 在分类算法上做文章,即用于训练基分类器的样本相同。基分类器的算法不同。
3. 在样本属性集上做文章,即在不同的属性上构建分类器,比较出名的是randomforest Tree的算法,这个有weka也有实现。
1998年Jerome Friedman & Trevor Hastie & Robert Tibshirani发表文章Additive Logistic Regression: a Statistical View of Boosting,中提到Bagging是一个纯粹的降低相关度的方法。如果树的节点具有很高的相关性,bagging就会有很好的效果。
GBDT
回归树类似决策树,使用叶子节点的平均值作为判定的结果。如果不是叶子节点,那么就继续向下寻找。GBDT几乎可用于所有的回归问题,亦可以适用于二分类问题。
GBDT使用新生成的树来拟合之前的树拟合的残差。
- 1
- 2
- 3
Adaboost
Adaboost目的就是从训练数据中学习一系列的弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器。
Adaboost的算法流程如下,首先初始化训练数据的权值分布。每个训练样本最开始都被赋予相同的权重:1/N。计算Gm(x)在训练数据集上的误差率em就是被Gm(x)误分类样本的权值之和。计算Gm(x)的系数,am表示Gm(x)在最终分类器中的重要程度。
- 1
- 2
- 3
αm=12log1−emem ,在 em<=1/2 时,am>=0,且 am 随着 em 的减小而增大。
更新训练数据集的权值分布(目的:得到样本的新权值分布),用于下一轮迭代:
Dm+1=(wm+1,1,wm+1,2,...wm+1,i...,wm+1,N) ,
wm+1,i=wmiZmexp(−αmyiGm(xi)),i=1,2,...,N
使得被基本分类器 Gm(x) 误分类样本的权值增大,而被正确分类样本的权值减小。就这样,通过 Zm=∑Ni=1wmiexp(−αmyiGm(xi)) ,使得 Dm+1 成为一个概率分布。然后组合各个弱分类器 f(x)=∑Mm=1αmGm(x) ,而得到的最终分类器 G(x)=sign(f(x))=sign[∑Mm=1αmGm(x)] 。
Random Forest
随机森林指通过多颗决策树联合组成的预测模型,可以对样本或者特征取bagging。
机器学习中的分类算法总结相关推荐
- 炼数成金数据分析课程---16、机器学习中的分类算法(交叉内容,后面要重点看)...
炼数成金数据分析课程---16.机器学习中的分类算法(交叉内容,后面要重点看) 一.总结 一句话总结: 大纲+实例快速学习法 主要讲解常用分类算法(如Knn.决策树.贝叶斯分类器等)的原理及pytho ...
- 机器学习中的分类算法
机器学习中的分类算法 机器学习,模式识别中很重要的一环,就是分类,因为计算机其实无法深层次地理解文字图片目标的意思,只能回答是或者不是.当然现在卷积神经网络正在希望计算机能够看懂东西,这次我们先来看一 ...
- 文献记录(part69)--公平性机器学习中基于分类间隔的歧视样本发现和消除算法
学习笔记,仅供参考,有错必纠 关键词:公平性学习 , 分类间隔 , 目标集 , 加权距离度量 , 歧视性 公平性机器学习中基于分类间隔的歧视样本发现和消除算法 摘要 公平性学习是机器学习领域的研究热点 ...
- louvian算法 缺点 优化_机器学习中的优化算法(1)-优化算法重要性,SGD,Momentum(附Python示例)...
本系列文章已转至 机器学习的优化器zhuanlan.zhihu.com 优化算法在机器学习中扮演着至关重要的角色,了解常用的优化算法对于机器学习爱好者和从业者有着重要的意义. 这系列文章先讲述优化算 ...
- 机器学习中树模型算法总结之 决策树(下)
写在前面 首先回顾一下上一篇的相关内容,主要是理论的介绍了决策树的模型及几种常见的特征选择准则,具体可参见机器学习中树模型算法总结之 决策树(上).今天主要接着学习,包括决策树的生成(依赖于第一篇的三 ...
- 机器学习中【回归算法】详解
关注微信公众号[Microstrong],我写过四年Android代码,了解前端.熟悉后台,现在研究方向是机器学习.深度学习!一起来学习,一起来进步,一起来交流吧! 本文同步更新在我的微信公众号里,地 ...
- 机器学习中的聚类算法有哪几种?
目前,聚类算法被广泛应用于用户画像.广告推荐.新闻推送和图像分割等等.聚类算法是机器学习中一种"数据探索"的分析方法,它帮助我们在大量的数据中探索和发现数据的结构.那么机器学习中的 ...
- 机器学习中的分类模型整理
概要 机器学习中的分类模型有逻辑回归.朴素贝叶斯.决策树.支持向量机.随机森林.梯度提升树等分类算法,不仅可以进行二分类,还可以进行多分类. 一.逻辑回归 逻辑回归的本质就由线性回归演变而来,是一个线 ...
- python 分类算法_python机器学习之KNN分类算法
本文为大家分享了python机器学习之KNN分类算法,供大家参考,具体内容如下 1.KNN分类算法 KNN分类算法(K-Nearest-Neighbors Classification),又叫K近邻算 ...
最新文章
- Parity 錢包合約漏洞
- 深入理解javascript原型和闭包(2)——函数和对象的关系
- [ZJOI2010] 贪吃的老鼠(二分+差分+神仙建图网络流)
- 【网络爬虫入门04】彻底掌握BeautifulSoup的CSS选择器
- 万丰科技机器人排名_2020年全国机器人企业数量大排名(省份榜|9月)
- 7-10 A-B (20 分)
- 【快速入门Linux】8_Linux命令—系统信息相关命令(时间、磁盘、进程)
- 大端机,小端机;截断与提升
- ASP.NET 实践:在非层次化控件中显示网站地图的数据
- npm报错,安装不上依赖,npm代理报错
- 目标检测面试问题非极大值抑制
- ASP.NET中的TextBox下划线
- ansys workbench 静力结构分析 高阶教程
- 360安全卫士卸载干净-笔记
- 小程序API可以实现哪些功能
- Kernel中bluetooth相关的config选项
- ios 常用的第三方库
- 验证错误信息jquery validation
- 三星砸钱买公司以提升Bixby性能 奋力追赶亚马逊谷歌
- 手机影音最终,软件退出功能的优化