cs229 斯坦福机器学习笔记(一)-- 入门与LR模型
版权声明:本文为博主原创文章,转载请注明出处。
https://blog.csdn.net/Dinosoft/article/details/34960693
前言
!= 好入门的资料,Andrew Ng在coursera有另外一个机器学习课程,更适合入门。
课程有video,review questions和programing exercises,视频尽管没有中文字幕,只是看演示的讲义还是非常好理解的(假设当初大学里的课有这么好。我也不至于毕业后成为文盲。。)。最重要的就是里面的programing
exercises,得理解透才完毕得来的,毕竟不是简单点点鼠标的选择题。
只是coursera的课程屏蔽非常一些比較难的内容,假设认为课程不够过瘾。能够再看看cs229的。这篇笔记主要是參照cs229的课程。但也会穿插coursera的一些内容。
线性回归 linear regression
那假设如今要你来评估一套二手房的价格(或者更直接点。你就是一个卖房子的黑中介,嘿嘿),假设你对房价一无所知(比方说房子是在非洲),那你肯定估算不准。最好就能提供同小区其它房子的报价。没有的话。旁边小区也行;再没有的话,所在区的房子均价也行;还是没有的话,所在城市房子均价也行(在北京有套房和在余杭有套房能一样么),由于你知道,这些信息是有“參考价值”的。其次,估算的时候我们肯定希望提供的信息能尽量详细,由于我们知道房子的朝向。装修好坏,位置(靠近马路还是小区中心)是会影响房子价格的。
有了这些数据。人脑能够“学习”出房价的一个大体情况。由于我们知道同一小区的同一户型,一般价格是几乎相同的(特征相近。目标值-房价也是相近的。不然就没法预測了);房价我们一般按平方算,平方数和房价有“近似”线性的关系。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
这里有一个问题,假设真实模型不是线性的怎么办?所以套用线性回归的时候是须要预判的。不然训练出来的效果肯定不行。这里不必过于深究,后面也会介绍怎么通过预处理数据处理非线性的情况。
除了后者是凸函数,好求解,所以就用平方和? 不是的,单独一个样本纵向比較确实一样,但别漏了式子前面另一个求和符号,这两者的差异体如今样本横向比較的时候,比方如今有两组差值,每组两个样本,第一组绝对值差是1,3,第二组是2,2,绝对值差求和是一样,4=4。
算平方差就不一样了,10 > 8。事实上,x^2求导是2x,这里的意思就是惩处随偏差值线性增大,终于的效果从图上看就是尽可能让直线靠近全部点)
曾经初中、高中课本也有提到怎么求解回归方程,都是按计算器。难怪我一点印象都没有。囧。
。
还以为失忆了
1.gradient descent (梯度下降)a.batch gradient descentb.stochastic gradient descent (上面的变形)2.the normal equations3.Newton method(Fisher scoring)
1.gradient descent algorithm
显然步子不能太大,不然easy扯着蛋(跨一大步之后反而到了更高的点)
2.the normal equations。
(在线性代数的复习课件cs229-linalg会说明。这个式子事实上是把y投影到X)
3.牛顿法
逻辑回归logistic regression
y ∈ {0, 1}. (那h(x)在[0,1]又代表什么呢?呵呵)
注意,这个函数输出值代表“y为1的概率”,再回过头看看,前面y用1和0来表示正反也是有讲究的(讲svn的时候又换成+1。-1),直观上看sigmoid越接近1表示1的概率大,接近0表示0的概率大,另一个好处就是以下算likelihood的时候用式子好表示。
p(x,y) = p(x)* p(y)。
machine learning in practice
这里记录一下关键点。
1.coursera的cost function多除了一个m
2.batch gradient descent和stochastic gradient descent的区别
for iter = 1:num_iters
A = ( X * theta - y )';
theta = theta - 1/m * alpha * ( A * X )';
end
for iter = 1:num_iters
A = ( X * theta - y )';
for j = 1:m
theta = theta - alpha * ( A(1, j) * X(j, :) )';
end
end
。
3.feature scaling的作用是啥?
)假设每一个样本的feature j 乘以10,那算出来的θj除以10不就结果跟原来一样了?我猜不会影响。看一下我们迭代时候的式子
会发现缩放一个feature后,收敛非常困难啊,我仅仅乘以2,原来的代码就输出NaN了。
。我把alpha平方一下 alpha^2。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
改下ex1_muliti.m
X2 = X;
X2(:,2) = X2(:, 2)* 2;
theta2 = pinv(X2' * X2) * X2' * y;
theta2
theta
theta2 =
8.9598e+004
6.9605e+001
-8.7380e+003
theta =
8.9598e+004
1.3921e+002
-8.7380e+003
前面是linear regression,对logistic regression能够改ex2.m也验证下
X2(:,2)= X2(:,2)*2;
[theta2, cost] = fminunc(@(t)(costFunction(t, X2, y)), initial_theta, options);
theta2
theta:
-25.161272
0.206233
0.201470
theta2 =
-25.16127
0.10312
0.20147
附录
cost function的概率解释
cs229 斯坦福机器学习笔记(一)-- 入门与LR模型的更多相关文章
- 【机器学习笔记之五】用ARIMA模型做需求预测用ARIMA模型做需求预测
本文结构: 时间序列分析? 什么是ARIMA? ARIMA数学模型? input,output 是什么? 怎么用?-代码实例 常见问题? 时间序列分析? 时间序列,就是按时间顺序排列的,随时间变化的数 ...
- CS229 斯坦福大学机器学习复习材料(数学基础) - 线性代数
CS229 斯坦福大学机器学习复习材料(数学基础) - 线性代数 线性代数回顾与参考 1 基本概念和符号 1.1 基本符号 2 矩阵乘法 2.1 向量-向量乘法 2.2 矩阵-向量乘法 2.3 矩阵- ...
- 斯坦福机器学习视频笔记 Week1 Linear Regression and Gradient Descent
最近开始学习Coursera上的斯坦福机器学习视频,我是刚刚接触机器学习,对此比较感兴趣:准备将我的学习笔记写下来, 作为我每天学习的签到吧,也希望和各位朋友交流学习. 这一系列的博客,我会不定期的更 ...
- 斯坦福大学Andrew Ng - 机器学习笔记(8) -- 推荐系统 & 大规模机器学习 & 图片文字识别
大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...
- 斯坦福大学Andrew Ng - 机器学习笔记(7) -- 异常检测
大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...
- 斯坦福大学Andrew Ng - 机器学习笔记(6) -- 聚类 & 降维
大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...
- 斯坦福大学Andrew Ng - 机器学习笔记(5) -- 支持向量机(SVM)
大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...
- 斯坦福大学Andrew Ng - 机器学习笔记(4) -- 机器学习算法的选择与评估
大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...
- 斯坦福大学Andrew Ng - 机器学习笔记(3) -- 神经网络模型
大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...
随机推荐
- harbor 仓库搭建
一,介绍 Harbor是一个用于存储Docker镜像的企业级Registry服务. Registry是Dcoker官方的一个私有仓库镜像,可以将本地的镜像打标签进行标记然后push到以Registry ...
- (转)Shell中获取字符串长度的七种方法
Shell中获取字符串长度的七种方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell脚本中很常用,下面 ...
- 解决ios、微信移动端的position: fixed; 支持性不好的问题 && 禁用下拉暴露黑底的功能
解决ios.微信移动端的position: fixed; 支持性不好的问题 在chrome中的多个部分使用了position: fixed之后,都可以正常的布局,但是放在微信上却出现了不能正常显示的问 ...
- zookeeper 编程框架 curator
Curator框架提供了一套高级的API, 简化了ZooKeeper的操作. 它增加了很多使用ZooKeeper开发的特性,可以处理ZooKeeper集群复杂的连接管理和重试机制. 这些特性包括: 自 ...
- ubuntu java开发环境jdk安装
1. 下载JDK6安装包,我的为32位系统所以选择jdk-6u35-linux-i586.bin 下载地址:http://www.oracle.com/technetwork/java/javase/ ...
- Shell脚本检测程序,如果挂了就重启程序
脚本如下: #!/bin/sh #要检查的进程名 PROGRESS_NAME="heihu_server" #----------------------------------- ...
- python 对列表去重,并保持列表原来顺序
mailto = ['cc', 'bbbb', 'afa', 'sss', 'bbbb', 'cc', 'shafa'] addr_to = list(set(mailto)) addr_to.sor ...
- jqGrid -treeGrid 按需加载
Load Rows On Demand (AJAX) 参考:http://www.guriddo.net/demo/treegridjs/
- Java版多人聊天室
server.java import java.io.*; import java.net.*; import java.text.SimpleDateFormat; import java.util ...
- javascript获取后台传来的json
Mvc Razor视图引擎中 <script type="text/javascript"> var _temp = @(new MvcHtmlString(this. ...