线性回归
面对一堆输入、输出数据集合D,构建一个模型T,使得T尽可能地拟合D中输入数据和输出数据的关系。其模型可以用下列公式表示:
y
=
w
1
∗
x
+
w
0
y = w1 * x + w0
y=w1∗x+w0
这里的w1和w0是回归系数。线性回归就是通过对训练集的学习,获得这两个权值。线性回归的目的就是求得一条拟合线,使得预测值和真实值之间的误差尽可能的小。求解这样的一条拟合线,常用的方法是最小二乘法。其主要思想是选择未知参数,以某种策略使得理论值和测量值之差的平方和达到最小。这样一来,线性回归的损失函数可表达为下式:
H
m
i
n
=
s
u
m
(
y
−
y
′
)
=
s
u
m
(
y
−
w
1
∗
x
−
w
0
)
Hmin = sum(y - y') = sum(y - w1 * x - w0)
Hmin=sum(y−y′)=sum(y−w1∗x−w0)
对于求解公式最小化问题,一般采用两种方法。第一种方法是‘解析法’,就是根据极值存在的必要条件,对损失函数的参数(w0和w1)进行求导,得到参数方程,然后将参数方程为0,将最小化问题转化为方程组求解问题。通过求解得到w1可以用下式表达:
K-近邻算法
原理是给定一个集合,对于新输入的实例,在这个集合中找k个与该实例最近的邻居,然后判断这k个邻居大多属于某一类,于是这个新输入的实例就‘随大流’的自动分为这一类。所以从原理就能看出K-近邻算法的三个主要元素分别是:K值的选择、邻居距离的度量以及分类决策的制定。
K值的选择:
K值较小,算法的鲁棒性较差,容易发生过拟合现象;K值较大也会增大鲁棒性,容易受噪声和其他类的实例的影响。目前一般采取交叉验证的方式来选择K值(若干次检查验证,选取平均误差最小所对应的K值);
邻居距离的度量
要计算距离,就要求所有特征都可量化,对于非数值类型的特征要尽量将其量化。对于不同的特征,取值范围也会不同,身高差10cm不能等同于体重差10kg,所以一般需要对特征进行归一化处理。归一化的机制很多,最简单的方法如下公式:
对于距离的度量有不同的方式,计算方式的不同,也会显著的影响谁是实例的“最近邻”。对于n维样本xi和xj之间的距离L,有如下几种计算方式:
-
p维:当p为2是,就是常见的欧式距离;
-
曼哈顿距离:
-
马氏距离:
-
海明距离:常用于文本分类中,计算两个字符串对应位置的不同字符的个数。也就是说将一个字符串替换成另一个字符串所需要替换的字符个数。
上面是笔者在书中介绍的几种距离的计算方式。距离的计算方式还有切比雪夫距离、闵可夫斯基距离、夹角余弦、杰卡德距离 & 杰卡德相似系数、相关系数 & 相关距离、信息熵等。
Python知识
格式化的符号及意义
格式符号 | 表示类型 |
---|---|
%s | 格式化字符串 |
%c | 格式化字符及ASCII码 |
%d | 格式化十进制整数 |
%o | 格式化八进制整数 |
%x/%X | 格式化十六进制整数 |
%e/%E | 科学计数 |
%f/%F | 浮点数 |
%% | 输出% |
m.n | m为显示的最小整数的宽度,n是小数点后的位数 |
- | 输出结果左对齐 |
+ | 在正数前面显示加号 |
# | 在八进制数前面显示‘0o’字样,十六进制数前显示‘0X64’字样 |
0 | 在输出数字前填充0代替空格 |