大家好,我又回来了。今天讲一讲回归。
回归算法通常用于数值的预测,但是也能用来分类(通过回归计算属于各分类的概率,取其最大者),所以 weka 把回归算法归并于 分类器标签。
打开 weka 在data文件夹下找到 cpu.with.vendor.arff 文件,这就是我们用来测试的样本,加载该样本。
线性回归算法
切换到分类器标签,在 choose 下拉框中选择 function节点下的 LinearRegression 算法,该算法就是最基本的回归算法——线性回归。
点击 Start 按钮,在 Result List 中找到生成的 分类器。右键该分类器 选择 Visualize classifier errors 可以查看分类器的误差。如图:
可以通过选择X轴和Y轴的属性,来从不同维度浏览数据,数据点用大叉表示,大叉越大说明误差越大。
线性回归算法通过计算平方误差来判断生成的分类器与真实数据的匹配程度。
logistic回归算法
当我们把线性回归算法用于分类的时候,线性回归算法就会有一个很大的弊端:
线性回归非常容易被极值干扰,见下图:
![clip_image002](http://images.cnitblog.com/blog/540980/201311/24225255-58bb5f12f94449c093ae4a87e3dfc7bc.gif)
于是就有了logistic回归:
P(x)=1/(1+exp(-f(x1,x2,x3.....xk))
其中f(x1,x2,x3.....xk)是一个线性回归函数。
在logistic回归里计算误差的模型是 对数似然。
R语言实现logistic回归: glm(nomove~conc,family=binomial(link='logit'),data=anesthetic)
M5P回归算法
在这里再向大家介绍一种很实用的回归算法:M5P算法。这个算法是决策树和线性回归算法的一个结合体。
举一个例子向大家说明。
预测 处理器芯片的价格。 处理器芯片分为电脑使用的通用芯片(代表是Intel 和 AMD)和手机、嵌入式设备使用的芯片(ARM芯片)。即使两种芯片的其他参数大体一致,通用芯片和嵌入式芯片的价格还是会有很大不同。如果在生成回归模型的时候把这两类芯片的数据混为一谈,那么生成出来的线性模型的误差必定会变得很大。如果能用决策树算法把样本预先分成两类(通用和嵌入式),然后对两个分类分别进行回归算法,那么回归模型就会好很多。
在 weka 中的分类器算法下拉框中,找到 trees 节点下的 M5P算法,对 cpu.with.vendor.arff 样本进行回归,然后与 LinearRegression 算法 比较误差,可以发现 M5P算法明显更好。如下图(图中根据MMAX这个参数先把样本分成了两类):