ML-Support_Vector_Machine(SMO)

SMO算法实现:

 

Hadoop-MapReduce_Unrepeat

环境:Ubuntu 18.04 LTS,Hadoop-3.1.1,Eclipse,Java 1.8

在此步骤,默认懂得hadoop shell操作以及已完成hadoop的环境搭建。

使用该Java文件的方式:

通过eclipse将该文件导出为jar包,通过eclipse->file->export选择java中的jar选项,选择该class,并做好命名该jar文件名等,最后,通过命令hadoop jar xxx.jar InputfilePath OutputfilePath。命令:hadoop jar mp.jar hdfs://0.0.0.0:9000/demo/test.txt hdfs://0.0.0.0:9000/demo/output/。最后,在/demo/output/中查看,通过命令 hadoop fs -cat /demo/output/part-r-00000查看。

其中xxx.jar即导出的jar给它的命名,InputfilePath即为自己想要被处理的数据集,OutputfilePath即为处理完的结果。注:OuputfilePath必须是一个为空的目录。

我的数据集test.txt:

继续阅读“Hadoop-MapReduce_Unrepeat”

Hadoop-MadReduce_Average

环境:Ubuntu 18.04 LTS,Hadoop-3.1.1,Eclipse,Java 1.8

在此步骤,默认懂得hadoop shell操作以及已完成hadoop的环境搭建。

使用该Java文件的方式:

通过eclipse将该文件导出为jar包,通过eclipse->file->export选择java中的jar选项,选择该class,并做好命名该jar文件名等,最后,通过命令hadoop jar xxx.jar InputfilePath OutputfilePath。命令:hadoop jar mp.jar hdfs://0.0.0.0:9000/demo/test.txt hdfs://0.0.0.0:9000/demo/output/。最后,在/demo/output/中查看,通过命令 hadoop fs -cat /demo/output/part-r-00000查看。

其中xxx.jar即导出的jar给它的命名,InputfilePath即为自己想要被处理的数据集,OutputfilePath即为处理完的结果。注:OuputfilePath必须是一个为空的目录。

我的数据集test.txt:

 

继续阅读“Hadoop-MadReduce_Average”

ML-Support_Vector_Machine_Note

超平面的划分:在样本空间中,划分超平面可通过wx+b=0,其中w=(w1;w2…;wd)为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。

样本空间中的点到超平面的距离:记划分超平面的法向量为w和位移为b,则样本空间中的任意点到超平面的距离可写为𝜸=(|wx+b|)/(||w||)

支持向量:距离超平面最近的几个训练样本点使wx+b>=+1 yi=+1, wx+b>=-1 yi=-1(即假设超平面(w,b)能将训练样本正确分类,对(xi,yi)D,若yi=+1,则有wx+b>0;若yi=-1,则有wx+b<0)的等号成立,则它们被称为“支持向量”,两个异类支持向量到超平面的距离之和为𝜸=2/||w||,则𝜸称为间隔

支持向量机基本型:为了找到“最大间隔”的划分超平面,也就是找到参数w和b,使得𝜸最大,即max 2/||w|| s.t. yi(wx+b)>=1, i=1,2…,m。最大化间隔仅需最大化||w||¹,等于最小化||w||²,则可重写为min (1/2)||w||² s.t. yi(wx+b)>=1, i=1,2…,m,这就是支持向量机的基本模型。

对偶问题:在对偶问题需满足KKT(Karush-Kuhn-Tucker)条件

支持向量机的一个重要性质在训练完成后,大部分的训练样本都不需要保留,最终模型仅与最终向量有关。

SMO(Sequential Minimal Optimization)对于对偶问题,可以使用通用的二次规划算法来求解;然而,该问题的规模正比于训练样本数,这会造成很大的开销。SMO算法可以避开这个问题。

SMO算法的思路先固定ai之外的所有参数,然后求ai上的极值。由于存在约束∑(aiyi)=0,若固定ai之外的其他变量,则ai可由其他变量导出。于是,SMO每次选择两个变量ai和aj,并固定其他参数。这样,在参数初始化后,SMO不断执行如下两个步骤直至收敛:1.选取一堆需更新的变量ai和aj2.固定ai和aj以外的参数,求解(maxᵢai-(1/2)𝘫(aiajyiyjxixj),其中i=1,2,…m, j=1,2…,ms.t ᵢaiyi = 0, ai>=0, i=1,2,…m)获得更新后的ai和aj

核函数:核函数可以解决非线形可分问题。

硬间隔:所有样本必须划分正确

软间隔:允许某些样本不满足划分规则。软间隔支持向量机。

支持向量回归(Support Vector Regression, SVR)构建一个宽度为2e的间隔带,若训练样本落入次间隔带,则认为是被预测正确的。

核方法:基于核函数的学习方法。通过核化将线性学习拓展为非线形学习。

ML-Neural_Network_Note

神经网络神经网络中最基本的成分是神经元模型。将许多个神经元模型连接起来便成了神经网络。

M-P神经元模型在此模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入将与神经元的阈值进行比较,然后通过”激活函数”处理以产生神经元的输出。

激活函数-阶跃函数理想中的激活函数是阶跃函数,它将以输入值映射为输出值”0″和”1″,0表示神经元抑制(未激活),1表示神经元兴奋(激活)。阶跃函数具有不连续、不光滑的性质。分段函数sgn(x)有:sgn(x) = 1 (x>=0), sgn(x) = 0 (x<0)。

激活函数-Sigmoid函数Sigmoid函数将较大范围内变化的输入值挤压到(0,1)输出值范围内,因此也被称为”挤压函数”。Sigmoid(x) = 1/(1 + e⁻ˣ)。

感知机(Perceptron)由两层神经元组成。输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,也称为”阈值逻辑单元(threshold logic unit)”。感知机能实现简单逻辑与、或、非运算。感知机的学习过程一定会收敛,即求得合适的权重,否则,感知机的学习过程将会发生振荡。

感知机学习规则对训练样例(x,y),若当前感知机的输出为Ŷ,则感知机权重将调整:wi <- wi + △wi,△wi = η(Y – Ŷ)xi,其中η∊(0, 1)称为学习率。若感知机对训练样例(x, y)预测正确,即Ŷ=Y,则感知机不调整权重,否则,根据错误程度进行调整权重。

隐含层(hidden layer)用于解决非线性可分问题,可在输入层和输出层之间加入隐含层,隐含层和输出层神经元都是拥有激活函数的功能神经元。

多层前馈神经网络(multi-layer feedforward neural)每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。其中输入层神经元接收外界输入,隐含层与输出神经元对信号进行加工,最终结果由输出层神经元输出。即,输入层神经元只是接收输入,不进行函数处理,隐含层和输出层包含功能神经元。

神经网络学习过程:根据训练数据来调整神经元之间的”连接权(connection weight)”以及每个功能神经元的阈值。即,神经网络将”学”带的东西蕴含在连接权和阈值中。 继续阅读“ML-Neural_Network_Note”