Mathematical formulation
大多数机器学习算法的求解最终都转化为一个凸优化问题,例如逻辑斯特回归算法中采用极大似然估计权重参数
w
。一般这个优化问题可以写作:
其中向量 xi∈ℝd,i=1,2...,n 是训练样本, yi∈ℝd 是样本对应的标签。如果 L(w;xi,yi) 能够标示为 wTx 和 y 的线性函数,我们称这个方法是线性的。我们将在下面讨论MLlib中实现的一些线性方法。
目标函数
Loss functions
Regularizers
Optimization
在MLlib模块中,linear methods利用SGD和L-BFGS两种凸优化算法来求解目标函数。目前,大多数算法API都支持SGD,少数支持L-BFGS。关于相关优化算法详细见这里。
Classification
分类问题中常见的是2分类问题,其中两类样本通常分别称为正负样本。MLlib模块中有两种linear methods可以用来做分类:linear Support Vector Machines(SVMs),logistic regression。其中前者只能用来做2分类,后者对于2分类和多分类问题都支持,且这两种方法都支持 L1 和 L2 正则项。在MLlib模块中,训练数据是使用一个包含标签数据的RDD来表示的,其中类别标签是从0开始的,0,1,2…。注意:在数学表达上,二分类中正负样本的标签是用 +1 , −1 表示的;但是在MLlib中,为了和多分类的标签统一,负样本的标签被替换为0。
Linear Support Vector Machines
Logistic regression
Logistic regression被广泛利用在二分类问题中,它是一种线性方法,损失函数由如下logistic loss给出:
对于二分类问题,Logistic regression算法会输出一个模型。对于一个新的data point x ,模型会根据如下logistic function来做预测
其中 z=wTx 。一般情况下,如果 f(wTx)>0.5 预测样本为正,否则预测为负。 注意:和linear SVMs不同,logistic regression模型 f(z) 有概率上的意义(例如 f(z) 表示 x <script type="math/tex" id="MathJax-Element-24">x</script>被预测为正样本的概率大小)。
to be Continued