本系列注重用最快的效率解决一个现实问题,所以本篇介绍了如何选择合适的模型,以及一些机器学习基础术语。

(一)如何选择合适的模型

IF数据量少于50个
  数据样本太少了,先获取更多数据吧!!
ELSE数据量多于过50个
  IF是分类问题
    IF数据有标签
        IF数据量小于10万,
          选择SGD分类器
        ELSE数据量大于10万,
          先尝试线性SVM分类器,如果不好用,再继续尝试其他算法
          IF特征为文本,
            选择朴素贝叶斯SVM
          ELSE,
            先尝试kNN,如果不好用,尝试SVM加集成方法
    ELSE数据没有标签,
      选择各种聚类算法
  ELSE不是分类问题,
    IF需要预测数量,就是回归问题
    IF数据量大于于10万,
        就选择SGD线性回归
    ELSE,
        根据数据集特征的特点,有Lasso回归和Ridge回归、集成方法、SVM等几种选择。
    ELSE如果是要把数据可视化,
      则考虑等几种降维方法(参见第十课内容)
    ELSE 如果是要输出数据的结构
      对不起,Sklearn帮不了你

(二)基础术语

1. 数据量与特征量的比例

机器学习中对于数据的表达一般是 nm的矩阵,n代表样本的数量,一行(row)数据代表一个独立数据。而m代表特征变量(attribute/feature/variable)的数量,一列(column)数据代表某个特征在所有样本上的数值。比如下图就代表了一个 42(n=4,m=2)的矩阵,即总共有4条数据,每个数据有2个特征。

人们讨论数据量,往往讨论的是n,也就是有多少条数据。但这个是不准确的,因为更加适合的评估应该是n/m,也就是样本量除以特征数,原因很简单。如果你只有100条数据,但只有2个特征。如果用线性函数来拟合,相当于给你100个点来拟合到二次函数上,这个数据量一般来说是比较充裕的。但还是100个数据点,每个数据的特征数是200,那么很明显你的数据是不够的,过拟合的风险极高。

所以谈论数据量,不能光说有多少条数据n,一定也要考虑数据的特征数m。

值得注意的是:数据比模型更重要,数据重要性 >> 模型重要性。

2. 聚类与分类有什么区别?

其实聚类和分类最简单的区分就是,类别是否已知。

分类是根据数据的特征划分到已知的类别,比如对动物图片进行分类,提取图片的特征,然后根据提取的特征将其划分到对应的动物类别。

聚类则是未知的类别,同样是提取数据的特征,然后将特征相似的聚成一类,从而聚成几个类别。

另外,分类是有监督学习算法,而聚类是无监督学习的算法。

3. “监督学习”和”无监督学习”

(一) 监督学习

官方提供旅客数据——数据集1(姓名,年龄,性别,社会经济阶层,是否生存等),要求参赛选手建立一个预测模型来回答“另外418名乘客是否会生存?”

这是一个典型的监督学习(supervised learning)的例子。因为该训练资料有输入物件(姓名,年龄,性别,社会经济阶层等)和预期输出(是否生存)。

有无预期输出是监督学习(supervised learning)与非监督学习(unsupervised learning)的区别。


分类问题(离散)与回归问题(连续)等都是监督学习。

(二)无/非监督学习

谷歌新闻利用聚类算法把不同的主题放在一起。