Summary:
- unspervised learning
- clustering(聚类算法)
- Anomaly detection(异常检测)
- Recommender Systems(推荐系统)
- Reinforcement Learning(强化学习)
一 、 K-means算法
1.Notion
a) K-means做的
k-means重复做的两件事中
第一件:是分配簇质心,然后将样本点距离近的变成相关的颜色
第二件:重新遍历所有相同类型的点,然后取平均值,选出新的簇质心,检测每个点距离谁最近
b) some symbol & cost function
2. k-means 聚类的步骤
a) Random initialization k
簇质心随机选择样本中的点,然后循环多次选择不同的样本为簇质心,用于来找到 J 最小的时候的簇质心,次数如果太多也会降低效果
b ) how many k do we need ?
i . elbow method(肘部法则)
当我们将k 从1增加到m时候,代价函数 J 的函数图像会从大到小的递减,函数会有一个从递减迅速到缓慢的点,类似于人类的肘部 (但是有时很多J都是平缓下降的 没有肘部)
二 、 Anomaly detection
1. notion
如何计算正态分布的两个变量
2. 计算步骤
- 首先算出每一个特征的均值和方差
- 利用每个特征的方差和均值算出某一个样本中的概率p(x)
- 用计算出的p(x)和阈值比较,如果满足则表示有问题
- 查看算法在交叉验证集中没能检测出的异常,然后考虑是否需要新建一个特征,使得发现这些异常
- 原理: 算出每个样本的feature相较于所有样本中的异常大或者小的feature,然后p(x)乘出来会很小所以标记为异常
3. algorithm evaluation system(异常评估系统)
4 . Anomaly detection VS supervised learning
a) how to choose right algorithm
- 当有很少的正样本时,异常检测算法通常是更合适的选择,负样本用于算p(x)的参数,而正样本只用于测试集中的交叉验证集,用于参数调整和评估
- 异常检测适用于经常出现新的异常,以前样本不包含的异常,而监督学习适用于垃圾邮件类对类型基本不变的情况
5. choose feature
因为异常检测算法很难找出要忽略的特征 所以选择特征是很重要的
首先根据plt.hist函数画出直方图,查看是否类似高斯曲线,如果是则可以直接用,如果不是则对x进行变化,变成x的函数。最后再形成高斯曲线的形式
三、Recommended systems (推荐系统)
1.notion
2. 协同过滤算法
假如我们无法从样本中获取足够的特征时候,怎么才能使用线性回归来
a) cost function
b) gradient descent
3. Mean Normalization(均值归一化)
作用: 当新用户进行预测时,会直接全部都预测为0,但均值归一化会出手,使得等于已评价用户的平均值。
4. build collaborative filtering algorithm by tensorflow
5 . 协同过滤和基于内容的协同过滤对比
6 . 从大型目录中推荐
第一步:检索,找到许多大范围的可以推荐的相似电影
第二步:排名,将用户和检索到的电影的特征向量都输入到这个神经网络中去,得到用户对电影的评分预测值
四 、 Reinforcement learning
做一个奖罚机制,告诉他什么时候做的好,什么时候做不好,在学习的过程中,经常会看到四个变量:状态,行动,奖励,下一个状态
1 . reward of reinforcement learning
最终的奖励不仅仅是单独和目的地的值有关,还有到达的时间有关,奖励等于一步一步的时间的加权值到最后终点的值的乘积
2 . decision on reinforcement learning
找到一个函数,告诉我们程序下一步需要往哪里
3 . import notation
4 . State action value function(状态动作价值函数)
**Q(state,action)**在某个状态时做出不同动作得到的奖励,如果有办法计算每一个状态的不同动作对应的Q(s,a)则可以得到最大的奖励
5 . Bellman Equation (贝尔曼方程)
a)notion
b) Explanation of Equation
c) random or stochastic environments(模拟随机的环境)
因为实际的环境中,机器不能完全按照我们的思想去进行,有一定的概率犯错,所以最大化的奖励需要取好多次折扣奖励的平均值,也叫期望
6. 算法的改进
a)mini-batch
既可以用于supervised learning 也可以用于强化学习
作用: 监督学习中,当数据量很大的时候,做梯度下降时,每次只看前一次的数据集的子集,所以迭代的更快
b) soft-update
强化学习算法更好的收敛
a)mini-batch
既可以用于supervised learning 也可以用于强化学习
作用: 监督学习中,当数据量很大的时候,做梯度下降时,每次只看前一次的数据集的子集,所以迭代的更快
b) soft-update
强化学习算法更好的收敛