전체 글
-
ML.NET MSSQL 연동 [5]AI/ML.NET 2020. 12. 1. 18:04
ML.NET 을 건드린지 1주가 지났는데 아직 자동화 밖에 쓰질 못하겠다. 그래서 자동화로 생성된 코드들을 보기로 했다. 시나리오를 선택하고 환경 선택하고 데이터를 선택하고 학습을 하면 가장 정확도가 높은 알고리즘을 찾아준다. 학습시간이 길 수록 정확도가 높아지지만 적은 데이터를 무작정 길게 학습한다고해서 더욱더 좋아지지는 않는다. LightGbmRegression이 제일 높은 정확도를 가진것으로 결과가 나왔다. 이 상태로 코드에서 프로젝트추가를 하면 이렇게 코드가 추가되고 샘프로 코드가 주어진다. 그럼 생성된 프로젝트로 들어가보자. ConsoleApp에 들어가보면 ModelBuilder 클래스가 있다. 여기에서 학습시킨 후에 선택된 알고리즘 LightGbmRegression를 사용해서 모델을 생성하는 ..
-
엑셀 회귀분석 해석AI/기타 2020. 11. 27. 13:49
지난번에 엑셀로 회귀분석하는 것을 하고 다른 짓을 하느라 잊고 있었는데 다시 회귀분석할 것이 생겨서 분석의 해석법을 적어 놓고자 한다. 아래 분석결과 후 중요부분을 빨간색으로 변경해 놓았다. 위와 같이 분석 결과가 나오면 검토를 한다. 1. 유의한 F값 : 0.05미만이어야 통계적으로 유의한 회귀분석의 해석이 가능하다. 2. 조정된 결정계수(Adjusted R-Squared)의 확인 조정된 결정계수 상관관계 정도 ±0.2 미만 상관관계가 거의 없음 ±0.2 ~ ±0.4 미만 낮은 상관관계가 있음 ±0.4 ~ ±0.7 미만 다소 높은 상관관계가 있음 ±0.7 ~ ±0.9 미만 높은 상관관계가 있음 ±0.9 이상 아주 높은 상관관계가 있음 3. 독립변수별 P-값이 0.05미만일 때 회귀분석이 가능하다. 0...
-
MSSQL tempDBDatabase 2020. 11. 26. 13:24
행수가 좀 많은 테이블에 어쩔수 없이 left join을 걸어서 산출물을 만들어야 하는 일이 생겼다. AI관련 데이터 전처리를 하는데 5초당 쌓이는 테이블과 결과 테이블 사이에 매칭을 할 수 있는 값이 없어서 datetime별로 조건을 걸어서 범위로 검색을 해야했다. 좋지 않은 쿼리 문장이기도 하고 left join 을 거니까 하루치 데이터를 산출하는데 실행 계획에서 조단위가 아닌 경단위를 넘어서는 행스캔을 하게 되었다. 해당 DB 서버는 성능이 일반 데스크탑 수준이었고 1시간정도 돌리니 tempDB 용량 부족으로 쿼리가 멈춰버렸다. 설정을 살펴보니 tempDB의 위치가 C드라이브 인데 C에 공간이 없었던것이 이유다. 그래서 tempDB에 대하여 검색을 하기 시작하고 일단 임시방편으로 tempDB의 파일..
-
ML.NET MSSQL 연동 [4]AI/ML.NET 2020. 11. 24. 14:15
찾기가 너무 힘들어서 예제를 찾아보았다. 예제코드에 보기 좋게 설명을 달아 놓았다. 따로따로 보기가 너무 불편해서... 이렇게 보니 금방 이해가 된다. 문제는 파이프라인을 정의 하여 모델을 만들때 사용하는 부분에서 mlContext의 종속 메서드들의 정의가 필요할 것 같다. public MLContext (int? seed = default); 이렇게 정의 되는데 seed 값이 무엇을 의미하는지 알아야 할 것 같았다. MS-DOC에는 아래와 같이 설명되어 있다. seed값에 따라서 모델의 일관성유지가 된다는 소리 같은데 null을 보통 사용해도 상관없을 듯 싶다. 특별한 경우가 아니라면... 더보기 ML.NET 많은 작업은 무작위 데이터 셔플, 무작위 샘플링, 무작위 매개 변수 초기화, 무작위 순열, 무..
-
ML.NET MSSQL 연동 [3]AI/ML.NET 2020. 11. 23. 18:21
앞 포스트에 이어서 일단 간단하게 폼을 하나 만들고 입력, 출력 클래스를 만들어주고 public class Data { public float A { get; set; } public float Target { get; set; } } public class Prediction { [ColumnName("Target")] public float Target { get; set; } } 버튼에 이벤트를 주었다. private void button1_Click(object sender, EventArgs e) { try { //Import or create training data MLContext mlContext = new MLContext(); DatabaseLoader loader = mlContex..