1 应用
在分类问题中,你要预测的变量 ? 是离散的值,尝试预测的是结果是否属于某一个类(例如正确或错误)。分类问题的例子有:判断邮件是否是垃圾邮件;判断一次金融交易是否是欺诈;肿瘤分类问题,区别一个肿瘤是恶性的还是良性的。
2 二分类
1)假设函数
y∈{0,1},其中0表示负分类,1表示正分类。
逻辑回归,该模型的输出变量范围始终在0 和1 之间。 逻辑回归模型的假设是:hθ(x)=g(θTx) 其中: ? 代表特征向量 ? 代表逻辑函数(logistic function)是一个常用的逻辑函数为S 形函数(Sigmoid function),g(z)=1/(1+e−z), g(z)叫做Sigmoid Function或者对率函数(Logistic Function).
逻辑回归的假设函数:
2)决策边界
一条线能将训练集分为正类和负类有效分开,那么这条线就称为决策边界。
可以用非常复杂的模型来适应非常复杂形状的判定边界。
决策边界是假设函数的一个属性,取决于假设函数的参数,不取决于训练数据,决策边界可以通过训练数据计算得到。
3)代价函数
定义的代价函数是所有模型误差的平方和,带入假设函数计算得到的代价函数是一个非凸函数,这意味着代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值。
在对数几率回归中, 使用
ℎ? (?)与 ????(ℎ?(?), ?)之间的关系如下图所示:
这样构建的????(ℎ?(?), ?)函数的特点是:当实际的 ? = 1 且ℎ?(?)也为 1 时误差为 0,当 ? = 1 但ℎ? (?)不为1 时误差随着ℎ?(?)变小而变大;当实际的 ? = 0 且ℎ?(?)也为 0 时
代价为 0,当? = 0 但ℎ?(?)不为 0 时误差随着 ℎ? (?)的变大而变大。
将构建的 ????(ℎ? (?), ?)简化如下:带入代价函数得到:
4)梯度下降
用梯度下降算法来求得能使代价函数最小的
参数了。算法为:
3 高级优化算法
除了梯度下降还有其他更加高级更加复杂的算法:Conjugate Gradient(共轭梯度法)、BFGS和L-BFGS。
这些算法的优点是:
1)不需要手动选择学习率 ?
2)收敛速度远远快于梯度下
缺点:算法复杂
在使用的过程中,Octave 有一个非常理想的库用于实现这些先进的优化算法,所以,如果你直接调用它自带的库,你就能得到不错的结果。使用其他语言时,比如C、C++、Java 等,需要尝试一些不同的库,以确保找到一个能很好实现这些算法的库。
4 多分类问题
采用的方法是一对多的分类工作,或称为"一对余"方法。
举例说明多分类的问题:
三角形表示 ? = 1,方框表示? = 2,叉叉表示 ? = 3。使用一个训练集,将其分成3 个二元分类问题。
具体步骤:
a) y=1为一类,其余的为负类,创建一个新的"伪"训练集,拟合出一个合适的分类器hθ(1) (x);
b) y=2为一类,其余的为负类,创建一个新的"伪"训练集,拟合出一个合适的分类器hθ(2) (x);
c) y=3为一类,其余的为负类,创建一个新的"伪"训练集,拟合出一个合适的分类器hθ(3) (x);
d) 在预测时,将所有的分类机都运行一遍,选择最高可能性的输出变量。