机器学习算法Review之分类

机器学习有着丰富的理论,分为有监督学习和无监督学习,有监督学习包括分类和回归,无监督学习包括聚类等。各种机器学习算法的基本思想都不难理解(这里的基本思想我的理解是各个算法的模型建立),而难点在于对于模型的求解,这里边有着优美的理论还有一些技巧,如SVM,EM,CART,AdaBoost,RF等。这些算法都是一些专家学者历经数年乃至十数年的研究成果,要想将它们都研究透彻确实是一项大工程,多数算法深入下去都是一本书,因此这里旨在从理解及应用的角度对这些经典的机器学习算法进行review。

分类

1KNN

KNN算法的原理是对于一个已标记的样本集,不用对改样本集进行分类器的训练,而直接使用该样本集作为分类器。对于一个测试数据,我们直接计算该数据和已标记的样本集中的数据相似度,选择和测试样本最相似的K个数据的标记中累计最多的类别作为对测试数据类别的预测。

该算法适用于样本容量比较大的类域的自动分类,而那些样本容量小的类域采用该方法比较容易产生误分。

对于K值的选择,K选择过小,得到的近邻数过少,会降低分类精度,同时也会放大噪声数据的干扰,而如果K选择过大,并且测试数据属于已标记样本集中较少的类别,那么在选择K近邻时,实际上会将不太相似的数据亦被包含进来,造成噪声增加而导致分类准确率的降低。

对于K值的选择目前没有什么好的方法,一般采用先定一个初始值,然后根据实验测试的结果调整K值,一般初始值设置为几百到几千。

KNN算法的优点:较高的预测准确率,对噪声数据不敏感,对数据没有任何先验假设不需要训练分类器。

KNN算法的缺点:当样本不平衡时,一个类别的样本数据多,另一个类别的样本数据少时会降低预测准确率,这可以采用加权的方法,例如和测试数据相似度较高的样本数据获得较大的权重。另一个不足之处是计算量大,目前常用的解决方法是对已标记的样本集进行剪辑,去除分类作用不大的样本数据。

KNN算法的预测目标:连续或不连续。

2)决策树

决策树也叫做分类树,它被提出了两次。一次由统计学家Breiman等提出,花了十多年时间出书了他们的研究成果CART(1984),CART是分类回归树的简写,顾名思义,它既能用作分类(目标离散)也能用作回归(目标连续)。另一次由人工智能专家Quinlan等提出,ID3(1986),C4.5(1993)及C5.0等。CART和ID3等树形结构用做分类时,除了在分裂过程中选择属性的标准不同外(CART选用Gini指标,ID3选用熵增益,C4.5选用熵增益率),其它基本一致,这里对于决策树仅讨论ID3等算法。

构建决策树的原则是尽量使得每个节点的样本标签尽可能少,算法描述如下:

Check if every itemin the dataset is in the same class:

If so return the class label

Else

find the best feature to split the data

split the dataset

create a branch node

for each split

call create Branch and add the resultto the branch node

return branch node

对于ID3算法find the best feature tosplit the data的准则就是尽量使得分支之后节点的类别纯一些,也就是使得后续分类能够准确一些,它用熵增益来衡量,熵增益越大说明分裂后得到的样本集更纯一些。

C4.5算法是对ID3算法的改进,它选用熵增益率准则来选择best featureto split,目的在于分裂信息将阻碍选择值为均匀分布的属性。例如,考虑一个含有n个样例的集合被属性A彻底分割(分成n组,即一个样例一组)。这时分裂信息的值为log2n。相反,一个布尔属性B分割同样的n个实例,如果恰好平分两半,那么分裂信息值是1。如果属性A和B产生同样的信息增益,那么根据增益比率度量,明显B会得分更高。

使用熵增益比代替熵增益来选择属性产生的一个实际问题是,当某个Si接近S(|Si||S|)时分母可能为0或非常小。如果某个属性对于S的所有样例有几乎同样的值,这时要么会导致增益比率未定义,要么是增益比率非常大。为了避免选择这种属性,我们可以采用这样一些启发式规则,比如先计算每个属性的增益,然后仅对那些增益高过平均值的属性应用增益比率测试。

C4.5对ID3改进的方面还包括:能处理连续属性数据,能够对不完整数据进行处理在树构造过程中进行剪枝,在构造决策树的时候,为了防止overfitting,那些挂着几个元素的节点直接构成叶子节点,这实际上是一种先剪枝的算法,后面在讲CART用于回归时会review一种后剪枝算法。

C5.0是将C4.5算法应用到Boosting算法中,Boosting是一种Ensemble的分类算法,功能很强大,和SVM在机器学习的分类算法中占据重要地位。Ensemble的分类算法将在后面review。

决策树算法的优点:计算复杂度低,学习结果易于理解,允许属性缺失,可处理不相关的属性。

决策树算法的缺点:易于过拟合,可以选择先剪枝或后剪枝算法防止过拟合。

决策树算法的预测目标:连续或不连续。

3)朴素贝叶斯

贝叶斯决策就是对于一个测试数据,计算它属于已知的标记的样本数据集中的每个类别的概率,即P(Ci|x),选择概率最大的一个作为该测试数据的决策类别,也就是通过先验概率求后验概率。贝叶斯决策的原理就是经典的贝叶斯定理,贝叶斯定理是由贝叶斯公式导出的。贝叶斯公式为:P(x|C)=P(xC)/P(C)=P(C|x)*P(x)/P(C),贝叶斯公式之所以有用是因为对于P(x|C)我们容易求出,而对于P(C|x)不容易求出,而我们又比较关心P(C|x)。贝叶斯定理为:P(C|x)= P(x|C)*P(C)/P(x)。

求P(Ci|x)时,由贝叶斯定理得到P(Ci|x)= P(x|Ci)*P(Ci)/P(x)。由于对于所有的Ci来说P(x)是一样的,因此可以不考虑后验概率P(Ci|x)的分母部分,仅比较分子大小而得出决策结果。分子由乘法构成,可以进行log处理,进而只需要进行加法计算。朴素贝叶斯假设样本数据的所有属性是独立的,所以P(x1……xn|Ci)* P(Ci)=P(x1|Ci)*……*P(xn|Ci)*P(Ci),这实际上是对Ci类中的样本数据属性的条件概率的一个加权。

由于朴素贝叶斯假设样本数据的属性是独立的,因此对于有些样本集其决策结果不太好,于是有的学者又提出了一些加权的贝叶斯决策算法,基于属性重要性的加权,基于属性相关性的加权以及基于粗糙集加权的贝叶斯决策算法等。

朴素贝叶斯的优点:对于容量小的数据集有较好的决策效果,能够处理多类别决策问题。

朴素贝叶斯的缺点:对于训练样本数据较为敏感。

朴素贝叶斯的预测目标:不连续。

4Logistic回归

Logistic回归要解决的问题是对于测试数据的预测target是以概率的形式出现的,比如给出衡量某疾病的一组因素,要预测出该组因素下某疾病是会出现还是不会出现。对于这样的问题,用一般的多元线性回归来解决这样的问题就不太合适。

Logistic回归分析,本质上是对一组因素的线性组合所产生某种结果的可能性的一种估量,这种估量由Logistic函数给出,P(x)=e^(p0+px)/(1+e^(p0+px))。我们将其线性化,看看P(x)到底有什么意义,线性化得到:ln(P(x)/(1-p(x)))=p0+px,可以看出当P(x)很小时,p0+px的值会很小,当p(x)很大接近于1时,p0+px的值会很大,这是符合一般规律的,因为一组因素线性组合产生的作用越强,那么导致某种结果的概率就越大,相反一组因素线性组合产生的作用越弱,那么导致某种结果的概率就越小,这也是为什么选择Logistic函数来对一组因素的线性组合所产生某种结果的可能性进行估量。Logistic函数实际上是将一组因素的线性组合产生的作用强度映射到了(0,1)的概率空间,那么只要选择了合适的阈值很容易进行二分类。

有了Logistic函数这样的一个模型,现在剩下的工作就是对p0和p参数进行估计了。估计出了参数,我们就能够使用Logistic回归模型进行预测了。

设n个观测值为y1,y2……yn,设pi=p{yi=1|xi}为给定xi条件下得到yi=1的概率。同样条件下的到yi=0的概率为p{yi=0|xi}=1-pi。于是由上述两个方程得到的一个观测值的概率为p(yi)= (pi^yi)((1-pi)^(1-yi)),因为各项观测值独立,所以它们的联合分布可以表示为各边际分布的乘积:l(p0,p)= {p(x1)^yi[1-p(x1)]^(1-y1)}*……*{p(xn)^yn[1-p(xn)]^(1-yn)}。对似然函数l(p0,p)取对数有L(p0,p)={[y1ln(p(x1))]+(1-y1)ln[1-p(x1)]}+……+{[ynln(p(xn))]+(1-yn)ln[1-p(xn)]}。可以对L求导然后用Newton-Raphson方法进行迭代求解参数p0,p。但幸运的是,L是一个凸函数,可以选择梯度下降或随机梯度下降法求解参数p,p0。

上面的方法是针对目标为离散的二分类情况,如果目标为连续的概率(值域为[0,1])值时,我们又该怎么办呢?我们观察ln(P(x)/(1-p(x)))=p0+px公式,可以看出,先用ln(P(x)/(1-p(x)))对目标为连续值的概率进行变换,然后采用多元线性回归模型进行参数估计就行了。至于预测,进行相反的步骤就可以了。

Logistic回归的优点:算法复杂度不高,容易实现,对知识的表达容易说明。

Logistic回归的缺点:可能拟合度不够,预测准确率可能较低。

Logistic回归的预测目标:连续或不连续

5SVM

SVM算法可以说一直占据着分类算法老大的位置,有着相当优美的理论。总的来说SVM算法的思想(求解分类问题的模型建立)是不难理解的,难点在于对模型的求解。算法的核心思想是一个优化问题,这个优化问题可以描述为:寻找到分割两类样本数据的超平面,该超平面要满足各类中距离分类平面最近的点到分类平面的距离最大,也就是对类间间隔最大情况下的超平面的参数进行估计。寻找最优分类面的问题最终转换成为一个二次寻优问题,理论是上这个二次寻优问题的解是一个全局最优解(凸二次函数),这也避免了像神经网络方法中不可避免的局部极值问题。从SVM的建模思想上来说,它能够避免像神经网络等模型那样在降低训练集上的分类错误时而导致的过拟合的情况,因此对于一些未见过的测试样本具有更好的推广能力。

SVM算法可分为三类:线性可分、非线性可分以及需要核函数映射三种。下面对这三种情况及相关类容进行一个brief review。

(1)线性可分情况

假设最优分类超平面的方程为:WTx+b=0。根据点到平面的距离公式,样本数据x到最优分类超平面的距离可表示为:| WTx+b|/||W||。现在我们想知道的是最优分类超平面方程的参数W和b,也就是建立如下模型:

argmax[W,b] { min[n] (| WTxn+b| / ||W||) }

上述模型中W,b为最优分类超平面参数,n为样本数据编号。

模型建立好了,下面就开始求解模型了。从min[n] (| WTxn+b | / ||W||)中的| WTx+b | / ||W||,可以看出,通过等比例的对W和b加权缩放,那么会存在很多的超平面满足min[n] (| WTxn+b | / ||W||),于是我们对超平面进行规范化,选择使最近样本点xk到超平面的距离| WTxk+b| / ||W|| = 1时的W和b。现在从最近样本点到最优分类超平面的距离表示为:WTxk+b| / ||W|| = 1 / ||W||,此时最优分类超平面构成的分类间隔为:

m = 2 / ||W||

现在我们的目标就是求使得m最大化的W,让后将W带入| WTxk+b | = 1即可得到b。

最大化m = 2 / ||W||,等价于最小化:

J(W) = (1/2)*||W||2

其中带有约束条件:

yi((Wxi)+b) >= 1

(i=1, 2, 3,……,N)

yi是样本点类别,其值为+1或-1,(Wxi)=WTxi

J(W)是一个带约束的极值问题,通过拉格朗日乘数法,可将J(W)转换成一个不受约束的极值问题,即关于W,b,和拉格朗日乘子α的最小化L:

L(W,b,α)=(1/2)*||W||2-∑i=1Nαi[yi((Wxi)+b)-1]

i > 0)

求L(W,b,α)对W和b的偏导,并令其等于零得到:

W=∑i=1Nαiyixi, ∑i=1Nαiyi=0

将上述两式带入L(W,b,α)得到:

L(α)=(-1/2)∑i=1Nj=1Nαiαjyiyj(xixj)+∑i=1Nαi

i > 0, ∑i=1Nαiyi=0)

L(α)是一个关于α的拉格朗日对偶问题,是一个关于α的凸二次规划问题,详细解法可参看相关理论,后续有时间也会针对优化理论写一写博文。

根据最优化解的性质(Karush-Kuhn-Tucker-conditions),解α必须满足:αi[yi(WTxi+b)-1]= 0(i = 1,……,N),因此对于每个样本点必须满足αi=0或yi(WTxi+b)-1=0。从而那些不满足yi(WTxi+b)-1=0的样本点对应的αi必为0;而只有那些满足yi(WTxi+b)-1=0的样本点才有对应的大于0的αi,这些样本点就被称作支持向量。

求出系数α,W,b的最优解α*,W*,b*后,得到如下的分类器:

h(x)=sgn((W*x)+b*)=sgn(∑i=1Nαi*yi(xix)+b*)

其中x是待分类的测试样本数据,xi是N个训练样本数据,xi和x之间是点积的关系。对于非支持向量而言,其αi等于0,所以分类器可如下表示:

h(x)=sgn(∑iSVαi*yi(xix)+b*)

(2)非线性可分情况(C-SVM

为处理非线性情况,引入松弛变量ei>0,此时约束条件变为:

yi((Wxi)+b) >= 1-ei

(i=1, 2, 3,……,n)

当ei=0,上述约束条件变为线性可分时的约束条件;当0<ei<1时,说明约束条件允许样本点落在分割间隔内,但大于0则说明分类超平面仍能够正确分类;当ei>1时,说明约束条件已经允许分类超平面错误分类出现了。

附加一个错误代价系数C后,目标函数变为最小化下式:

J(W,e) = (1/2)*||W||2+C∑i=1Nei

目标函数包括两个部分,第一部分和线性可分情况一样,第二部分是分类造成的分类错误代价,只有ei>0的那些“错误”样本点(错误分类和落在分类间隔内的样本点)才会产生代价。事实上,最小化目标函数J(W,e)体现了对最大化间隔(目标函数第一部分)和最小错误分类代价(目标函数第二部分)之间的权衡。通过调整代价系数C的值,可以对两者之间进行权衡,找出最优的C来降低分类器的训练错误同时保证适当的推广能力。

类似线性可分情况的推导,可得到一个对偶问题,最大化下式:

L(α)=∑i=1Nαi - 1/2∑i=1Nj=1Nαiαjyiyj(xixj)

(0<αi<C, ∑i=1Nαiyi=0)

再用二次规划技术求出系数α,W,b的最优解α*,W*,b*后,得到的分类器与线性可分情况一样。

(3)核函数映射情况

线性分类的能力毕竟有限,而且对于非线性可分情况也不能一味的放宽约束条件,这样会导致更多的训练错误。这时可以通过一个非线性映射f:Rn->RD将样本数据映射到高维的特征空间RD,映射后的样本数据在RD特征空间中线性可分。如果在高维特征空间中仍非线性可分,则可考虑非线性可分的情况。在分类时,我们直接将测试样本数据映射到高维特征空间后,使用RD特征空间中的分类器。

类似(2)中的推导过程,我们得到如下对偶问题,最大化下式:

L(α)=∑i=1Nαi - 1/2∑i=1Nj=1Nαiαjyiyj(f(xi)f(xj))

(0<αi<C, ∑i=1Nαiyi=0)

这时有:

W=∑i=1Nαiyif(xi)

所以最终的分类器为:

h(x)=sgn((W*f(x))+b*)=sgn(∑i=1Nαi*yi(f(xi)f(x))+b*)

同样对于非支持向量而言,其αi等于0,于是上式可表示为:

h(x)=sgn(∑iSVαi*yi(f(xi)f(x))+b*)

(4)核函数

一般情况下我们都没必要关系映射函数f的具体形式。可以注意到在(3)中的优化函数L(α)以及分类函数h(x)中都只涉及的样本特征之间的点积运算(f(xi)f(xj))。因此在高维空间只需要进行点积运算,向量的点积也就是一个常数,那么我们能不能够抛开f的具体形式,而根据原特征空间中的xi,xj直接得到(f(xi)f(xj))的结果呢?答案是肯定的,这可以用原特征空间中的核函数实现的。

根据泛函的相关理论,只要一种核函数K(xi,xj)满足Mercer条件,它就对应某一变换空间(RD)中的内积。Mercer核函数计算高维空间中的点积公式:

K(xi,xj) = (f(xi)f(xj))

常用的核函数有线性和函数,多项式核函数,径向基核函数,Sigmoid核函数等,其中径向基核函数最为常用。

SVM的优点:分类错误率低,计算量低,结果容易解释。

SVM的缺点:对参数调整和核函数的选择较为敏感,基本算法只能用于而分类。

SVM的预测目标:连续或不连续。

有三种策略将二分类SVM推广到多分类,它们分别是一对多最大响应策略、一对一投票策略及一对一淘汰策略。

6)Ensemble

Ensemble类的分类算法的核心思想是由弱分类器构造强分类器,其大致可以分为两类,一类是基于Bagging(Bootstrap Aggregating)的,另一类基于Boosting的。基于Bagging的常用算法是RF(Random Forest),基于Boosting的常用算法是AdaBoost。

AdaBoost和RF算法虽然没有as elegant as SVM的theory,但是他们的思想是非常有意思的,可以说都是resultof thinking’s collision,他们的核心思想都是由弱分类器构造强分类器。

(1)AdaBoost

AdaBoost是1995年Freund和Schapire提出的,它解决了早期的Boosting算法存在的许多问题。其算法伪代码描述(Robert E. Schapire, A brief introduction to boosting,1999)如下:

AdaBoost和Random Forests算法最大的区别在于AdaBoost算法中的弱分类器的组合权重不一样,而bagging的每个弱分类器的组合权重是相等的。

AdaBoost算法的优点:较低的推广(测试)误差,编码容易,适用于多数的分类器,不用调整参数。

AdaBoost算法的缺点:对异常数据敏感。

AdaBoost算法预测目标:连续或不连续。

(2)Random Forest

Random Forest是Bagging (Breiman, 1996)和Random Feature Selection(Amit and Geman 1997)的结合。RandomForest算法对输入的数据要进行行(Bagging)、列(Random Feature Selection)的采样。对于行采样,采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本。假设输入样本为N个,那么采样的样本也为N个。这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不容易出现over-fitting。然后进行列采样,从M个feature中,选择m个(m<M)。之后就是对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。

Random Forest在衡量generalization error时,使用的是out-of-bagestimation方法,主要是Bagging采样使得这种方法成为可能。Random Forest还提供了属性重要性的计算方法,其描述为:1)对于随机森林中的每一颗决策树,使用相应OOB(袋外数据)数据来计记为OOBerr1;2)随机地对袋外数据OOB所有样本数据的特征xi加入噪声干扰(就可以随机的改变样本在特征xi处的值),再次计算它的袋外数据误差,记为errOOB2;3)假设随机森林中有N棵树,那么对于特征xi的重要性为∑(errOOB2-errOOB1)/N,之所以可以用这个表达式作为相应特征的重要性的度量值是因为,若给某个特征随机加入噪声之后,袋外的准确率大幅度降低,则说明这个特征对于样本的分类结果影响很大,也就是说它的重要程度比较高。

基于Random Forest提供的属性重要性计算方法,提出了随机森林的特征选择方法(Robin Genuer, Variable Selection using Random Forests,2012)。

首先特征选择的目标有两个:

1’:找到与因变量高度相关的特征变量。

2’:选择出数目较少的特征变量并且能够充分的预测应变量的结果。

其次一般特征选择的步骤为:

1’:初步估计和排序

a)对随机森林中的特征变量按照VI(Variable Importance)降序排序。

b)确定删除比例,从当前的特征变量中剔除相应比例不重要的指标,从而得到一个新的特征集。

c)用新的特征集建立新的随机森林,并计算特征集中每个特征的VI,并排序。

d)重复以上步骤,直到剩下m个特征。

2’:根据1中得到的每个特征集和它们建立起来的随机森林,计算对应的袋外误差率(OOB err),将袋外误差率最低的特征集作为最后选定的特征集。

Random Forest算法的优点:

1. 对于很多种资料,它可以产生高准确度的分类器。

2. 它可以处理大量的输入变量。

3. 它可以在决定类别时,评估变量的重要性。

4. 在建造森林时,它可以在内部对于一般化后的误差产生不偏差的估计。

5. 它包含一个好方法可以估计遗失的资料,并且,如果有很大一部分的资料遗失,仍可以维持准确度。

6. 它提供一个实验方法,可以去侦测 variable interactions 。

7. 对于不平衡的分类资料集来说,它可以平衡误差。

8. 它计算各例中的亲近度,对于数据挖掘、侦测偏离者(outlier)和将资料视觉化非常有用。

9. 使用上述。它可被延伸应用在未标记的资料上,这类资料通常是使用非监督式聚类。也可侦测偏离者和观看资料。

10. 学习过程是很快速的。

Random Forest算法的缺点:

1. 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟。

2. 对于有不同级别的属性的数据,级别划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。

Random Forest算法预测目标:连续或不连续。

参考资料:

Machine Learning in Action

Induction of Decision Trees

数字图像处理与机器视觉

A brief introduction to boosting

Random Forests

Variable Selection using Random Forests

http://blog.csdn.net/cuoqu/article/details/9319459

http://www.cnblogs.com/wentingtu/archive/2011/12/22/2297405.html

http://www.360doc.com/content/13/1206/09/13528701_334877080.shtml

时间: 2024-10-06 20:56:10

机器学习算法Review之分类的相关文章

机器学习算法原理解析——分类

1. KNN分类算法原理及应用 1.1 KNN概述 K最近邻(k-Nearest Neighbor,KNN)分类算法是最简单的机器学习算法. KNN算法的指导思想是“近朱者赤,近墨者黑”,由你的邻居来推断你的类型. 本质上,KNN算法就是用距离来衡量样本之间的相似度. 1.2 算法图示 从训练集中找到和新数据最接近的k条记录,然后根据多数类来决定新数据类别 算法涉及3个主要因素 1) 训练数据集 2) 距离或相似度的计算衡量 3) k的大小 算法描述 1) 已知两类“先验”数据,分别是蓝方块和红

转:机器学习算法原理解析 - 分类

转:http://www.cnblogs.com/swordfall/p/9517988.html 常见分类模型与算法 距离判别法,即最近邻算法KNN: 贝叶斯分类器: 线性判别法,即逻辑回归算法: 决策树: 支持向量机: 神经网络: 1. KNN分类算法原理及应用 1.1 KNN概述 K最近邻(k-Nearest Neighbor,KNN)分类算法是最简单的机器学习算法. KNN算法的指导思想是"近朱者赤,近墨者黑",由你的邻居来推断你的类型. 本质上,KNN算法就是用距离来衡量样本

机器学习算法Review之回归

回归 1)多元线性回归 (1)模型建立 多元线性回归讨论的的是变量y与非随机变量x1--xm之间的关系,假设他们具有线性关系,于是有模型: y =b0 + b1x1 + -- + bmxm+ e 这里的e~N(0,a2),b0,--,bn,a2都是未知数.上式矩阵表达式为: y =xb + e 对于一组样本(x00--x0m,y0)--(xn0--xnm,yn)观测值,这时对每个观测值有: yi = b0 + b1xi1 + -- + bmxim+ ei   (i=0,--n) (2)模型求解

每日一个机器学习算法——k近邻分类

K近邻很简单. 简而言之,对于未知类的样本,按照某种计算距离找出它在训练集中的k个最近邻,如果k个近邻中多数样本属于哪个类别,就将它判决为那一个类别. 由于采用k投票机制,所以能够减小噪声的影响. 由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合. 一个不足之处是计算量较大,因为对每一个待分类的样本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点.

机器学习算法笔记1_2:分类和逻辑回归(Classification and Logistic regression)

形式: 采用sigmoid函数: g(z)=11+e?z 其导数为g′(z)=(1?g(z))g(z) 假设: 即: 若有m个样本,则似然函数形式是: 对数形式: 采用梯度上升法求其最大值 求导: 更新规则为: 可以发现,则个规则形式上和LMS更新规则是一样的,然而,他们的分界函数hθ(x)却完全不相同了(逻辑回归中h(x)是非线性函数).关于这部分内容在GLM部分解释. 注意:若h(x)不是sigmoid函数而是阈值函数: 这个算法称为感知学习算法.虽然得到更新准则虽然相似,但与逻辑回归完全不

机器学习算法学习---处理分类问题常用算法(二)

k-近邻算法采用测量不同特征值之间的距离方法进行分类. 优点:精度高.对异常值不敏感.无数据输入假定. 缺点:计算复杂度高.空间复杂度高. 适用范围:数值型.标称型. 工作原理:存在一个样本数据集合(训练样本集),并且样本集中每个数据都存在标签.输入没有标签的新数据后,将数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相近数据的分类标签. python实现简单的KNN算法如下: KNN from numpy import * import operator def ge

机器学习算法分类

转自@王萌,有少许修改. 机器学习起源于人工智能,可以赋予计算机以传统编程所无法实现的能力,比如飞行器的自动驾驶.人脸识别.计算机视觉和数据挖掘等. 机器学习的算法很多.很多时候困惑人们的是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的.这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的类似性. 学习方式 将算法按照学习方式分类可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合适的算法来获得最好的结果. 监督学习  在监督学习中,输入数据被称为"训

【机器学习算法-python实现】K-means无监督学习实现分类

1.背景 无监督学习的定义就不多说了,不懂得可以google.因为项目需要,需要进行无监督的分类学习. K-means里面的K指的是将数据分成的份数,基本上用的就是算距离的方法. 大致的思路就是给定一个矩阵,假设K的值是2,也就是分成两个部分,那么我们首先确定两个质心.一开始是找矩阵每一列的最大值max,最小值min,算出range=max-min,然后设质心就是min+range*random.之后在逐渐递归跟进,其实要想明白还是要跟一遍代码,自己每一步都输出一下看看跟自己想象的是否一样. (

机器学习算法与编程实践之中文文本分类

这周学习了机器学习算法与编程实践第二章--中文文本分类的部分内容.该章以文本挖掘为大背景,以文本分类算法为中心,详细介绍了中文文本分类项目的相关知识点. 一.文本挖掘与文本分类的概念 被普遍认可的文本挖掘的定义如下:文本挖掘是指从大量文本数据中抽取事先未知的.可理解的.最终可用的知识的过程,同时运用这些知识更好的组织信息以便将来参考. 文本挖掘的7个主要领域有:(1)搜索和信息检索,(2)文本聚类,(3)文本分类,(4)Web挖掘.(5)信息抽取,(6)自然语言处理,(7)概念提取. 而文本分类