详细解释机器学习方法解决实际问题应该采用回归还是分类

      最近在和网友交流的过程中,发现大家普遍对于自己所要解决的问题是采用分类方法进行解决还是采用回归(拟合、线性预测)方法进行解决存在一定的疑惑。回归机器学习算法和分类机器学习算法之间的差异有时会使大多数人感到困惑,这使在解决预测问题时采用错误的方法(反之亦然),这也导致大家构造模型输入及参数调节上存在一定的问题。了解你要解决的任务是回归问题还是分类问题,是选择合适算法的关键。在这里我将通过基本概念和简单代码实现进行详细阐述你的问题解决到底应该采用回归还是分类。

一:回归与分类的相似性

      回归和分类都属于有监督的机器学习方法这一范畴。两者都是利用已知数据集(称为训练数据集)进行预测未知目标。伪代码语言描述就是:采用一种算法来学习输入变量(x)到输出变量(y)的映射函数;y = f(X)。这种问题的解决就是尽可能精准实现映射函数(f)(即称之为训练一个不错的模型),以便当有新的输入数据(x)时,可以预测出与之对应的输出变量(y)。

     因此,我们在做回归与分类问题时,所要确定的一点就是我们要解决的问题一定是个有监督的问题,即是数据集样本齐全(有数据集有标注,从标注的数据集上来说:当标签Y是一组有限的值时(通常是少量),则是分类任务。当Y可以取无穷多个值时,该任务则是回归任务。)当然,目前我们所要解决的问题多采用有监督的方法。无监督问题的解决方法在此不在论述。

                            

二:分类问题

2.1 基本概念

        分类问题即是从输入变量(x)到离散或分类输出变量(y)训练或者预估映射函数(f)。在该情况下,y是映射函数(f)预测的类别。

       例如:假设根据较早记录的一些数据来预测某只球队在接下来的一场比赛中获胜的可能性。那么预测的标签就是了。这便是一个典型的二分类问题。二分类和多类分类都是训练一个模型或函数将数据区分为连续实值的一个过程。

                                          

       例如,当提供有关房屋的数据集时,分类算法可以尝试预测房屋的售出价格“卖得比建议零售价还是”。因此,对房屋价格预测问题就转换为了一个简单的二分类进行解决,即对售出房屋的价格是高还是低进行预测分类。

      常见分类算法例如:逻辑回归,朴素贝叶斯,决策树和K最近邻等,当然在深度学习中常用的分类函数为softmax。

      2.2 代码详解

       构建简单的数据特征进行区分橘子和苹果:

from sklearn import tree
# 构建数据调整
# features = [[155, “rough”], [180, “rough”], [135, “smooth”], [110, “smooth”]] # 数据类型 
features = [[155, 0], [180, 0], [135, 1], [110, 1]] features
# labels = [“orange”, “orange”, “apple”, “apple”] # 0和分别代表橘子和苹果
labels = [1, 1, 0, 0]
# 训练分类器
classifier = tree.DecisionTreeClassifier() # 决策树
classifier = classifier.fit(features, labels) 
# 输入一个调整进行预测
print (classifier.predict([[120, 1]]))

   2.3 评价标准 

     分类任务评价标准多为准确率。当然应当复杂任务时,大家往往采用P、R、F、AUC等指标进行综合评价。

三:回归问题

3.1 基本概念

      回归问题即是从输入变量(x)到数值或连续型输出变量(y)拟合映射函数(f)。在该情况下,y是一个实数值,可以是整数或浮点值。但是y的标签一定是无限多或者说具有连续性。

    例如:我们根据开盘价进行预测某种股票的收盘价格,那么该问题的解决一定是个回归拟合问题。

                                                        

    例如:当再一次向你提供有关房屋的数据集并要求你预测房屋价格时,这不在是一个分类任务而是一项回归任务,因为价格将是连续输出。
    常见回归算法例如:线性回归,支持向量回归(SVR)和回归树等;

    3.2 代码详解

X = [[6],[8],[10],[14],[18]]#输入变量
y = [[7],[9],[13],[17.5],[18]]#输出标签
from sklearn.linear_model import LinearRegression#导入线性学习模型
model = LinearRegression()
model.fit(X,y)#训练拟合模型
print("Predict 12 inch cost:$%.2f" % model.predict([[12]]))#预测试一下

  3.3 评价标准  

  回归任务的评价标准多为误差值,例如MSE、RMSE等。

四:总结

     一句话总结:分类和回归是有监督的学习任务。当数据形式为<X,Y>时,其中Y是与X相关的标签。算法模型能够学习在给定X的情况下预测Y。当标签Y是一组有限值时(通常是少量),则是分类任务。当Y可以取无穷多个值时,则是回归任务。其区别总结为如下表所示

  分类任务(问题) 回归任务(问题)
算法函数特点 映射功能用于将值映射到预定义的类 映射功能用于将值映射到连续输出
预测值类型 离散值 连续值
评价方法 准确率 均方根误差
相关基本算法 决策树,逻辑回归等 回归树(随机森林),线性回归等
发布了38 篇原创文章 · 获赞 192 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/weixin_40651515/article/details/105423592