机器学习方法很多但刚入门时可以先问一个非常实用的问题训练数据里有没有标准答案这个问题把常见任务分成了监督学习和无监督学习。视频讲解在官网观看本课视频监督学习拿着答案练习监督学习使用带标签的数据训练模型。例如垃圾短信识别的数据可能长这样短信内容标签您的验证码是 3812正常短信恭喜中奖点击链接领取垃圾短信短信内容是输入标签是正确答案。模型先作出预测再把预测和答案比较根据错误调整参数。常见监督学习任务包括分类预测类别回归预测连续数值图像识别、文本分类和价格预测。无监督学习没有答案自己找结构无监督学习的数据没有预先给出的标签。模型要做的是发现样本之间的结构、相似性或分布规律。例如商店拥有大量用户消费记录却没有给用户分类。聚类算法可以根据消费习惯把相似用户分到同一组。常见无监督学习任务包括聚类降维异常检测数据分布探索。两者不是谁更高级它们解决的是不同问题。有明确答案并且希望预测新样本时通常考虑监督学习没有标签只想探索数据结构时可以考虑无监督学习。现实项目还会遇到半监督学习、自监督学习和强化学习。初学阶段不必一次记完先掌握“有没有人工提供的答案”这条主线。最容易混淆的地方“监督”不是有人盯着电脑训练而是数据中存在用于监督模型学习的目标值。无监督学习也不是随便学习。它仍然有明确的算法目标例如让同一组里的样本更相似、不同组之间差异更大。从数据结构看两种学习方式监督学习与无监督学习都有输入数据。真正的分界线是训练数据里有没有目标标签。用同一批数据运行分类与聚类下面用六个二维点分别完成监督分类和无监督聚类import numpy as np from sklearn.cluster import KMeans from sklearn.linear_model import LogisticRegression x np.array([ [1.0, 1.0], [1.0, 2.0], [2.0, 1.0], [8.0, 8.0], [8.0, 9.0], [9.0, 8.0], ]) y np.array([0, 0, 0, 1, 1, 1]) # 监督学习训练时同时使用特征 x 和标签 y classifier LogisticRegression(random_state0) classifier.fit(x, y) print(监督预测, classifier.predict([[1.5, 1.2], [8.5, 8.2]])) # 无监督学习训练时只提供特征 x clusterer KMeans(n_clusters2, random_state0, n_init10) print(无监督分组, clusterer.fit_predict(x))安装并运行pip install numpy scikit-learn python 03_supervised_unsupervised.py一组可能的结果是监督预测 [0 1] 无监督分组 [1 1 1 0 0 0]聚类结果中的0和1只是分组编号交换编号也不影响分组含义。监督学习的0和1则来自预先定义好的真实标签。三个常见误区没有测试集就是无监督学习。是否无监督取决于训练时有没有标签不取决于是否划分测试集。聚类编号就是类别含义。聚类只形成分组编号本身没有“正常”或“垃圾”等业务意义。无监督学习不需要目标。聚类仍然需要优化组内相似、组间差异等数学目标只是没有人工标签。这一课先记住什么有标签、需要学习输入到答案的映射监督学习。没有标签、需要发现数据内部结构无监督学习。下一课继续拆分监督学习分类和回归到底有什么不同。本文首发于「去你想去的地方」 监督学习与无监督学习是什么关键区别在有没有答案 | 去你想去的地方完整学习路线、视频版和后续更新请访问原文。