忙了很久,却并没有在做自己喜欢的部分,也一直没有时间沉淀一下,现在把最近看过的内容做一下总结和复习吧,主要是李航《统计学习方法》中的内容。
感知器算法
感知器模型
感知机模型输入空间为x$\in$R,输出空间为{-1,1},可以大致用一个公式概括:
$
f(x) = sign(wx+b)
$
损失函数有多种选择,一种是以误分类点的总数作为标准,但是这样的损失函数不易优化。另一种则是误分类点到超平面的总距离。对于误分类的数据,当wx+b>0时,y=-1,当wx+b<0时,y=1,因此单个点到超平面的距离可以写成:$\frac {-y_i(wx_i+b)} {|w|} $那么整个模型的损失函数就是把每个点的损失累加起来即可。
学习算法
感知器学习算法是由误分类点驱动的,采用随机梯度下降的方式来不断优化目标函数,随机选取一个误分类点,对参数w,b进行更新:
$
w = w+\eta y_ix_i
$
$
b = b + \eta y_i
$
最终感知器的算法可以这样实现:
|
|
K近邻算法
K近邻算法模型主要由三个因素决定:距离度量,K值的选择和分类决策规则。距离度量一般采用欧氏距离或者曼哈顿距离。而对于K值的选择,如果K值选择的过小,就相当于在较小的邻域内进行预测,那么预测结果对近邻的点非常敏感,同时如果近邻点恰巧是噪点就会出现错误。所以K值选的小,会让模型变得复杂,容易过拟合。而K值选的较大,则与输入实例较远的点也会发生作用,而这些点可能并不相关,模型会变得简单。通常采用交叉验证法选取最优K值。分类决策规则通常是多数表决
实现K近邻算法,最简单的方式是线性扫描,当训练集很大时,计算量也会特别大,为了提高K近邻搜索的效率,有很多的数据结构可以用来优化,例如kd树。kd树实现起来较为复杂,后续再补充,这里介绍简单的线性扫描的方法:
朴素贝叶斯法
朴素贝叶斯分类就是根据先验概率和条件概率来判断样本属于哪一类,可参考书中的例题看懂。代码如下:
拓展一些爱忘的东西
极大似然估计
假设X为离散型,概率分布则为$ P(X=x)=p(x;\theta)$,则似然函数为$K=\prod p(x;\theta) $
假设X为连续型,概率密度函数为$f(x;\theta)$, 则似然函数为$K=\prod f(x;\theta) $
极大似然估计法原理就是固定样本观测值$(x_1,x_2,x_3,…,x_n)$,挑选参数$\theta $使的似然函数最小。可以通过取对数的方式求解似然方程。举个例子:
使用极大似然估计推出朴素贝叶斯法中的概率公式:
极大似然函数
$$ L(\theta;y_1,y_2,…,y_k)=\prod P(y_i)=\prod \theta_k ^ {N_k}$$
其中N为样本总数,两边取对数得到
$$\ln(L(\theta))=\sum N_k\ln \theta_k$$
注意到约束条件$ \sum \theta_k =1$可以用拉格朗日乘子法,即$l(\theta_k,\lambda)=\sum {N_k ln\theta_k} +\lambda(\sum {\theta_k} -1)$,求导就可以得到:$\frac{N_k}{\theta_k}+\lambda=0$ 联立所有的k以及约束条件得到$\theta_k=\frac{N_k}{N}$。
贝叶斯估计
这里介绍下与极大似然估计的区别,具体公式可参考书上内容。
极大似然估计的核心思想是:找到参数θ的一个估计值,使得当前样本出现的可能性最大。而贝叶斯估计则是引入了先验概率,通过先验概率和似然概率来求解后验概率,而极大似然估计则是直接通过最大化似然概率来求解。
学业繁忙,突然发现自己感兴趣的学到的东西才这么点儿,都没太多时间看自己想看的书,写自己想写的代码,学自己想学的知识,现在回顾这几天,发现真正对自己有用的东西好像并没有太多,到底在忙些什么?哎,惜哉!