LR学习笔记

本文介绍了逻辑回归的基础概念,它适用于分类问题特别是两分类问题。逻辑回归被视作单层神经网络的一个特例。文章讨论了训练过程中,逻辑回归的线性预测输出、成本函数和损失函数的设计,强调了选择凸函数作为损失函数以避免局部最优的重要性。

1.基础概念介绍

逻辑回归(Logistic Regression, LR)模型,回归是一种极易理解的模型,就相当于y=f(x),表明自变量x与因变量y的关系。最常见问题有如:通过用户的一些特征,性别,职业,近期购买记录等特征预测用户是否会购买某个商品,其中的用户特征就是自变量x,即特征数据,判断是否购买就相当于获取因变量y,即预测分类。(0不买,1购买)

使用场景:当你的目标变量是分类变量时,才会考虑逻辑回归,并且主要用于两分类问题

2. LR与神经网络的关系

  • Neural Networks:神经网络,由多个神经元构造,可以有多个输入、多个输出
  • Logistic Regression可以看做是仅含有一个神经元的单层的神经网络

3. 训练过程

逻辑回归中,预测值 \hat h=P(y=1\ |\ x) 表示为1的概率,取值范围在[0,1]之间。这是其与二分类模型不同的地方。使用线性模型,引入参数w和b。权重w的维度是( n_x ,1),b是一个常数项。这样,逻辑回归的线性预测输出可以写成:

\hat y = w^Tx+b

逻辑回归中,w和b都是未知参数,需要反复训练优化得到。因此,我们需要定义一个cost function,包含了参数w和b。通过优化cost function,当cost function取值最小时,得到对应的w和b。

提一下,对于m个训练样本,我们通常使用上标来表示对应的样本。例如 (x^{(i)},y^{(i)}) 表示第i个样本。

如何定义所有m个样本的cost function呢?先从单个样本出发,我们希望该样本的预测值 \hat y 与真实值越相似越好。我们把单个样本的cost function用Loss function来表示,根据以往经验,如果使用平方错误(squared error)来衡量,如下所示:

L(\hat y,y)=\frac12(\hat y-y)^2

但是,对于逻辑回归,我们一般不使用平方错误来作为Loss function。原因是这种Loss function一般是non-convex的。non-convex函数在使用梯度下降算法时,容易得到局部最小值(local minumum),即局部最优化。而我们最优化的目标是计算得到全局最优化(Global optimization)。因此,我们一般选择的Loss function应该是convex的。

Loss function的原则和目的就是要衡量预测输出 \hat y 与真实样本输出y的接近程度。平方错误其实也可以,只是它是non-convex的,不利于使用梯度下降算法来进行全局优化。因此,我们可以构建另外一种Loss function,且是convex的,如下所示:

L(\hat y,y)=-(ylog\ \hat y+(1-y)log\ (1-\hat y))

我们来分析一下这个Loss function,它是衡量错误大小的,Loss function越小越好。

4. 实现:调用sklearn中的LogisticRegression调用sklearn逻辑回归算法十分简单:1.导入;2.fit()训练;3.predic()预测

from sklearn.linear_model import LogisticRegression
clf = LogisticRegression()
clf.fit(train_feature,label)
predict['label'] = clf.predict(predict_feature)
但是其中参数设置才是关键的是sklearn.linear_model中LogisticRegression类的参数。默认参数如下: 

class sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='liblinear', max_iter=100, multi_class='ovr', verbose=0, warm_start=False, n_jobs=1)

5.参考文章http://lib.youkuaiyun.com/article/machinelearning/37592

                 https://zhuanlan.zhihu.com/p/29147761

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值