1. 一
1.1. supervised learn
给出正确答案学习
分为:1. regressiong ; 2. classification
1.2. unsupervised learn
发现数据的不同结构,区分成不同数据
2. 二
2.1. 模型
由 x 推向 y 的引导函数 hθ(x) = θ0 + θ1x
2.2. cost function
均方误差,$\frac{1}{2m}$ 求导时候消去 1/2, 且 cost funtion 不变 $$ \underset{\theta_0, \theta_1}{minimize} \frac{1}{2m} \sum_{i = 1}^{m}(h(x^i) - y^i)^2 $$ 求出使 cost funtions 最小的参数 θ
2.3. gradient descend
$$ \theta_j = \theta_j - \alpha \frac{\partial}{\partial_j}J(\theta_0, \theta_1) \space \space for j = 0 and j = 1 $$
严格要求计算步骤,优先算完右半部分,在计算左半部分赋值

$J(_0, _1) $ 是梯度下降的方向, $$ 沿着下降方向下降的幅度
learn rate α 不需要不断缩小, 因为随着靠近局部最小值, 梯度逐渐下降, 逐渐趋近于 0
batch 梯度下降 考虑了整体训练集
3. 三
3.1. matrix
3.1.1. 边界形式
- pmatrix 小括号
- bmatrix 方括号
- Bmatrix 大括号
- vmatrix 行列式
- Vmatrix 双竖线
- matrix 没有边界符号, 使用
\left[\right]增加边界
3.1.2. 元素
- & 分割同行元素
\\分割列元素- 省略号
\dots水平省略号\vdots垂直省略号\ddots对角省略号
$$ \begin{pmatrix} a & b & \dots& c \\ \vdots & \vdots & \ddots & \vdots\\ a & b & \dots&c \end{pmatrix} $$
3.1.3. slice
eg : $$ \begin{bmatrix} 1 & 2 & 3 \\ 11 & 12 & 13 \\ 11 & 12 & 13 \\ 4 & 5 & 6 \end{bmatrix} $$
- dim = row * columns , 即为 4* 3
- Aij 表示 ith row ,jth columns 的元素
3.2. compute
- scalar multiplication / division / addition / subtraction
- addtion / subtraction 需要 matrix dim 相同
3.2.1. matrix * vector
h(x) = θ0 + θ1 * x
矩阵乘法表示为 $$ \begin{matrix} [1, x]* [\theta_0, \theta_1]^t \end{matrix} $$
- [1, x] 中每组数据与 θ 相乘,所以 顺序为 x * θ
- 常数项 θ 表示该特征 始终为 1
3.2.2. matrix * matrix
有多个 hypothesis 函数 $$ h_1(x) = \theta_{0,1} + \theta_{1,1} * x \\ h_2(x) = \theta_{0,2} + \theta_{1,2} * x \\ h_3(x) = \theta_{0,3} + \theta_{1,3} * x $$ 参数组成矩阵 $$ \begin{bmatrix} \theta_{0,1} & \theta_{0,2} & \theta_{0,3} \\ \theta_{1,1} & \theta_{1,2} & \theta_{1,3} \\ \end{bmatrix} $$ 使用 matrix 表示 [1, x] * [theta0, theta1, theta2]T
4. 四
4.1. more feature
x = [x0, xi, …, xn]
hypothesis 修改为 h(x) = θ0 + θ1 * x1 + θ * xn, 其中 define x0 = 1
所以,h(x) = θt * x
4.2. gradient descend
$ h(x) = x $ $$ L(x) = \underset{\theta}{minimize} = \frac{1}{2m} (\sum{h(x) - y})^2 $$
$$ \frac{\partial}{\partial \theta} L(x) = m(\sum(h(x) -y ))* X $$
θ = θ − m(∑(h(x) − y)) * X
4.3. feature scaling
数据进行归一化,数据的差距缩小,使用梯度下降速度更快
因此,数据训练前,一定需要对数据进行归一化
归一化方法 $$ minmax = \frac{x - min}{min-max} 缩放到(0,1)\\ stand = \frac{x - u}{\sigma},符合正太化分布 \\ $$ 鲁棒归一化 $$ robust = \frac{x- median(x)}{IQR(x)}\\ median(x) 是 x 的中位数 \\ IQR(x) = Q_3 - Q_1 $$
4.4. learn rate
确定模型收敛情况:
- 绘制图形观察
- 自收敛测试, 当一次 iteration 收敛到一定值时,自动停止
测试不同的 $$ , 观测收敛情况
4.5. more feature
- 使用更多的 feature , $ h(x) = _0 + _1 * feature_1 + _2* feature_2$
- 使用 polynomial feature 拟合, 使用 feature 的多项式拟合, $ h(x) = _0 + _0 * feature_1 + _2 * feature_1^2 + _3 * $
4.6. normal equation
用于求解Loss 函数的最小值θ ,
| gradient descend | normal equation |
|---|---|
| 需要 learn rate | |
| 需要many iterations | 直接计算 |
| 使用面广 | 只适用于较小的feature , |
θ = (XT * X) − 1XT * y
难点在于XT * X , X 是 m * n 矩阵, XT * X 矩阵维度为$n*n $ ,与特征维度有关, 矩阵求逆的复杂度O(n3), 仅适用于较小feature
4.6.1. Xt * X non-invertible
- redundant feature ,重复相关的feature ,删除相关的feature
- number <= feature ,特征数量较少, 增加数据/减少特征/正则化
5. 五
5.1. operation
~非 相当于!sprintf("string %0.2f", a)格式化自负床
5.1.1. 生成矩阵
或者’,’ 分割行 [1 2 3]- ‘;’ 分割列 [1; 2; 3]
v = 1 : 6, 生成【1,6】数组- ones(2, 3) , zeros(2, 3), rand(2,3), randn(2,100)
- eye(2)
hist(data, n), 绘制n 各方格立方图
help eye
5.1.2. data
- size(data, dim) ,
- length(vector), length(data), 返回最大matrix
- load ‘xxx.mat’, save ‘xxx.mat’ xxx, 文件名只能使用 ’’
- who 显示变量, whos 显示变量详细
- A() , 使用() 取出元素, A([1,2], :) 取出1,2 所有元素
- 数组拼接 A = (A, B) , 列拼接, A= (A;B)行拼接
5.1.3. compute
- * 矩阵乘法, .* 点乘,
- find(A) 矩阵中为1 的元素,
- max(A, [], dim), 默认列方向, sum(A,dim), prod(A)
- float() 抹去小数点, ceil(A) 进位
5.1.4.
plot(x, y, ‘color’) , xlabel, ylabel, title(), figure(1), hold on , subplot(1, 2, 1), axis([x1, x2, y1, y2]), imageesc(), colorbar, colormap gray
5.1.5. control
for i = i :10
pass
end
if 表达式
elseif 表达式
else
while 表达式
end
function [y1, y2] = name(x)
y = x;
y = x;
end
addpath
6. classification
y取值于0,1,2固定值
预测值 ∈ [0, 1], 使用threshold 区分区间确定类型
regression问题
预测曲线受极值影响
y ∉ [0, 1],
因此使用, Logistic Regression
6.1. logistic / sigmoid function
$$ g(x) = \frac{1}{1+e^{-x}} $$
函数图像,g(x) ∈ [0,1]
h(x) 定义,在输入x 情况,预测为 y = 1的概率,p(y = 1|x, θ)
y = 0 的概率为 1- h(x)
6.2. decision boundary
决策边界 由 θ 参数决定, 计算出θ 获得决策边界
6.3. cost function
$$ L(x) = \frac{1}{2m} \sum_{i=1}^{m}cost(h_\theta(x), y) $$
cost function 尽可能为 convex function ,便于之后梯度优化
regression 中 cost(h(x), y) = (h(x) − y)2
classification 中, 使用 MSE ,不是一个convex function ,不利于之后优化 $$
cos(h_\theta(x), y) = \begin{cases}
-log(h_\theta(x)) & \text{if } y = 1 \\
-log(1 - h_\theta(x)) & \text{if } y = 0
\end{cases}
$$ 
6.4. gradient descend
cost function 等价为 $$ cost(h(x), y) = -y* log(h(x)) -(1-y) log(1-h(x))\\ L(\theta) = -\frac{1}{2m}[\sum_{i=1}^{m}y* log(h(x)) +(1-y) log(1-h(x)) ] $$ 求导后的结果,求导过程省略,太麻烦了, 求导结果 和 regression cost function 求导结果一致 $$ \frac{\partial}{\partial_\theta} L(\theta) = \sum_{i=1}^{m} (h_\theta(x) - y) x $$ 梯度下降公式 $$ \theta = \theta - \alpha * \sum_{i=1}^{m} (h_\theta(x) - y) x $$
6.5. advanced optimization
- gradient descent
- conjugate descent
- BFGS
- L-BFGS
优点:
- 自动选择$$
- 优化速度更快
缺点: 内部复杂
6.5.1. 编写cost function
function [jVal, gradient] = costFunction(theta)
% 需要返回函数值,和梯度下降值
jVal = (theta(1) - 5)^2;
gradient = zeros(2,1);
gradient(1) = 2*(theta(1) - 5);
end
% 编写优化函数
options = optimset('GradObj', 'on', 'MaxIter', 100); % 优化选择参数
initialTheta = zeros(2,1); % 初始值
[optTheta, functionVal , exitFlag] = fminunc(@costFunction, initiatTheta, options);
6.6. more class
one vs all
分类三种类别 1, 2, 3 拆分为三个分类
- 1 - rest
- 2 - rest
- 3 - rest
then , max h3(x) 作为最终结果
7. 七
7.1. overfit

使用test 验证是否出现了过拟合
一个原因: 数据量 < 特征数量
- 人为减少特征数量
- 使用正则化,保留特征,减少$ values$
7.2. regulation
参数θ 使用更小的值,
- 模型更简单
- 减少过拟合
在损失函数中 增加对 θ 的约束
$ L() = [{i=1}{m}(h_{}(x{(i)}- y{(i)})2 + {j = 1}^{n} _j^2)]$
7.2.1. 使用normal function
公式如下:$ y = x * ^t$
求解公式 : $$ \theta = (X^T*X + \lambda * \begin{pmatrix} 0 & 0 & \dots& 0 \\ 0 & 1 & \dots& 0 \\ \vdots &\vdots & 1 & \vdots \\ 0 & 0 & 0 & 1 \end{pmatrix} )^{-1} * X^Ty $$
7.3. 八
7.3.1. 神经网路
线性回归缺点: 当 特征维度较高时, 特征数量较多
线性回归只适合较为简单的函数,维度较高的函数,二次项组合数量较多
neural networks:接收一定信息,通过一定算法训练,能够处理接受的信息
7.3.2. neuron model
7.3.2.1. 神经元
- input: 输入数据
- 神经元处理: h(x), 使用激活函数 (sigmoid/ logistic)
- output: 输出结果
7.3.2.2. 神经网络
- 输入层: 输入数据
- 中间层: 中间处理过程
- 输出层:输出结果
每一层之间使用转移矩阵进行连接,例如输入层X, 中间层A $$ A = \theta^1* X \\ \theta^1 \in R^{3,4} $$
7.3.2.3. 中间层组合
一层神经元可以表示一个神奇的表达式
多个简单层组合,表示更为复杂的层 λ * A = λ * α
8. 九
8.1. 代价函数
神经网络有K个输出, 所有 需要 Yk 进行标识
所以,交叉熵增加输出维度 K $$ J(\theta) = -\frac{1}{m}[\sum_{i=1}^m\sum_{k=1}^k y_k^{(i)}* log(h_\theta(x^{(i)})_k) + (1- y_{k}^{(i)} )log(1-(h_\theta(x^{(i)})_k))] + 多所有权重进行正则化 $$ 所有权重正则化公式: $$ \frac{\lambda}{2m}\sum_{l=1}^{l-1} \sum_{i = 1}^{s_l}\sum_{j=1}^{s(l+1)}(\theta_{i,j}^{(l)})^2 $$ 表示 对 第l 层, 第L层中θ 维度为(sl, sl+1)