统计学习对象是数据,从数据出发,提取出特征,抽象出数据模型,发现数据知识,用于对回溯的分析和预测中
- 获取新年数据集合
- 确定所有可能包含模型的假设空间,即学习模型的集合(模型)
- 确定模型选择准则(策略)
- 实现最优求解模型的算法(算法)
- 选择最优模型
- 利用最优模型分析预测新数据
统计学习基本假设:训练数据与测试数据独立同分布
由大数定律,样本增加,经验损失趋近(依概率收敛)于期望损失
- 经验风险小的模型在小数据集上容易过拟合,结构风险最小化等价于正则化
- 结构风险在经验风险的基础上增加增加模型复杂度正则化项(罚项)
判别模型是数据得出决策函数f(x)或者条件概率分布P(Y/X)作为预测的模型
二分线性分类,判别模型,误分类驱动,随机梯度下降优化
对偶思想:将W,b表示为实例x,y的线性组合,通过求解系数求出W,b
基于实例的学习,消极学习,记忆已有点特征
- k值选择:过小分类效果不佳,过大容易过拟合,交叉验证选择K
- 分裂决策:多数表决规则(本质经验风险最小化)
k维超空间地柜划分,每次选取一个特征的中位数在该特征维度上切分,递归切分至子区域无实例,得到平衡KD树
kd树搜索,从根开始自顶向下搜索目标节点,找到目标节点之后,反向向上查找紧邻点至根节点
from math import sqrt
from collections import Counter
import matplotlib.pyplot as plt
def raw_majority_vote(labels):
votes = Counter(labels)
winner, _ = votes.most_common(1)[0]
return winner
def majority_vote(labels):
#select the majority label
vote_counts = Counter(labels)
winner, winner_count = vote_counts.most_common(1)[0]
num_winners = len([count
for count in vote_counts.values()
if count == winner_count])
if num_winners ==1:
return winner
else:
return majority_vote(labels[:-1])
def distance(point, new_point):
dis = sum([(x-y)**2
for x, y in zip(point, new_point)
])
return sqrt(dis)
def knn_classify(k, labeled_points, new_point):
# ordeed by distance
by_distance = sorted(labeled_points, key= lambda (point, _):distance(point, new_point))
# k labels for k-min distance
k_nearest_labels = [labele for _, labele in by_distance[:k]]
return majority_vote(k_nearest_labels)
cities = [
([-122.3 , 47.53], "Python"),
([ -96.85, 32.85], "Java"),
([ -89.33, 43.13], "R"),
([-120.3 , 35.53], "Python"),
([ -46.85, 72.85], "Java"),
([ -39.33, 33.13], "R"),
([-234.3 , 87.53], "Python"),
([ -46.85, 72.85], "Java"),
([ -39.33, 53.13], "R"),
]
for k in [1, 3, 5, 7]:
num_correct = 0
for city in cities:
location, actual_language = city
other_cities = [other_city
for other_city in cities
if other_city != city]
predicted_language = knn_classify(k, other_cities, location)
if predicted_language == actual_language:
num_correct += 1
print k, "neighbor[s]:", num_correct, "correct out of", len(cities)
条件独立假设:用于分类的特征之间条件独立
先验概率和条件概率均为对总体的数据分布的极大似然估计,训练样本存在偏差的话,整体泛化效果会差
朴素贝叶斯属于生成模型
参数为1时成为拉普拉斯平滑
- 决策树学习过程:特征选择、决策树生成、决策树剪枝(避免过拟合,增加泛化能力)
- 决策树的生成考虑局部最优,剪枝考虑全剧最优
信息增益:已知特征X的信息使得类Y信息不确定性减小的程度
ID3算法在各个节点选择信息增益最大的特征构建分类节点,递归构建决策树,直到所有特征增益都很小或者无特征可选择
C4.5与ID3的差别只在特征选择标准有信息增益换成了信息增益比
剪枝一般通过极小化决策树整体的损失函数或者代价函数实现
- a 用于平衡模型复杂度和损失函数,值越小越促进选择复杂模型
决策树:递归构建二叉决策树,回归树用平方误差最小化,分类树用基尼系数最小化进行特征选择
最小二乘回归:在某个特征的的某个点上切分输入空间使得平方误差最小
最优切分变量,最优切分点,最小二乘回归,二叉分类