入门级对数几率回归算法(matlab实现)
对数几率回归模型是处理分类问题的算法,常用于垃圾邮件分类,天气预测等,很多文献也将其称为“逻辑回归”。这里我采用西瓜书的西瓜数据集3.0a来进行分类。 这是一个二分类问题,其输出的标记y属于{0,1},而线性回归模型产生的预测值是实值,于是我们需要将实值转换为0/1值,最理想的是单位阶跃函数。但是单位阶跃函数不连续,因此不能直接使用它。于是我们希望找到在一定程度上近似单位阶跃函数的‘替代函数’,并希望它单调可微,对数几率函数(它是一种sigmoid函数)正是这样一个替代函数。
其大致图形如下:
他将z值转换为一个接近0或1的y值,并且在z=0附近变化很陡。
一、基本思想
这种分类学习方法直接对分类可能性进行建模,无需事先假设数据分布,避免了假设分布不准确带来的问题;
它能得到近似概率预测,这对需要利用概率辅助决策的任务很有用;
对率函数是任意阶可导的凸函数,有很好的数学性质,许多数值优化算法都可直接用于求解最优解。
以上就是对率回归的基本思想。
但是我们用matlab来实现的话就非常的简单,不用梯度下降法就能轻松的算出来,因为matlab当中有很多求解这样最优参数的函数。我们的目的就是求出满足(1.13)式的beta。将(1.13)写成具体的矩阵形式
我们现在需要注意的一个原则就是能用矩阵就不用了循环,因为循环非常耗费时间。然后我们用matlab的fminsearch函数就可以算出beta和b了。
二、代码实现
新建一个文件夹为对数几率,在这个文件夹下创建train.m
D={
1,0.697,0.46,'是' %数据集为%编号 密度 含糖率 好瓜
2,0.774,0.376,'是' % 1 0.697 0.46 是
3,0.634,0.264,'是' % 2 0.774 0.376 是
4,0.608,0.318,'是'
5,0.556,0.215,'是'
6,0.403,0.237