Mechine Learning on Coursera 总结

本文概览了机器学习的核心概念,包括监督学习、非监督学习、半监督学习和无监督学习,并详细介绍了线性回归、逻辑回归、神经网络、支持向量机等常见算法。文章还讨论了学习过程的结构、优化方法、不同算法的特点以及在实际应用中的技巧,如正则化、特征缩放等。

机器学习分为监督学习、非监督学习和半监督学习。课程只提到前两个,第三个是监督学习与无监督学习相结合的一种学习方法。它主要考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题。半监督学习对于减少标注代价,提高学习机器性能具有非常重大的实际意义。

监督学习非监督学习其他
Linear Regression
Logistic Regression
Neural Network
SVM
K-Means
Principal Component Analysis(PCA)
Anomaly detection
Recommend System
Big Data

总体来讲,上面提到的机器学习都遵循一个整体结构。设置一个假设,假设参数是需要学习的。提供一个函数,来计算当前参数所产生的误差(cost),然后用某种方式使用误差迭代更新参数。

使用的更新办法有(Batch/Stochastic)Gradient Descent、fminc、Conjugate gradient、BFGS、L-BFGS等,很多octave的大规模优化方法。基本都是需要输入一个误差函数、参数列表,输出参数的最优解。

0.学习算法

Linear Regression
假设误差
结果通过输入feature的线性组合计算得出。是一个实数。
均方误差(欧氏距离)的二分之一(为了求导方便)
如果不能完全用线性组合,可以将非线性如X^2作为一个新feature加入,继续使用Linear Regression。

Logistic Regression
假设误差
首先通过线性方程计算出一个实数z。使用sigmoid函数算出一个[0,1]的值,
视为概率。通过比较概率与阀值,来确定0/1结果。
Sigmoid:
Hypothesis:
表示概率距离,即概率下最短编码长度,没有二分之一。
Logistic Regression可以扩展为多分类系统,即目标结果是一个1多个0的组合。使用One-vs-all,即对每个输出节点计算一次Logistic Regression。此时该节点为1,其他节点统一定义为0.

以上二者都会加入X0===1,来代表常数项。


Neural Network
假设误差
所有输入以数种不同参数计算出数层中间层,最后一层中间层再经过不同参数的同种函数计算出数个目标结果的概率。最终求得分类。
最简单的可以看做是每层的一个节点是一次Logistic Regression,结果是多次Logistic Regression的组合。
多层Logistic Regression Cost Function的组合。

Neural Network由于结构复杂,使用特殊的参数迭代方法,叫Backpropagation。

Backpropagation的思想很简单:Neural Network是有向图,从左到右输入节点通过参数矩阵影响输出结果;从右向左输出误差通过相同的参数矩阵影响输入节点的预期值(为了得到该输出,输入应该有的值)。更新的值仍然是使用偏导数和固定步长。但是为了加快计算使用了链式规则简化计算。,其中.最终形成了Backpropagation的计算公式。具体看代码吧。唯一需要铭记的是,所有更新量都是偏导数。


SVM原理没看懂。但是有代码。


K-means
假设误差
同组的数据距离小于组间距离。所有点与其所属的中心点的平均距离。
其实就是更新中心点和更新分组两步的循环。中心点的选择可能会影响最终结果,可以随机选择+多次计算,使用最好的一次分类。

PCA,一些输入变量存在线性相关性。基本如果使用Linear Regression的话,能够很好的表征整个分布(回归到一个直线)。此时,可以使用输入在直线上的映射点作为其代表。此时输入个数少很多,能够简化计算。需要Feature Scaling。计算使用SVD函数。

Anomaly Detection,默认属性都是相互独立的,而且同属正态分布。所谓异常量就是符合该联合分布的可能性低于某阀值。如果属性不独立,可以使用多元高斯分布。所有参数都使用统计学方法计算出来。

Collaborative Filtering
假设误差
相同行为的用户有相同的使用偏好(feature),
被相近的人打分相近的物品具有相近的属性(feature)。
将X和Theta同时作为变量,进行Linear Regression。


通过用户行为(对物品的打分)同时求出用户和物品的feature权重,二者的feature个数相等。在求出feature之后,可以求出用户或物品间的距离,来进行推荐。X是物品与feature的映射,Theta是用户对feature的评价。由于X和Theta是对称的,所以要进行随机初始化。


1.方法

Batch Gradient Descent,是常用迭代更新方法。思想是求出各个参数对误差值的贡献值(偏导数),使用同样的步长(alpha)同时更新参数集。每次迭代都要读入所有数据。

Stochastic GD,每次使用一个训练用例进行计算,多次不准确的更新会合成一个准确的更新。最终会得到全局最优解附近的一个区域中。

Mini-Batch GD,每次都使用少数几个训练用例组成的子集进行计算。介于上二者之间。

测试,使用训练集(60%)训练参数,交叉检验集(20%)评价不同算法的优劣,测试集(20%)评价最优算法在实际应用中的优劣。

区分bias/variance,以Training Size为自变量,Error为函数plot。Underfitting(variance)时训练集和测试集的error很接近、较大,接近速度很快。Overfitting(bias)时二者的差距较大,接近很慢。

随机初始化,在有很多相同算法施加在相同初始值的变量上时,所有学到的参数都会相同,为了避免这样的情况,需要将初始值设置为较小的(接近零)的值。

2.技巧

Regularization是指当参数Theta过大时,可能会导致overfitting,为了避免overfitting,在误差(cost)中加入惩罚项。惩罚项是.

Feature Scaling是当各个输入的量级相差较大时,需要把他们统一到相同量级上,因为输入值其实是与之对应的参数的权重。

Gradient Checking,使用最基础的偏导数计算方法(y1-y0)/(x1-x0)计算当前偏导数,看是不是与复杂算法(Gradient Descent)计算出的偏导数相近。

Unrolling Parameters,现有计算方法只接受向量作为参数,不接受矩阵。为了计算矩阵参数,可以使用mapping将矩阵映射成向量。

Precision, (true positive/predict positive); Recall, (true positive/actula positive).

Real-number metric,使用单个实数表征算法优劣。如果正负实例数量接近的话,可以直接用正负正确率的平均值;如果差别很大可以用,越大越好。

### 机器学习在建筑能耗分析中的应用 机器学习技术近年来被广泛应用于建筑能耗分析领域,以提高预测精度和优化能源管理效率。以下是一些关于使用机器学习进行建筑能耗分析的实践资料和教程的建议。 #### 数据准备与预处理 在进行建筑能耗分析时,数据的质量和完整性至关重要。通常需要收集建筑物的历史能耗数据、天气数据以及建筑物特征信息。这些数据可以通过传感器网络或公开数据库获取[^1]。例如,美国能源部提供的“Building Performance Database”是一个常用的数据来源。 ```python import pandas as pd # 加载建筑能耗数据 data = pd.read_csv("building_energy_data.csv") # 数据清洗与预处理 data.dropna(inplace=True) # 删除缺失值 data['date'] = pd.to_datetime(data['date']) # 转换日期格式 ``` #### 模型选择与训练 常见的机器学习模型包括线性回归、支持向量机(SVM)、随机森林(Random Forest)以及深度学习模型如神经网络。对于初学者,可以尝试使用Scikit-learn库中的随机森林模型来预测建筑能耗[^2]。 ```python from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import train_test_split # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(data.drop('energy_consumption', axis=1), data['energy_consumption'], test_size=0.2) # 训练随机森林模型 model = RandomForestRegressor(n_estimators=100) model.fit(X_train, y_train) # 预测结果 predictions = model.predict(X_test) ``` #### 结果评估与优化 模型的性能可以通过均方误差(MSE)、平均绝对误差(MAE)等指标进行评估。此外,还可以通过超参数调优进一步提升模型的表现[^3]。 ```python from sklearn.metrics import mean_squared_error, mean_absolute_error # 计算均方误差和平均绝对误差 mse = mean_squared_error(y_test, predictions) mae = mean_absolute_error(y_test, predictions) print(f"Mean Squared Error: {mse}") print(f"Mean Absolute Error: {mae}") ``` #### 实践教程推荐 - **书籍**: “Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow” 提供了丰富的机器学习实践案例,其中包括时间序列预测等内容,适用于建筑能耗分析的学习。 - **在线课程**: Coursera上的“Machine Learning for Energy Systems”课程专门针对能源领域的机器学习应用进行了详细讲解。 - **开源项目**: GitHub上有很多关于建筑能耗分析的开源项目,例如“Building-Energy-Modeling”,提供了完整的代码示例和文档说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值