ML--SVM学习小结(二)
来源:互联网 发布:怎么创造软件 编辑:程序博客网 时间:2024/05/21 08:55
-上周推导和总结了svm的基本算法,有了基本的一些概念。这周会贴出一些代码和对KKT条件的一些解读,当然理解还不够深刻,后面有机会会继续做一些探讨。在上周二次规划的课堂作业中,老师也对离散和连续问题之间的关系做了一些描述,有了不同角度的认识。同时入门了一下神经网络,不过这周不打算写出来,还没有对具体的算法做一些具体的探讨。这周毕设的题目出来了,任务是在特定的课题背景下做辐照度预测,下面也会贴一些本周自己做的一些调研和思考。
代码梳理和KKT条件的理解
svm算法本身很有条理,但是和前面一些算法对比起来,他的复杂程度要高出一些,原因在于差值的处理和内外循环的逻辑关系。smo算法的核心其实在KKT条件的解读,它选择两个alpha的理由是围绕这个条件展开的即违背KKT条件程度越大则目标函数值增长越快(这是一篇论文中推出的性质),在代码中体现在对于偏差影响力即具有最大步长。KKT条件是拉格朗日乘子法的泛化,同时也决定了只有对应alpha大于0的时候的这些解才是支持向量上的点,否则alpha都为0。这样也说明了大部分数据点对于超平面的建立没有帮助,只有支持向量。
fXi = float(multiply(alphas,labelMat).T*\(dataMatrix*dataMatrix[i,:].T)) + b#目标函数值Ei = fXi - float(labelMat[i]) #与样本插值
if (labelMat[i] != labelMat[j]): L = max(0, alphas[j] - alphas[i]) H = min(C, C + alphas[j] - alphas[i])else: L = max(0, alphas[j] + alphas[i] - C) H = min(C, alphas[j] + alphas[i])
alphas[i] += labelMat[j]*labelMat[i]*(alphaJold - alphas[j])#alpha1的更新alphas[j] -= labelMat[j]*(Ei - Ej)/etaalphas[j] = clipAlpha(alphas[j],H,L)#alpha2的更新
毕设初步思考
-做了一点点调研。从课题背景摘出来,任务可以简化成评估和预测。
-数据源是nrel官网上的以及nasa官网上(nrel可以直接下载,nasa的数据有些好像只能查询,在考虑爬出来)。然后就是算法。
-初步有个想法,对于非直接的评估应该可以采用特征提取的方法,用类似PCA这类方法找到一个相关性高的参量来表征,然后算出一个definite result。如果是对本身的评估,就找到数据的某种统计特征分析;然后就是预测,本以为是单纯的时间序列预测。开学到现在听了几次学姐们的报告,其中主要矛盾似乎落在了对于阴晴天的分类,里面的一些问题由于没有开始着手做,所以还有很多问题没有考虑到。网上对于这类问题,似乎倾向于用神经网络,特别是一些带有记忆特性的,例如LSTM这类模型。
-当然对于有的明显特征的话,就不能忽略,能用经典的ml算法尝试也未尝不可,但重点我觉得在于对参数的严格考证。之前做的几个算法,对于模型本身的推导并没有太复杂的过程,然而在参数设计以及参数的求解上却花费了很大的功夫,这可能也是ML在特征工程上的一个问题吧。
-下面要做的:(1)数据预处理,初步先用python做,格式的话用numpy或者pandas我觉得都还行;(2)可视化;(3)套用几个模型,看看结果;(4)问题分析,选择算法。还有一段很长的路要走。
小插曲
-最近帮聪哥看文章,虽说是什么资本资产定价模型,有些思想我觉得还是相通的,特别是在假设、建模、参数等方面。虽说看上去有点偏离主题,但是对于这种学科交叉密集的学科拓宽视野感觉也很有必要,课题背景可以千差万别,modeling可以万变不离其宗。=。=随便说说。
- ML--SVM学习小结(二)
- ML--SVM学习小结(一)
- OpenCV学习笔记(二十六)——小试SVM算法ml
- OpenCV学习笔记(二十六)——小试SVM算法ml
- ML学习心得(4)----SVM支持向量机 之二
- ML--决策树学习小结
- ML--LR学习小结
- 支持向量机SVM-机器学习ML
- SVM学习笔记(二)
- opencv7-ml之svm(3)应用
- DL&ML基础学习二
- Andrew Ng机器学习(ML)入门学习笔记(二)
- SVM学习总结(二)SVM算法流程图
- SVM学习总结(二)SVM算法流程图
- Spark ML 分布式机器学习(二):pipeline
- 构建机器学习项目(二)- ML strategy(2)
- SVM学习(二):线性分类器
- SVM学习(二):线性分类器
- Codeforces897B-Chtholly's request
- 设计模式初探之工厂方法模式
- Spring文件AOP编程
- mysql 存储过程调用 mybatis/hibernate
- ubuntu vim命令
- ML--SVM学习小结(二)
- 浅尝TensorFlow on Kubernetes
- 【JavaScript】通过一个例子认识prototype,constructor和instanceof
- 正则表达式及其在python上的应用
- poj1182——食物链
- 反思
- LeetCode #417 Pacific Atlantic Water Flow
- StringBuffer与StringBuilder的区别,及实现原理
- ubuntu chmod更改权限