文章综述:
对分类算法中的逻辑回归算法与决策树算法进行初步的了解,并使用Python语言分别生成数据使用两种算法进行分类。
逻辑回归只研究了二分类问题,通过代码实现发现,当数据分布较为规律,数据点类别的区分比较明显时,决策边界可以比较准确的找到,但是如果数据的分布比较杂乱,只使用二分类的逻辑回归效果很差,这一点从使用代码一定范围内随机生成数据在使用逻辑回归进行分类时可以发现,如果是多分类问题,逻辑回归还需要寻找适合的决策边界模型,而且只是二分类以w0+w1x1+w2x2为决策边界很多时候也很不合适。但是逻辑回归可以比较轻松的随时导入大量数据集对模型进行训练更新,对数据快速的进行分类,而且还可以随时调整分类的阈值。
对于决策树回归只研究了ID3算法和ID4.5算法,CART算法的离散属性搭建树问题,对剪枝问题也没有过多的描述。采用了整段描述的形式逐步推出三种算法,分析其优劣点,并使用python对三种算法中最优的CART算法生成了一个数据集,根据数据集的多个特征进行了分类,并将决策树画出。在实现的过程中发现,决策树的实现相对来说没有复杂的算法,实现比较简单,而且轻松的实现了多个特征的多维分类,图形也非常形象易于理解,不过在生成决策树的时候非常容易过拟合,产生大量的叶子节点,需要通过剪枝去除,另外也无法像逻辑回归一样根据新的数据更新和优化模型。
算法学习:
逻辑回归(Logistic回归):
逻辑回归是分类算法里最基础也是最重要的算法之一,而说到逻辑回归很多人就会想起刚刚学过的线性回归,那逻辑回归和线性回归有什么关系和区别呢?实际上逻辑回归和线性回归在形式上基本是相同的,都是利用回归的思想去解决问题,它们最大的区别就是因变量不同,在说明这一点之前我们首先要明确两者在用途上的差别,逻辑分类是一种分类算法,主要用来解决二分类或者多分类问题,而线性回归是对数据变量进行拟合,对未知变量进行估计预测。它们两个都有ax+b,但是在处理数据时线性回归将ax+b当成因变量使用y=ax+b来求值,而逻辑分类是将ax+b的值映射到[0,1]的范围之内,并将其分为大于0.5和小于0.5两类(这里用二分类线性决策边界解释),由此将数据集分成两类。
了解过什么是逻辑分类后我们来进入主题正式讨论一下逻辑回归,逻辑回归就是找到一个界,这个界将数据分成两类,划分最准确,错误最少的那个界就是逻辑回归的最优的界。而现在有一个核心问题就是:我们如何找到这个界?这里我们讨论二分类所以我们设这个界为Z=XW=W0+W1X1+W2X2,也被称为决策边界,如图:
然后我们使用Sigmoid函数将其值映射到[0,1]之间,获得逻辑回归的决策函数h=1/1+e**-z,之所以选择用Sigmoid函数一是Sigmoid函数符合要求以0.5做分界,数学特性好。二是逻辑回归写成指数族分布的形式可以推导出sigmoid函数的形式。(具体原因可以阅读文献一)Sigmoid函数如图:
横坐标为z,z>0,概率h>0.5,概率最终趋于1..
z<0,概率h>0.5,概率最终趋于0.
在决策边界上是z=0,概率h=0.5.
当h>0.5的数据点我们将它归为一类,并给他们一个标签y=1.
当h<0.5的数据点我们将它归为另外一类,并给他们一个标签y=0.
而求最优决策边界就是对于边界方程式Z=XW=W0+W1X1+W2X2 通过已知的测试数据集(已被分好类拥有y标签并有X1,X2两个特征的数据),求出最优的三个未知量W0,W1,W2使决策边界可以对未知的有X1,X2两个特征的数据集进行划分,将其分为h>0.5,y=1的·一类与h<0.5,y=0的一类。在划分的过程中出现划分错误越少,决策边界越好。而这一标准我们可以用两个cost函数(代价函数)来描述: