机器学习中的大多数问题可以归结为最优化问题。把一些典型的问题用最优化的方法建立数学模型,再最优化的方式求解。
我们再看看数据挖掘和机器学习中哪些是最优化问题,哪些不是。
名称 | 是否最优化 | 其他 |
关联规则 | 否 | 支持度和置信度; 其实就是联合概率p(x,y)和条件概率p(y|x)。 典型的创造概念,但是没有新的东西 |
决策树 | 否 | 取信息增益大的结点 |
线性回归 | 是 | 最小化误差平方 |
最大熵 | 是 | 熵最大 |
logistic 回归 | 是 | 最大似然 |
SVM | 是 | 最小化间隔 |
HMM | 是 | 最大似然 |
贝叶斯 | 是 | 最小化误差 |
矩阵分解的推荐系统 | 是 | 用户和商品的隐状态向量 |
什么是凸优化?抛开凸优化中的种种理论和算法不谈,纯粹的看优化模型,凸优化就是:1、在最小化(最大化)的要求下,2、目标函数是一个凸函数(凹函数),3、同时约束条件所形成的可行域集合是一个凸集。以上三个条件都必须满足。而世间万物千变万化,随便抽一个函数或集合它都可能不是凸的。
Stephen Boyd在他的《convex optimization》中定义凸优化问题是形如
的问题,其中为凸函数。也就是说,凸优化问题是指需要最小化的函数(代价函数)是凸函数,而且定义域为凸集的问题。
1.泰勒公式
计算机的计算过程用的就是泰勒级数展开式。泰勒公式给出了f(x)的另一种形式,而从某种意义上说逻辑就是用等号右边的形式代替左边的形式从而推理下去的。 数学上有一个习惯,就是把未知问题转化成一个已解决过的问题,然后就算解决了。泰勒级数形式的函数的行为就是一个计算机上的已解决得很好的问题。一旦把一个函数展开成泰勒级数的形式,它就成了一个已经解决过的问题,剩下的交给计算机就行了。理工科有一门课程叫做数值分析,这门课简直就是泰勒公式的应用。数值分析就是讲得各种数学式的求解,在计算机中,要求某一个问题的精确解是不可能的(因为计算机本质上只会逻辑运算),对于一个问题在不影响最后结果的情况下近似解是很可取的,泰勒公式就为这些计算提供了这样的方法,用简单式子逼近复杂式子,在误差范围内求出结果
2.梯度下降法和牛顿法
转自:http://blog.csdn.net/njucp/article/details/50488869