Machine Learning/Introducing Logistic Function

打算写点关于Machine Learning的东西, 正好也在cnBlogs上新开了这个博客, 也就更新在这里吧。

这里主要想讨论的是统计学习, 涵盖SVM, Linear Regression等经典的学习方法。 而最近流行的基于神经网略的学习方法并不在讨论范围之内。 不过以后有时间我会以Deep Learning为label新开一个系列, 大概写写我的理解。 总之Machine Learning的label下都是和一些数学上比较清晰的东西, 不会像deep learning一样要等着Brain Science那群人做实验, 找出新东西才能确定方向。

第一篇本来觉得从Linear Regression开始比较好, 引入问题后导入MP一般逆就能解决。 最后还是不打算这么写, 太简单了没有什么价值。 于是从Linear Regression开始。

最后, 刚刚设置了latex的代码, 不知能不能用, 不行的话事后再修改。

  • Logistic Classification

首先来考虑一个问题, 我们有一组数据$X$, 现在打算将它分类成$k$个类$C$, 那么应该怎么办?

我们这么考虑, 对于每一个数据$x$, 显然都有$P(C_i|x)$, 代表了每个数据属于这个类的分布, 我们的目的就是找出一个最好的分界线, 让每个数据能有最大概率属于某个类。 (说句闲话, 当然我们也有$P(x)$, 并且有联合分布$P(C_i,x)$, 我们会在今后用这个结合bayesian的想法去做些更有意思的事情。 不过因为不是这次的主题, 下面不再提及。) 解决这个问题虽然有很多方法, 为了导出logistic, 这里我们用log-odds来解决这个问题。

$log(\frac{P(C_i|x)}{P(C_k|x)}) = \beta x + \alpha$

在这里, 对于每个类$C_i$, 我们都选择一个固定的类$C_k$作为参考, 同时只用linear model。 最终显然会有$k-1$个分界。现在我们来求每个$P(C_i|x)$:

$P(C_i|x) = \frac{e^{\beta x + \alpha}P(C_k|x)}{Z(\theta)}$

这里凭空多了个$Z$, 这是归一化项, 它是所有$P$的总和$Z(\theta)=P(C_k|x)+\sum_i{e^{\beta x + \alpha}P(C_i|x)}$, 注意到因为$C_k$我们已经单独拿了出来, 所以单独加上。

现在试着将$Z(\theta)$带进去, 看看发生了什么? $P(C_k|x)$消失了, 我们得到了一个新的式子:

$P(C_i|x) = \frac{e^{\beta x + \alpha}}{1+\sum_i{e^{\beta x + \alpha}}}$

看起来是不是很眼熟? 这个其实就是multi-class下面的logistic的形式。 当然, 在neural network里面, 他有个很唬人的名字, 叫做SoftMax Layer。 但值得注意的是这里我为了简单, 省略了$\beta$和$\alpha$的下标, 显然对不同的clas需要不同的曲线。

当然, 如果$k=2$, 他自然会回到我们熟悉的形式:

$P(C_i|x) = \frac{e^{\beta x + \alpha}}{1+e^{\beta x + alpha}}$

这就是我们熟悉的logistic function。 虽然导出的过程多少有点不太令人满意, 但最终还是得到了这个结果。实际上完全不必拘泥于这个方法, 随着深入, 我们会看到各种各样的方法里都能够自然地导出logistic function, 比如在RBM里, 我们就能发现$P(1|x)$是logistic function。 这也是为什么很多方法都倾向于选择这个非线性方程。

  • 在最开始我提到了linear regression, 在logistic function的推到过程里也不加说明的用了线性边界, 这里应该有必要简单的介绍下这个问题。

首先是问题设定, 我们依然有一组数据$X,Y$, 我们想找出这组数据的特征。 所谓特征, 你可以想象有一堆点, 它们排成直线, 那显然我们如果有$\beta x + \alpha$的话, 特征就是两个参数$\beta$和$\alpha$, 有时我们也会称这个为数据的结构, 它们表达的意义差别不太大。

简单的说, 我们就是想用直线拟合这组数据, 如果没记错, 中学生都学过如何用最小二乘法拟合一组数据, 并且给出误差。 不过中学生的知识水平还很难把这个问题写成简单的形式, 我们这里当然不会出现$\sum_{ij}\|x_i-x_j\|^2$这种形式。

当然, linear regression的应用范围很广, 分类问题也可以处理。比如我们将每个类都设置为$e_i$, 然后自然就可以用linear model去找一个平面进行分类。 过程跟这里是完全一样的。

为了后面更容易解释, 我们稍微换个方向看这个问题, 我们有一组数据$x$, 如果它有什么结构, 那么一定就有这么一个函数能生成它, $f(x)=y$, {x,y}就是现在我们看到的。 因此我们的目标自然就是尝试找到$f$.

对于linear model, 这个问题非常简单

$Bx=Y$

只要有$B$, 一切就解决了。 不过这个事情没有想象中那么简单, 因为很多时候这个等式是无解的, 直接去求显然不合适。 因此我们转而去尝试最小化下面这个式子:

$f=\|Bx-Y\|^2$

这里我们加了L-2范数来保证能够最小化。 或许你会怀疑为什么没有偏移项, 这是因为为了简单, 我们把偏移项放进了B和x里, 从而不再需要求两次导数了。

到这里一切就显得很清晰了, 虽然很多时候不能保证误差为0(实际上是所有情况下, 因为实际问题的观测数据总和真值有偏移, 我们需要$E(Y)$才能推测真值), 但总是可以最小化这个误差。取导数, 令$f’ = 0$, 我们可以得到:

$B=(x’x)^{-1}x’Y$

这个结果很容易推导, 我也不给出详细的过程。 但这个结果很有意思。你可能已经注意到了, 这个形式满足M-P逆的四个条件, 也就是说这是M-P逆的表达形式。

虽然我们并没有引入vec算符, 也没有引入固有向量分界后空间的意义, 从数学上讲可能很难。 不过可以想像一下这个函数干了什么。 首先, 如果我们能够找到一个完美的$f$, 显然这个曲线会和点完全重合。 但首先我们的模型可能太过简单, 那么我们就用了直线上距离观测点最近的地方作为预测结果, 相当于一个投影过程, 这也是MP逆的定义所导出的东西。

当然, linear regression也会有很多变形和优化方法。 不过今天就到此为止, 今后我们会讲讲LASSO, 局域权重等一些实际中常用的东西。 或许还会补补数学上的一些东西。 总之, 以后有机会再见。

Machine Learning/Introducing Logistic Function的更多相关文章

  1. CheeseZH: Stanford University: Machine Learning Ex2:Logistic Regression

    1. Sigmoid Function In Logisttic Regression, the hypothesis is defined as: where function g is the s ...

  2. machine learning 之 logistic regression

    整理自Adrew Ng 的 machine learning课程week3 目录: 二分类问题 模型表示 decision boundary 损失函数 多分类问题 过拟合问题和正则化 什么是过拟合 如 ...

  3. 白话machine learning之Loss Function

    转载自:http://eletva.com/tower/?p=186 有关Loss Function(LF),只想说,终于写了 一.Loss Function 什么是Loss Function?wik ...

  4. Machine Learning - 第3周(Logistic Regression、Regularization)

    Logistic regression is a method for classifying data into discrete outcomes. For example, we might u ...

  5. [machine learning] Loss Function view

    [machine learning] Loss Function view 有关Loss Function(LF),只想说,终于写了 一.Loss Function 什么是Loss Function? ...

  6. [Machine Learning]学习笔记-Logistic Regression

    [Machine Learning]学习笔记-Logistic Regression 模型-二分类任务 Logistic regression,亦称logtic regression,翻译为" ...

  7. (原创)Stanford Machine Learning (by Andrew NG) --- (week 3) Logistic Regression & Regularization

    coursera上面Andrew NG的Machine learning课程地址为:https://www.coursera.org/course/ml 我曾经使用Logistic Regressio ...

  8. Machine Learning in Action(4) Logistic Regression

    从这节算是开始进入“正规”的机器学习了吧,之所以“正规”因为它开始要建立价值函数(cost function),接着优化价值函数求出权重,然后测试验证.这整套的流程是机器学习必经环节.今天要学习的话题 ...

  9. Andrew Ng Machine Learning 专题【Logistic Regression & Regularization】

    此文是斯坦福大学,机器学习界 superstar - Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记. 力求简洁,仅代表本人观点,不足之处希望大家探 ...

随机推荐

  1. Java判断当前用户数及当前登录用户数工具类-session原理

    JavaWeb开发中,有时会遇到统计或管理用户登录数或者当前在线多少用户,分别都是谁的情况.当然,实现途径多种多样.下面列举一下通过session实现的一种统计. public class MySes ...

  2. 新手sqlserver数据库dba需要注意的小细节

    前言:任何的优化和修改都是以业务情况为前提,可能有的写的有误或者不准确的地方,欢迎各位来拍砖. 1.在创建db的时候自增长建议设置成按MB(M)增长,步长根据业务量来设置,一般情况建议设置100-20 ...

  3. JS对text非空判断,非空校验

    function JTrim(s){    return s.replace(/(^\s*)|(\s*$)/g, "");} //你先调用一下这个方法,然后在判断 function ...

  4. sax(用于处理XML事件驱动的推模型)解析例子

    SAX解析 Java程序如下: import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.SAXParser; impor ...

  5. linux内核的冒险md来源释义# 14raid5非条块读

    linux内核的冒险md来源释义# 14raid5非条块读 转载请注明出处:http://blog.csdn.net/liumangxiong 假设是非条块内读.那么就至少涉及到两个条块的读,这就须要 ...

  6. [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)

    原文:[推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]ORACLE PL/SQL编程之四: 把游标说透(不怕做不到,只怕想不到) 继上两篇:ORACLE PL ...

  7. SQL 2005 中查询或执行另外的数据库操作的方法

    原文:SQL 2005 中查询或执行另外的数据库操作的方法 摘要: 如果,你想在一台数据库服务器上,查询另一个台数据服务器的数据该如何做呢?如果,你想在同一台数据服务器上,在不同的数据库之间查询数据, ...

  8. 亮点面试题&&实现Singleton(辛格尔顿)模式-JAVA版本

    称号:设计一个类.我们只能产生这个类的一个实例.(来自<剑指Offer>) 解析:仅仅能生产一个实例的类是实现Singleton(单例)模式的类型.因为设计模式在面向对象程序设计中起着举足 ...

  9. Keil中使用Astyel进行C语言的格式化

    Astyel !E --style=linux --delete-empty-lines --indent=spaces=2 --break-blocks 这可以做到, 使用Linux风格的代码 ) ...

  10. c++ 正則表達式

    正則表達式是经常使用的一种方法.比較有名的类库是boost,可是这个类库在重了.全部就像找一些轻量级的类库. 后来发现准标准的库tr1已经非常方便了,微软vs2008 sp1 以上版本号都支持了.全部 ...