机器学习实战

第一章 机器学习概览

    1. 机器学习系统的分类

是否在人类监督下学习

监督式学习,分类和预测变量,eg,K-Nearest Neighbors, linear regression,logistic regression, SVM, decision trees and random forest, neural network

无监督学习,聚类:K-means, Hierarchical cluster tree, expectation maximization,降维和可视化 pca, kernek pca, LLE, t-SNE, 关联规则学习Apriori, Elcat,检测异常值

半监督学习,eg. 深度信念网络中的受限玻尔兹曼机(RBM)
强化学习,

是否动态进行增量学习

批量学习:全批量
在线学习:小批量

基于实例的学习和基于模型的学习

基于实例:记住样例,根据相似度对新的实例进行泛化。
基于模型:调整参数,适配训练集

    1. 主要挑战
  1. 训练数据不足
  2. 训练数据不具代表性
  3. 数据质量差:无关特征
  4. 训练数据过拟合(简化模型(减少参数,减少属性变量,约束模型),收集更多数据,减少数据中的噪音)
  5. 训练数据拟合不足(选择更多参数的模型,给学习算法更好的特征集(特征工程),减少模型中的约束)
    1. 测试与验证
      测试集和训练集

交叉验证

第二章 端到端的机器学习项目

    1. 使用真实数据

观察大局

框架问题:回答机器学习分类的问题

选择性能指标: 均方根误差RESM L2,平均绝对误差MAE L1

检查假设

    1. 获取数据

下载数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import os 
import tarfile
from six.moves import urlib

DOWNLOAD_ROOT = "https://raw.githubusercontent.com/ageron/handson-ml/master/"
HOUSING_PATH = "datasets/housing"
HOUSING_URL = DOWNLOAD_ROOT + HOUSING_PATH + "/housing.tgz"

def fetch_housing_data(housing_url=HOUSING_URL,housing_path=HOUSING_PATH):
if not os.path.isdir(housing_path):
os.makedirs(housing_path)
tgz_path=os.path.join(housing_url,"housing.tgz")
urlib.request.urlretrieve(housing_url,tgz_path)
housing_tgz=tarfile.open(tgz_path)
housing_tgz.extractall(path=housing_path)
housing_tgz.close()

## 加载数据
import pandas
def load_housing_data(housing_path=HOUSING_PATH):
csv_path = os.path.join(housing_path,"housing.csv")
return pd.read_csv(csv_path)

查看数据

1
2
3
4
5
6
7
8
9
dataframe.head()
dataframe.info()
dataframe.describe()

## 注意标签的最值,以及数据的分布。
%matplotlib inline
import matplotlib.pyplot as plt
housing.hist(bins=50,figsize=(20,15))
plt.show()

创建数据集

创建抽样数据集的时候考虑分层抽样,而非纯随机抽样。
分层抽样需要包含每一层具有足够的数据,不至于重要信息被遗漏。

    1. 从数据探索和可视化中获得洞见

将地理数据可视化

可视化数据,可以将alpha设置为0.1,从而看密度情况,也可以将简单聚类来看。

寻找相关性