初级算法梳理--逻辑回归

1、逻辑回归与线性回归的联系与区别

线性回归模型产生的预测值是实值y_hat,而考虑二分类问题,输出标记y∈{0,1},可以把线性回归产生的预测值y_hat转化成0/1值,找到一个单调可微函数将分类任务的预测值y_hat转化成0和1。

2、 逻辑回归的原理

线性回归模型产生的预测值是实值y_hat,而考虑二分类问题,输出标记y∈{0,1},可以把线性回归产生的预测值y_hat转化成0/1值,找到一个单调可微函数将分类任务的预测值y_hat转化成0和1。对数几率函数即“sigmoid"函数,可以讲预测值y_hat转化为一个接近0或1的y_p概率值。该函数表示为:

当h(x)>0时,Sigmoid函数大于0.5;当h(x)<0时,Sigmoid函数小于0.5。所以,我们可以将拟合曲线的函数值带入Sigmoid函数,观察h(x)与0.5的大小确定其类标号。

3、逻辑回归损失函数推导及优化

cost = -ylog(p)-(1-y)log(1-p)

y = 1 时:-log(p) ∈(+\large \infty,0] ,如果给定样本真值y = 1,估计出来的p值越小,越倾向于将预估值y分类为0,估计错误,损失越大。

y = 0 时:-log(1-p)∈[0,+\large \infty),如果给定样本真值y = 0,估计出来的p值越大,越倾向于将预估值y分类为1,估计错误,损失越大。

考虑到所有样本是,逻辑回归的损失函数为:

\large J(\theta)=-\frac{1}{m}[\sum_{i=1}^{m}y^{(i)}logh_{\theta}(x^{(i)})+(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))]

损失函数的梯度为:

\large dJ(\theta )=\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}/m

4、 正则化与模型评估指标

    4.1 正则化:

     为防止过拟合,提升模型泛化能力,我们需要对所有特征参数(除θ0θ0外)进行惩罚,即保留所有特征,减小参数θθ的值,当我们拥有很多不太有用的特征时,正则化会起到很好的作用。

\large J(\theta)=-[\frac{1}{m}\sum_{i=1}^{m}(y^{(i)}log(h_{\theta}(x^{(i)}))+(1-y^{(i)})log(1-h_{\theta}(x^{(i)})))]+\frac{\lambda}{2m}\sum_{j=1}^{n}\theta_{j}^{2}

   4.2 模型评估

 accuracy,准确率评估方法

5、逻辑回归的优缺点

优点:直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题,不仅能预测类别,还可以得到近似概率预测,这对需要利用概率辅助决策的任务很有用。目标函数是任意阶可导的凸函数,有许多数值优化算法都可以用于求取最优解。

6、样本不均衡问题解决办法

分类算法,有一个基本假设,即不同类别的训练样本数目相当,如果不同类别的训练样本数目稍有差别,通常影响不大,但若差别很大,则会对学习过程造成困扰。类别不平衡就是指分类任务中不同类别的训练样本数目差差别很大的情况。解决方法:

第一类:直接对训练集里的反类样例进行欠采样,即去除一些反例使得正反例数目接近,然后再进行学习。

第二类:对训练集里的正类样例进行过采样,即增加一些正例使得正反例数目接近,然后在进行学习。

第三类:直接基于训练集进行学习,但在用训练好的分类器进行预测时,采取再缩放策略。

7. sklearn参数

fix(X,y[,sample_weight]):训练模型。
predict(X):用模型进行预测,返回预测值。
score(X,y[,sample_weight]):返回(X,y)上的预测准确率(accuracy)。
predict_log_proba(X):返回一个数组,数组的元素一次是 X 预测为各个类别的概率的对数值。 
predict_proba(X):返回一个数组,数组元素一次是 X 预测为各个类别的概率的概率值。
sparsify():将系数矩阵转换为稀疏格式。
set_params(** params):设置此估计器的参数。
decision_function(X):预测样本的置信度分数。
densify():将系数矩阵转换为密集阵列格式。
 

猜你喜欢

转载自blog.csdn.net/l422380631/article/details/88951556