Multiclass-Classification

Perceptron Learning Algorithm,Logistic Regression这些算法的最初出现都是基于2分类的(Binary Classification),但是生活中会出很多多分类的问题出现(比如选择题:四选一,视觉的识别,手写体的识别之类的)



那么我们如何才能使用这些二分类的模型来完成多分类的需求呢?

Read More

Logistic Regression

前两篇文章中的模型Perceptron Learning AlgorithmLinear Regression可以解决的问题是判断一个患者是否会心脏病,但是实际生活中里面里面可能给出的报告的是患者患心脏病的一个概率:

这样的话从模型的角度来说更希望的是得到一个发生在患心脏病的概率f(x)=P(+1|x)∈[0,1],
这个概率值越大,患心脏病的概率越大,反之则越小

Read More

这个总结最初是写在本地的MacDown中的,他的markdown语法解析与hexo的略微有点差异,懒得改了-_-,忍着点看..
对排版看不下去了,将本文的公式使用Latex重写了^_^ .on 2016-04-15

朴素贝叶斯

参考[1]

事件AB同时发生的概率为在A发生的情况下发生B或者在B发生的情况下发生A
$$P(A \cap B) = P(A)*P(B|A) = P(B)*P(A|B)$$
所以有:
$$P(A|B)=\frac{P(B|A)*P(A)}{P(B)}$$

对于给出的待分类项,求解在此项出现的条件下各个目标类别出现的概率,哪个最大,就认为此待分类项属于哪个类别

工作原理

  1. 假设现在有样本$x=(a_1,a_2,a_3,…a_n)$这个待分类项(并认为$x$里面的特征独立)
  2. 再假设现在有分类目标$Y=\{y_1,y_2,y_3,y_4..y_n\}$
  3. 那么$max(P(y_1|x),P(y_2|x),P(y_3|x)..P(y_n|x))$就是最终的分类类别
  4. 而$P(y_i|x)=\frac{p(x|y_i)*P(yi)}{P(x)}$
  5. 因为$x$对于每个分类目标来说都一样,所以就是求$max(P(x|y_i)*p(y_i))$
  6. $P(x|y_i)*p(y_i)=p(y_i)*\prod_i(P(a_i|y_i))$
  7. 而具体的$p(a_i|y_i)$和$p(y_i)$都是能从训练样本中统计出来
    $p(a_i|y_i)$表示该类别下该特征出现的概率
    $p(y_i)$表示全部类别中这个这个类别出现的概率
  8. 好的,就是这么工作的^_^

Read More

有监督学习和无监督学习的区别

  • 有监督学习:对具有标记的训练样本进行学习,以尽可能对训练样本集外的数据进行分类预测。(LR,SVM,BP,RF,GBRT)
  • 无监督学习:对未标记的样本进行训练学习,比发现这些样本中的结构知识。(KMeans,DL)

正则化

正则化是针对过拟合而提出的,以为在求解模型最优的是一般优化最小的经验风险,现在在该经验风险上加入模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个rate比率来权衡模型复杂度与以往经验风险的权重,如果模型复杂度越高,结构化的经验风险会越大,现在的目标就变为了结构经验风险的最优化,可以防止模型训练过度复杂,有效的降低过拟合的风险。

奥卡姆剃刀原理,能够很好的解释已知数据并且十分简单才是最好的模型。

Read More

VC Bound

我们通过上一篇文章中了解到了break point以及Growth Function之后,
我们将Growth Function的上界设为B(N,k)(maximum possible m_H(N) when break point = k),表示在break pointk的情况下,其mH(N)的最大值,用通俗的话来说,在N个点中,任意取k个点不能shatter

这种方式定义的好处就是以后在计算不需要计较具体的成长函数是怎么样的,形成的hypothesis究竟是如何的。

Read More

考智力,脑子不好使咋办??只有记下来^_^

烧香/绳子计时1小时15分钟

烧一根不均匀的绳,从头烧到尾总共需要 1 个小时。现在有若干条材质相同的绳子,问 如何用烧绳的方法来计时一个小时十五分钟呢?

假设现在有三根绳子A和B和C,现在将A的两端都点着,B的一端都点着
半小时过去后,A就烧没了,此时B应该还有半小时的时长可以烧,但是现在把B的另一端也点着
又过了十五分钟,B也烧没了,这个时候把C的两端也都点着
又过了半小时,C也烧没了
好了,一小时十五分钟就这么烧到了^_^
其实主要思路还是两端 一端 烧得搭配

Read More

Perceptron

先来看一下一个经典的信用卡发放问题:

这是一个用户的基本的信息,现在要决定是否对他发放信用卡。

现在假设这些基本信息组成了一个向量X={x1,x2,…xd}
同时对于每一维度上有一个对应的权重向量W={w1,w2,…wd}

那么如果这两个向量乘积出来的值大于一个设定的阈值,我们就发他信用卡,否则就不发

Read More

题目

输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回 true,否则返回 false。
例如输入 576911108,由于这一整数序列是如下树的后序遍历结果:
      8 
     / \
    6  10 
   /\   /\ 
  5  7 9  11
因此返回 true。
如果输入 7465,没有哪棵树的后序遍历的结果是这个序列,因此返回 false

解析

做该题之前还必须得了解什么是二叉查找树
最主要的性质就是左子树的任何节点都小于根节点,右子树的任何节点都大于根节点。
然后后序遍历的最后一位肯定是根节点,所以,可以得到巧妙的方法为:
则该序列的最后一位a[n-1]必定是根节点,然后前面的序列中连续一部分是左子树的遍历,另一部份是右子树的遍历
此时需要在前面的序列中查找第一个大于root的节点a[i]

Read More