在和导师第一次交流后,导师建议我们先从机器学习中最简单的logistic回归开始入手,并学习流式的机器学习算法再将其应用于spark平台上,本文先分析logistic回归的理论依据,再借鉴《机器学习实战》一书中基于python的logistic回归进行介绍,为将算法移植到spark平台上做好准备。
一、 梯度下降法logistic回归的理论分析
Logistic回归用来解决二值分类问题。训练数据为(x_1, y_1), (x_2,y_2)……(x_n, y_n)等n个数据对。x_i代表训练数据的特征,为一个向量;y_i代表训练数据的标签,我们假设正样本和负样本的标签为{-1,1}。
Logistic回归属于广义线性模型,对线性模型来说,训练算法训练的是一个与测试样本x_j同等维度的权重w,通过计算w*x_j(w*代表w的转置)来得到样本x_j的“score”,然后对score进行分析,得到算法的输出。
在Logistic回归中,对某个测试样本x_j来说,算法的输出是此样本属于正样本(或负样本)的概率,当然,这个概率是属于[0,1]的。这个概率是和刚才说到的score紧密相关的,这个关系就是如下的Logistic函数。
如果我们把w*x看做自变量s,它的曲线如下所示:
h(x)或θ(x)表示样本x属于正样本的概率,上述曲线的意思是,当score,即w*x为正数,则样本属于正样本的概率大于1/2,即更有可能是正样本,反