逻辑回归(Logistic Regression)是广义线性回归的一种。逻辑回归是用来做分类任务的常用算法。分类任务的目标是找一个函数,把观测值匹配到相关的类和标签上。比如一个人有没有病,又因为噪声的干扰,条件的描述的不够完全,所以可能不确定正确,还希望得到一个概率,比如有病的概率是80%。也即P(Y|X),对于输入X,产生Y的概率,Y可取两类,1或者0。

推导

Sigmod函数

  相当于线性模型的计算结果来逼近真实01标记的对数几率。

他的导数:

  

对数线性模型

  概率P的值域是[0,1],线性函数的值域是\((-\infty ,+\infty)\),要将建立一个互相映射的函数关系,log函数在[0,1]上的值域是\([-\infty,0]\),对P进行变换,使得变换之后的值域包含\([0,+\infty]\),而\(log(\frac{p}{1-p})\)满足要求。而这个称为logit变换。线性拟合

  \(log(\frac{P(x;\theta)}{1-P(x;\theta)}) = \theta x\)

  由此可得

  \(P(x;\theta) = \frac{1}{1+e^{-(\theta x)}} = h_\theta (x) \)

优点:可以算出落入 0 1的概率,无穷可导。

  假设各个样本互相独立则,服从伯努利分布。

  \(P(y = 1 |x;\theta) = h_\theta(x)\)

  \(P(y = 0 |x;\theta) = 1 - h_\theta(x)\)

  \(P(y |x;\theta) = h_\theta(x)^y(1 - h_\theta(x))^{1-y}\)

似然函数:

对于最大似然估计(MLE)就是已知了样本的分布,求最有可能导致这种分布的参数的值。也即是什么样的参数使得我们看到的这样一个数据分布出现的概率最大。

  \(L_\theta = \prod_{i=1}^{m}h_{\theta}(x^{(i)})^{y^{(i)}} (1 - h_\theta(x^{(i)}))^{(1-y^{(i)})} \)

  \(l(\theta) = logL(\theta) \)

  

损失函数:

损失函数越小,模型越好。

损失函数是似然函数的取负之后得到,最小化的损失。

拆开写:

  

理解:当y =1时,如果h的预测结果也为1,则cost为0,如果h为0,则相当于预测相反,cost为无穷,类似的y=0的时候。

合并写,全体样本的损失函数为

另外Softmax 只不过是2分类变成了K分类,本质上是一样的。

由于令损失函数等于0,无法求解析解。所以想到了用梯度下降,类似的算法还有BFGS,L-BFGS(Spark Mllib中用的),牛顿法,拟牛顿法,共轭梯度法。其中BFGS,和LBFGS由牛顿法而来,速度比梯度下降要快,但是复杂。

梯度下降:

  \(J(\theta)\) = cost

得到迭代子式:

其中 \(\alpha\)是步长。

SKLearn简单例子

if __name__ == "__main__":
path = u'iris.data' # 数据文件路径 #用pandas读数据
data = pd.read_csv(path)
x = data.values[:,:-1]
y = data.values[;-1]
le = LabelEncoder()
le.fit(['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'])
y = le.transform(y) x = StandardScaler().fit_transform(x)
logreg = LogisticRegression() # Logistic回归模型
logreg.fit(x, y.ravel()) # 根据数据[x,y],计算回归参数 ,y.ravel()是reshape成一列数,对原来的y的一个引用 # 训练集上的预测结果
y_hat = logreg.predict(x)
y = y.reshape(-1) # 此转置仅仅为了print时能够集中显示
print y_hat.shape # 不妨显示下y_hat的形状
print y.shape
result = (y_hat == y) # True则预测正确,False则预测错误
print y_hat
print y
print result
c = np.count_nonzero(result) # 统计预测正确的个数
print c
print 'Accuracy: %.2f%%' % (100 * float(c) / float(len(result)))

  

  

logL(θ)=∑i=1mlog[(hθ(xi)y(i)(1−hθ(x(i)))1−y(i))]=∑i=1m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]

逻辑回归 Logistic Regression的更多相关文章

  1. 机器学习总结之逻辑回归Logistic Regression

    机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...

  2. 机器学习(四)--------逻辑回归(Logistic Regression)

    逻辑回归(Logistic Regression) 线性回归用来预测,逻辑回归用来分类. 线性回归是拟合函数,逻辑回归是预测函数 逻辑回归就是分类. 分类问题用线性方程是不行的   线性方程拟合的是连 ...

  3. 机器学习入门11 - 逻辑回归 (Logistic Regression)

    原文链接:https://developers.google.com/machine-learning/crash-course/logistic-regression/ 逻辑回归会生成一个介于 0 ...

  4. Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)” 清晰讲解logistic-good!!!!!!

    原文:http://52opencourse.com/125/coursera%E5%85%AC%E5%BC%80%E8%AF%BE%E7%AC%94%E8%AE%B0-%E6%96%AF%E5%9D ...

  5. 机器学习方法(五):逻辑回归Logistic Regression,Softmax Regression

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 前面介绍过线性回归的基本知识, ...

  6. 机器学习 (三) 逻辑回归 Logistic Regression

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...

  7. ML 逻辑回归 Logistic Regression

    逻辑回归 Logistic Regression 1 分类 Classification 首先我们来看看使用线性回归来解决分类会出现的问题.下图中,我们加入了一个训练集,产生的新的假设函数使得我们进行 ...

  8. 逻辑回归(Logistic Regression)详解,公式推导及代码实现

    逻辑回归(Logistic Regression) 什么是逻辑回归: 逻辑回归(Logistic Regression)是一种基于概率的模式识别算法,虽然名字中带"回归",但实际上 ...

  9. 【机器学习】Octave 实现逻辑回归 Logistic Regression

    ex2data1.txt ex2data2.txt 本次算法的背景是,假如你是一个大学的管理者,你需要根据学生之前的成绩(两门科目)来预测该学生是否能进入该大学. 根据题意,我们不难分辨出这是一种二分 ...

随机推荐

  1. dpkg:处理软件包dradis (--configure)时出错

    dpkg:处理软件包dradis (--configure)时出错!解决方案:1.将info文件夹更名%mv /var/lib/dpkg/info /var/lib/dpkg/info_old2.新建 ...

  2. jdk顺序表笔记

    一.AbstractCollection 提供了集合的最大实现 继承该类,必须实现size()和iterator(),因为该类操作集合都是通过iterator 二.fail-fast策略 该策略在集合 ...

  3. FreeMarker的基础语法

    FreeMarker语言 FreeMarker语言概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写. FreeMarker被设计用来生成HTML Web ...

  4. [转载]windows 7 IIS 7.5 ASP.Net 文件上传大小限制

    原文出处: 原文作者:云中岳 原文链接:http://www.cnblogs.com/netlover/archive/2011/07/08/Win7_IIS_Upload.html IS 7 默认文 ...

  5. 使用cmd打开java文件,报错:“错误,编码GBK的不可映射字符”

    今天使用EditPlus写了一个小程序,用cmd运行时报错--"错误,编码GBK的不可映射字符". 处理办法是用EditPlus另存为时,把编码格式由UTF-8改为ANSI. 然后 ...

  6. Httpster –世界各地最潮的网页设计案例聚合网站

    Httpster 这个网站聚合了世界各地最新最潮的网页设计案例,展示了创意的设计,精心的策划,优秀的排版.这些作品都按月份和类别进行了很好划分,你可以方便的找到自己感兴趣的网站案例. 立即去看看 您可 ...

  7. 20款 JavaScript 开发框架推荐给前端开发者

    下面,我们给大家提供了一个用于 HTML5 开发的各种用途的 JavaScript 库列表.这些框架能够给前端开发人员提供更好的功能实现的解决方案.如果你有收藏优秀的框架,也可以在后面的评论中分享给我 ...

  8. jQuery flickity 滑动触屏

    flickity是一款自适应手机触屏滑动插件,它的API参数很丰富,包括对齐方式.循环滚动.自动播放.是否支持拖动.是否开启分页.是否自适应窗口等. 在线实例 实例演示 使用方法 <div cl ...

  9. IOS 杂笔-15(知识小点 readonly)

    readonly是我们并不陌生的属性. 但是他也有值得我们注意的地. 属性如其名-只读-也就是说我们只能读取-不能进行写操作 当我们尝试进行写操作时会如下 但是这并不意味着我们不可以改变其内部的属性 ...

  10. SQL SERVER 数据库各版本功能对比

    以前写了篇SQL SERVER 2008数据库各版本功能对比,官网提供的那个功能确实很好很强大,后面发现那个链接失效了.今天又遇到要对比SQL Server 2014数据库版本功能需求,搜索找了好久才 ...