基础概念
上手实践
坐过吗?
机器学习最容易被看见的应用之一
现实里仍然是“监督式”高阶辅助驾驶
Tesla Full Self-Driving (Supervised)
停车场
不是 autonomous
工程师不会消失
必须学会与 AI 协作
模型成本下降
工具更成熟
应用层价值更高
给算法提供有标签的训练数据
让算法从数据中学习如何预测新的输入数据的标签
让计算机学习如何根据已知的答案来预测新的答案
给算法提供无标签的训练数据
让算法从数据中学习如何发现数据之间的相似性和差异性
让计算机从数据中自学如何发现数据的结构和规律
让算法在特定的环境中与环境互动
学习如何采取行动以最大化某种奖励信号
让计算机通过不断尝试和错误来学习如何在特定的环境中做出最佳的决策
定义
从一个数据集到一组预先定义的、非交叠的类别的映射过程
如何对以下的动物聚类?
鸡,金鱼,鹅,鸭子
{鸡} {鹅,鸭子,金鱼}
{鸡,鹅,鸭子} {金鱼}
如何对以下的动物分类?
鸡,金鱼,鹅,鸭子
你不能做
因为你没有「设定类别」
规则系统
机器学习
设定明确的规则
If then else …
对物体检查,符合某规则,就放到指定对应的类别中
简单明了
机器执行起来最为简便
机器很傻
人必须把规则设定得非常清晰明确
如果规则不明确,或者规则有错
后果很糟糕
第欧根尼斯
举了个反例
如果我们人类都不知道该如何定义规则
那该怎么办?
让机器「上自习」
机器学习
给机器示范
标记
数据与标注
评测与反馈
工具编排
应用落地
逻辑回归 Logistic Regression
K 近邻 K-Nearest Neighbors
支持向量机 SVM
朴素贝叶斯 Naive Bayes
决策树 Decision Tree
随机森林Random Forest
神经网络 Neural Network
卷积神经网络 Convolutional Neural Network
循环神经网络 Recurrent Neural Network
Transformers
这门课先把传统分类基础打牢
更系统的内容后续再展开
寻找分类规则
把数据点分到不同区域
经典数据集
鸢尾花
150 个样本
每个样本有 4 个特征
花萼长度
花萼宽度
花瓣长度
花瓣宽度
类别(setosa、versicolor 和 virginica)
特征之间相对独立,没有强相关性,因此可以使用基于线性模型的算法进行处理
类别分布相对均衡,每个类别都有 50 个样本,避免了类别不平衡问题对模型的影响
散点图
目前的数据集,可视化会有什么问题?
4个特征,但是平面只有两个维度
选择两个维度
花萼长度(sepal length)与花萼宽度(sepal width)
fig, axarr = plt.subplots(4, 4, figsize=(15, 15))
plt.subplots_adjust(wspace=0.4, hspace=0.4)
features = iris.feature_names
for i in range(4):
for j in range(4):
if i == j:
axarr[i, j].text(0.5, 0.5, features[i], fontsize=12, ha='center')
axarr[i, j].axis('off')
else:
axarr[i, j].scatter(iris.data[:, j], iris.data[:, i], c=iris.target, cmap=plt.cm.Set1, edgecolor='k', s=20)
if i == 3:
axarr[i, j].set_xlabel(features[j])
if j == 0:
axarr[i, j].set_ylabel(features[i])
plt.show()
手动分类方式
分类之前,要做什么?
推测分类
与标记对比
计算准确率 accuracy_score
这是入门里最直观的指标
真实任务里还要看 precision / recall 等指标
手动改进规则
再次计算准确率
from sklearn.linear_model import LogisticRegression
# Initialize the model
logreg = LogisticRegression(max_iter=200)
# Train the model on the training set
logreg.fit(X_train, y_train)
# Predict on the test set
y_pred_logreg = logreg.predict(X_test)
# Calculate the accuracy
accuracy_logreg = accuracy_score(y_test, y_pred_logreg)
accuracy_logreg
Dtreeviz
可选:另一种可解释可视化风格
今天最让你意外的一个知识点是什么?
你现在最困惑的一个问题是什么?