统计学习对象
统计学习对象是数据,从数据出发,提取出特征,抽象出数据模型,发现数据知识,用于对回溯的分析和预测中
统计学习方法
- 获取新年数据集合
- 确定所有可能包含模型的假设空间,即学习模型的集合(模型)
- 确定模型选择准则(策略)
- 实现最优求解模型的算法(算法)
- 选择最优模型
- 利用最优模型分析预测新数据
监督学习
每一个输入实例由一个输入向量表示
- 回归:输入输出变量均为连续值
- 分类:输出变量为有限哥离散值
- 标注:输入输出变量均为变量序列
统计学习基本假设:训练数据与测试数据独立同分布
统计学习三要素:模型,策略,算法
常见损失函数
期望损失
经验损失
由大数定律,样本增加,经验损失趋近(依概率收敛)于期望损失
结构风险(奥卡姆剃刀原则)
- 经验风险小的模型在小数据集上容易过拟合,结构风险最小化等价于正则化
- 结构风险在经验风险的基础上增加增加模型复杂度正则化项(罚项)
训练误差与测试误差
- 泛化能力:对未知样本的预测能力
- 泛化误差:本质是模型的期望风险
生成模型与判别模型
判别模型是数据得出决策函数f(x)或者条件概率分布P(Y/X)作为预测的模型
分类指标
感知机:
二分线性分类,判别模型,误分类驱动,随机梯度下降优化
感知机函数
感知机损失函数
损失函数:误分类点集到超平面的距离和
感知机损失函数
感知机学习算法
感知机学习对偶形式
对偶思想:将W,b表示为实例x,y的线性组合,通过求解系数求出W,b
COMMNETRS
KNN
基于实例的学习,消极学习,记忆已有点特征
距离度量方式
算法
- k值选择:过小分类效果不佳,过大容易过拟合,交叉验证选择K
- 分裂决策:多数表决规则(本质经验风险最小化)
kd树
k维超空间地柜划分,每次选取一个特征的中位数在该特征维度上切分,递归切分至子区域无实例,得到平衡KD树
kd树构造
kd树搜索,从根开始自顶向下搜索目标节点,找到目标节点之后,反向向上查找紧邻点至根节点
COMMENTS
KNN简易实现
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
ID3算法在各个节点选择信息增益最大的特征构建分类节点,递归构建决策树,直到所有特征增益都很小或者无特征可选择
算法步骤
C4.5
C4.5与ID3的差别只在特征选择标准有信息增益换成了信息增益比
剪枝
剪枝一般通过极小化决策树整体的损失函数或者代价函数实现
损失函数
- a 用于平衡模型复杂度和损失函数,值越小越促进选择复杂模型
CART
决策树:递归构建二叉决策树,回归树用平方误差最小化,分类树用基尼系数最小化进行特征选择
回归树
最小二乘回归:在某个特征的的某个点上切分输入空间使得平方误差最小
回归树算法步骤
最优切分变量,最优切分点,最小二乘回归,二叉分类
分类树
CART树算法