「R에 의한 기계 학습」의 공부 이력(4)
R에 의한 기계 학습
(소프트웨어 품질 기술자를 위한) 데이터 분석 연구회에서 서적 『R에 의한 기계 학습(Machine Learning with R)』을 사용하여 기계 학습을 배운다.
htps //w w. 아마존. 이. jp/dp/4798145114/
제6장 수치 데이터 예측 - 회귀법
용어
용어
challenger.csv 분석
데이터 설명
challenger.csv의 distress_ct(O링의 이상수)는, 순서 척도에 가까운 분포를 나타내고, 단회귀 분석의 목적 변수로서는, 좋지 않을지도.
산점도
> launch <- read_csv("challenger.csv")
Parsed with column specification:
cols(
distress_ct = col_double(),
temperature = col_double(),
field_check_pressure = col_double(),
flight_num = col_double()
)
> plot(launch)
산점도를 보면 temperature와 distress_ct 사이에 어쩐지 상관이 있는 것처럼 보인다.
상관 계수
상관 계수를 구해 본다.
> cor(launch$temperature, launch$distress_ct)
[1] -0.5111264
상관 계수의 사용법·주의점
htps : // 당연히. 비 · 아 r ゔ ぇ s / 7966
중회귀 분석
직접 만든 회귀 함수 사용
> reg <- function(y, x) {
+ x <- as.matrix(x)
+ x <- cbind(Intercept = 1, x)
+ b <- solve(t(x) %*% x) %*% t(x) %*% y
+ colnames(b) <- "estimate"
+ print(b)
+ }
> reg(y = launch$distress_ct, x = launch[2])
estimate
Intercept 3.69841270
temperature -0.04753968
> reg(y = launch$distress_ct, x = launch[2:4])
estimate
Intercept 3.527093383
temperature -0.051385940
field_check_pressure 0.001757009
flight_num 0.014292843
insurance.csv 분석
산점도 행렬
> install.packages("psych")
> library(psych)
> insurance<- read_csv("insurance.csv")
Parsed with column specification:
cols(
age = col_double(),
sex = col_character(),
bmi = col_double(),
children = col_double(),
smoker = col_character(),
region = col_character(),
expenses = col_double()
)
> pairs.panels(insurance[c("age", "bmi", "children", "expenses")])
빨간 점은 x, y 축의 평균을 나타냅니다.
타원은 상관 타원으로 상관 강도를 시각화합니다.
중회귀 분석
lm() 함수 사용
> ins_model <- lm(expenses ~ ., data = insurance)
> summary(ins_model)
Call:
lm(formula = expenses ~ ., data = insurance)
Residuals:
Min 1Q Median 3Q Max
-11302.7 -2850.9 -979.6 1383.9 29981.7
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -11941.6 987.8 -12.089 < 2e-16 ***
age 256.8 11.9 21.586 < 2e-16 ***
sex[T.male] -131.3 332.9 -0.395 0.693255
bmi 339.3 28.6 11.864 < 2e-16 ***
children 475.7 137.8 3.452 0.000574 ***
smoker[T.yes] 23847.5 413.1 57.723 < 2e-16 ***
region[T.northwest] -352.8 476.3 -0.741 0.458976
region[T.southeast] -1035.6 478.7 -2.163 0.030685 *
region[T.southwest] -959.3 477.9 -2.007 0.044921 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 6062 on 1329 degrees of freedom
Multiple R-squared: 0.7509, Adjusted R-squared: 0.7494
F-statistic: 500.9 on 8 and 1329 DF, p-value: < 2.2e-16
기여율은 Multiple R-squared: 0.7509
p 값은 Pr(>|t|) 및 p-value: < 2.2e-16
R 커맨더로 분석
> challenger <- read_csv("challenger.csv")
> library(Rcmdr)
스크립트
산점도 행렬을 표시하는 R 커맨더 스크립트와 선형 회귀 모델을 만드는 스크립트.
Rcmdr> scatterplotMatrix(~distress_ct+field_check_pressure+flight_num+temperature, regLine=FALSE, smooth=FALSE, diagonal=list(method="density"), data=launch)
Rcmdr> RegModel.1 <- lm(distress_ct~temperature, data=launch)
Rcmdr> summary(RegModel.1)
Call:
lm(formula = distress_ct ~ temperature, data = launch)
Residuals:
Min 1Q Median 3Q Max
-0.5608 -0.3944 -0.0854 0.1056 1.8671
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.69841 1.21951 3.033 0.00633 **
temperature -0.04754 0.01744 -2.725 0.01268 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.5774 on 21 degrees of freedom
Multiple R-squared: 0.2613, Adjusted R-squared: 0.2261
F-statistic: 7.426 on 1 and 21 DF, p-value: 0.01268
GUI
회귀 나무와 모델 나무
whitewines.csv를 회귀 나무로 분석
> install.packages("rpart")
> library(rpart)
> library(rpart.plot)
> wine <- read.csv("whitewines.csv")
> m.rpart <- rpart(quality ~., data = wine_train)
> m.rpart
n= 3750
node), split, n, deviance, yval
* denotes terminal node
1) root 3750 2945.53200 5.870933
2) alcohol< 10.85 2372 1418.86100 5.604975
4) volatile.acidity>=0.2275 1611 821.30730 5.432030
8) volatile.acidity>=0.3025 688 278.97670 5.255814 *
9) volatile.acidity< 0.3025 923 505.04230 5.563380 *
5) volatile.acidity< 0.2275 761 447.36400 5.971091 *
3) alcohol>=10.85 1378 1070.08200 6.328737
6) free.sulfur.dioxide< 10.5 84 95.55952 5.369048 *
7) free.sulfur.dioxide>=10.5 1294 892.13600 6.391036
14) alcohol< 11.76667 629 430.11130 6.173291
28) volatile.acidity>=0.465 11 10.72727 4.545455 *
29) volatile.acidity< 0.465 618 389.71680 6.202265 *
15) alcohol>=11.76667 665 403.99400 6.596992 *
> rpart.plot(m.rpart, digits = 3)
> rpart.plot(m.rpart, digits = 4, fallen.leaves = TRUE, type = 3, extra = 101)
모델 성능 평가
> p.rpart <- predict(m.rpart, wine_test)
> summary(p.rpart)
Min. 1st Qu. Median Mean 3rd Qu. Max.
4.545 5.563 5.971 5.893 6.202 6.597
> summary(wine_test$quality)
Min. 1st Qu. Median Mean 3rd Qu. Max.
3.000 5.000 6.000 5.901 6.000 9.000
> cor(p.rpart, wine_test$quality)
[1] 0.5369525
연습시 문제
*RWeka가 잘 되지 않는다. 책과 다른 결과가 된다.
Reference
이 문제에 관하여(「R에 의한 기계 학습」의 공부 이력(4)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazuo_reve/items/7cb4d7beaf55a8a1e745텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)