什么是机器学习?
作为一名 Java 开发者,我第一次接触机器学习时,最大的困惑是:这和我写的业务代码有什么区别?
传统编程 vs 机器学习
| 传统编程 | 机器学习 |
|---|---|
| 人写规则,机器执行 | 机器从数据中学习规则 |
if (温度 > 30) { 开空调() } | 输入历史数据,自动学会何时开空调 |
| 逻辑明确、可预测 | 结果有概率性、需要验证 |
核心概念
1. 监督学习(Supervised Learning)
就像教小孩认动物:
- 给很多张猫的图片,告诉它”这是猫”
- 给很多张狗的图片,告诉它”这是狗”
- 最后让它自己判断新图片是猫还是狗
# 伪代码示意
model.train(cat_images, label="猫")
model.train(dog_images, label="狗")
result = model.predict(new_image) # "猫" 或 "狗"2. 无监督学习(Unsupervised Learning)
不给标签,让机器自己发现规律:
- 把一堆新闻自动分类(机器自己决定分几类)
- 把用户自动分成不同群体
3. 强化学习(Reinforcement Learning)
像训练宠物:
- 做对了给奖励,做错了给惩罚
- AlphaGo 就是这么学会下围棋的
学习资源
推荐资源
- 吴恩达机器学习课程 —— 经典入门
- 《Hands-On Machine Learning》 —— 动手实践