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. 在Eclipse下导入vlc-android并编译

    在Ubuntu14.04下载好了VLC的源代码后,VLC的Eclipseproject存放在"vlc-android"文件夹 root@dzt-VirtualBox:/home/d ...

  2. windows系统下c语言暂停程序

    原文:windows系统下c语言暂停程序 windows系统下,很多C语言初学者的调试时,往往没看到结果程序就退出了,据我所知的方法主要有以下几种 方法一: #include int main() { ...

  3. angularJS看MVVM

    从angularJS看MVVM   javascript厚积薄发走势异常迅猛,导致现在各种MV*框架百家争雄,MVVM从MVC演变而来,为javascript注入了全新的活力.我工作的业务不会涉及到a ...

  4. archlinux的wiki非常强壮

    最近发现搜索linux工具或系统配置内容.来自同一个站点很多很好的资源:https://www.archlinux.org/,网站wiki(https://wiki.archlinux.org/)中有 ...

  5. 接口自动化测试:参数化封装(excel文件读取)

    log4j.properties文件配置 log4j.rootLogger = DEBUG,stdout,F log4j.appender.stdout = org.apache.log4j.Cons ...

  6. windows批处理研究_不断更新

    windows批处理脚本(bat),很麻烦,主要原因有: 1.bat脚本编写的风格,太古老,调用方式太奇怪. 2.windows自身运行机制就对批处理脚本有兼容性问题.比如,鼠标双击打开一个bat,与 ...

  7. MVC5模板部署到mono

    VS2013中的MVC5模板部署到mono上的艰辛历程 2014-10-27 09:30 by FuzhePan, 3954 阅读, 46 评论, 收藏, 编辑 部署环境:CentOS7 + Mono ...

  8. leetcode第14题--Longest Common Prefix

    Problems:Write a function to find the longest common prefix string amongst an array of strings. 就是返回 ...

  9. leetcode[158] Read N Characters Given Read4 II - Call multiple times

    想了好一会才看懂题目意思,应该是: 这里指的可以调用更多次,是指对一个文件多次操作,也就是对于一个case进行多次的readn操作.上一题是只进行一次reandn,所以每次返回的是文件的长度或者是n, ...

  10. SSIS中Sql Task 获取系统变量

    原文:SSIS中Sql Task 获取系统变量 执行 SQL 任务使用不同的连接类型时,SQL 命令的语法使用不同的参数标记.例如,ADO.NET 连接管理器类型要求 SQL 命令使用格式为 @var ...