线性回归和逻辑回归
线性回归很简单,就是用一条直线来表达,给出x预测y,怎么样找到最好的一条直线呢?用最小二乘法,表达出预测值到给定值的距离平方和。然后最小化这个值,用的方法就是求偏导,得到参数值。这就是线性回归。
逻辑回归(对数几率回归)是说我输入一组x,给出她属于一个分类的概率。所以逻辑回归只能处理二分类问题。用的是sigmod函数,然后优化一个总的正确的概率,用最大似然法可以求出来。
线性判别分析(LDA)是把所有的点都映射到一个直线上,找到中心点,让中心点尽量远,类别之间尽量近。然后来一个新的点只要看它离哪个中心点近就好了。
多分类的问题。通常把多分类归结到两分类的问题。用的方法包括一对一、一对其余和多对多三种方法都可以。
朴素贝叶斯分类器
朴素贝叶斯方法是基于贝叶斯公式p(c|x)=p(c)p(x|c)/p(x)。由于这里的x应该是一组属性值,如果直接计算p(x|c)显然需要属性的指数级的样本数量,不太现实。所以朴素贝叶斯的想法是认为各个属性是独立的,这样的话p(x|c)就是各个属性的概率的乘积了p(x|c)=p(x_1|c)p(x_2|c)p(x_3|c)p(x_4|c)。这样就解决问题了,最后哪个类别的概率最大就输出哪个类别。朴素贝叶斯的好处是它能直接输出属于每个分类的概率。但是坏处是如果某个标记在样本集中从来没有出现过,那么计算出来的概率全部都是0,这个时候需要一点修正,可以用拉普拉斯修正,避免这个情况。
SVM
首先在线性可分的问题里我们需要做的是找到一个超平面能把正例反例分开,这个超平面怎么找呢,就是要让他两边的点离它的距离之和最小,要优化这个距离是可以用拉格朗日乘子法表达的。最后是一个二次规划的问题,可解。
但是实际问题中很多时候并不能用一个超平面直接分开,这时候我们就增加一些维度,把样本点都映射到一个高维空间上去,使得问题可以被超平面分开。但是这个时候在求解上述问题的时候要计算高维空间的内积,这通常是非常困难的,所以我们引入了核函数。使得在高维空间的内积直接等于在原始空间中通过核函数计算出来的值。这使得映射到高维空间的想法变成了可能。
神经网络
神经元:用sigmod函数作为对真实生物神经元的模拟,用输入总和与阈值的差值加上sigmod作为输出。
感知机:两层神经网络,可以解决线性可分的问题,但是解决不了异或问题。
多层神经网络:加入隐层,从此可以解决异或等复杂的问题。
误差逆传播算法(BP):在训练的时候,把输出值跟数据标记比较,用误差来训练神经网络的参数。训练的参数包括神经元之间的权值和每个神经元的阈值。用的方法是负梯度,计算每个参数值怎么变化最好,可以推导出改变量。
深度神经网络:多层神经网络,此时传统的BP不好用了,因为层数多了会导致误差传播“发散”无法收敛。此时可以采用无监督逐层训练,一层一层地去训练。
决策树
决策树是最符合人类直觉的一种分类方式,核心的思想是一个属性一个属性地“分而治之”。通过一棵树状的结构把训练集的数据归结为一些规则。
这里面最重要的问题是怎么选属性的问题,我们希望越重要的属性越应该早一点被选,重要与否的标准是按照这个属性分开以后“纯度”是不是更高。也就是说是不是不同类别的样本里面是不是大家更类似,是不是好瓜都在那个分类里面了。再换一种说法,是不是多样性得到降低了。多样性的度量就可以用信息熵来度量,选择哪个属性导致的信息熵降低得多我就选择哪个。
除了选择属性,还有个问题是剪枝,有预剪枝和后剪枝之分,预剪枝是在决策树生成过程中去判断一个分支是否有必要,后分支是在决策树生成以后再去判断。判断的标准是用验证集来看判断的准确度是否提升,如果没有提升就没有必要保留。