第一周 AI 学习总结:从理论到实战
引言
作为一名拥有近7年开发经验的程序员,我曾在美团工作4年,目前在字节跳动已经快3年。在应用开发领域,我已经积累了丰富的经验,但近年来逐渐感受到职业发展的瓶颈。与此同时,我所在的部门也在积极探索 AI 相关项目,这让我意识到,人工智能不仅是行业的未来趋势,也是我个人职业发展的新方向。
为了突破瓶颈、提升竞争力,我决定主动学习人工智能相关知识。第一周的学习主要集中在机器学习的基础知识和实战应用上。通过吴恩达的机器学习课程和 Kaggle 的实战项目,我对监督学习、无监督学习、线性回归、决策树等核心概念有了初步的理解,并通过房价预测项目体验了机器学习的完整流程。以下是我的学习总结和心得体会。
一、学习资料与思路
1. 学习资料
- 文字资料: Kaggle 网站上的入门教程。
- 视频资料: B 站上的《吴恩达机器学习》课程。
2. 学习思路
- 理论结合实战: 通过吴恩达的课程学习机器学习的基础理论,结合 Kaggle 的实战项目巩固知识。
- 从简单到复杂: 从线性回归、决策树等基础模型入手,逐步深入理解机器学习的核心概念。
二、核心知识总结
1. 机器学习基础
-
机器学习是什么?
- 机器学习是人工智能的一个子领域,核心思想是通过数据训练模型,让计算机从数据中学习,而不是通过明确的编程规则。
- 根据数据是否有标签,机器学习可以分为:
- 监督学习: 从带标签的数据中学习,用于预测新数据的输出。
- 无监督学习: 从无标签的数据中学习,用于发现数据的潜在结构。
-
监督学习 vs 无监督学习
方面 监督学习 无监督学习 数据要求 需要标注数据(输入和输出) 不需要标注数据 目标 预测新数据的输出 发现数据中的结构或模式 典型任务 回归、分类 聚类、降维 示例 房价预测、垃圾邮件分类 客户分群、图像压缩
2. 监督学习:线性回归
-
线性回归模型:
- 用于预测连续值,目标是找到一条直线,使得预测值与真实值之间的误差最小。
- 关键词:
- 模型: ( y = wx + b )
- 损失函数: 均方误差(MSE),用于衡量预测值与真实值之间的误差。
- 目标: 通过梯度下降算法找到损失函数的最小值。
-
梯度下降算法:
- 通过迭代更新模型参数(( w ) 和 ( b )),逐步减小损失函数的值。
- 学习率:
- 学习率过小:训练速度慢。
- 学习率过大:可能导致无法收敛。
3. 无监督学习:聚类
- 聚类:
- 将数据分为不同的组,使得同一组内的数据相似,不同组之间的数据差异较大。
- 常用算法: K-Means、层次聚类。
4. 机器学习流程
- 1. 加载数据: 使用 Pandas 读取 CSV 文件。
- 2. 选择模型: 根据任务选择合适的模型(如决策树、随机森林)。
- 3. 训练模型: 将训练数据传递给模型进行训练。
- 4. 预测结果: 使用测试数据进行预测。
- 5. 评估模型: 使用评估指标(如 MAE、MSE)衡量模型性能。
三、实战项目:房价预测
1. 项目概述
- 目标: 预测墨尔本房价。
- 数据集: Kaggle 提供的 Melbourne Housing 数据集。
- 工具: Pandas、Scikit-learn。
2. 核心代码
# 导入库
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_absolute_error
# 读取数据
melbourne_file_path = "../data_set/melb_data.csv"
melbourne_data = pd.read_csv(melbourne_file_path)
# 选择特征和目标变量
melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']
X = melbourne_data[melbourne_features]
y = melbourne_data.Price
# 划分训练集和测试集
train_X, val_X, train_y, val_y = train_test_split(X, y, random_state=0)
# 训练决策树模型
melbourne_model = DecisionTreeRegressor(random_state=1)
melbourne_model.fit(train_X, train_y)
# 预测并评估模型
val_predictions = melbourne_model.predict(val_X)
val_mae = mean_absolute_error(val_y, val_predictions)
print(f"Mean Absolute Error: {val_mae}")
四、学习心得
- 理论与实践结合: 通过吴恩达的课程学习理论,再通过 Kaggle 的实战项目巩固知识,这种学习方式非常高效。
- 从简单到复杂: 从线性回归、决策树等基础模型入手,逐步深入理解机器学习的核心概念。
- 工具的重要性: Pandas 和 Scikit-learn 是机器学习中非常强大的工具,熟练掌握它们可以大大提高开发效率。
五、下一步计划
- 深入学习: 继续学习吴恩达的课程,了解逻辑回归、支持向量机等算法。
- 更多实战: 尝试 Kaggle 上的其他项目,如图像分类、自然语言处理。
- 分享与交流: 将学习笔记和项目经验分享到博客或社区,与更多人交流。
结语
第一周的 AI 学习让我对机器学习有了初步的了解,也让我意识到这是一个充满挑战和机遇的领域。希望通过持续的学习和实践,我能够在这个领域取得更大的进步。如果你也对 AI 感兴趣,欢迎一起交流学习!