2025/03 24

[Machine learning] ML 3주차 공부(Classification? Discriminant Analysis)

Classification 방법 중 Discriminant analysis에 대해 공부한 내용이다. Classify를 하는 방법에는 다음과 같이 2가지 방법이 있다. \(x\)라는 data가 있을 때, 어떤 \(y\) class에 속하는지 확률 분포 \(p(y|x)\)를 예측하는 것이다.Generative Classifier: likelihood인 \(p(x|y)\)와 prior distribution인 \(p(y)\)를 추정하여 posterior distribution인 \(p(y|x)\)를 예측하는 것이다. 여기서 알고자 하는 posterior distribution은 신만이 알고 있는 분포라고도 한다. 예시로 Bayes classifier가 있으며, Discriminant Analysis가 그 방법..

[C++] C++ Standard Library Part 3. Container에 대해 자세히 알아보기

Listlist는 sequence container로, 요소들이 메모리상에 연속적으로 배치되지 않고, non-contiguous 메모리 할당 방식을 사용한다.보통 doubly linked list 형태로 구현돼 있어, 각 노드가 이전 노드와 다음 노드를 가리킨다. 주요 특징은효율적인 insertion 및 deletion: list의 중간, 시작, 끝 어디에서나 insertion, deletion연산이 빠르게 가능하다.Random Access가 불가능하다. 원하는 element에 접근하기 위해서는 순차적으로 접근해야 한다.List-initialization항상 헤더를 포함해야 하고 list의 경우는 include 를 포함해야 한다. vector initialization과 비슷하다. list를 선언할 때,..

Computing 2025.03.20

[C++] C++ Standard Library part2. File I/O streams / Strings / Containers

File I/O Streams 헤더 파일의 ifstream(input file stream) class와 ofstream(output file stream) class를 이용하여 File input과 output을 관리한다.File I/O는 standard I/O와 유사한 점이 많다.File I/O Streams-Readingdata.txt를 읽기 위해 ifstream file객체를 지정한다.std::ifstream file("data.txt");file이 정상적으로 열렸나 판단한다.file.is_open()파일을 line단위로 읽기 위해 getline을 사용한다.std::string line;while (std::getline(file, line)) {std::cout string인 line를 지정하고..

Computing 2025.03.19

[빅데이터 및 지식관리시스템] View에 대해 알아보기

ViewView는 virtual table로 view자체가 데이터를 물리적으로 저장하지 않는다.View는 실제 데이터가 들어 있는 Base Relation(기본 테이블) 위에 정의된다. View에 대해 query를 날리면 DBMS가 내부적으로 Base Relation에 접근하여 결과를 생성한다.CREATE VIEW HighScoreStudents(sid, gpa) AS SELECT S.sid, S.gpa FROM Students S WHERE S.gpa >3.5;HighScoreStudents라는 View를 생성한다. 구체적으로 S.gpa > 3.5일 경우에 대해 S.sid, S.gpa column을 보여준다. View에 query를 날리는 과정을 살펴보자.다음과 같이 query를 날렸다 하자.SELEC..

Computing 2025.03.18

[C] Memory model(Stack vs Heap)

Stackaddresse가 낮아지는 방향으로 저장한다.Complie에 의해서 allocate되고 deallocate된다.함수 내에서 사용하는 local variables에 접근할 때 사용한다. 빠른 속도로 처리되며, 메모리 내부에 작은 빈공간이 생기지 않아 효율적이게 사용한다.Heap메모리를 동적으로 할당한다. 실행시간에 메모리의 크기나 필요성이 결정된다.사용자(programmer)에 의해 allocate되고 deallocate된다.Data들은 주로 Pointer를 통해 접근된다.느린 속도로 처리되며, 메모리 내부에 틈이 생길 수있어 비효율적이다.Dynamic Memory Allocation in C#include int *ptr = malloc(sizeof(int));malloc을 사용하기 위해서 헤..

Computing 2025.03.17

[빅데이터 및 지식관리시스템] Relational Data Model/Database 알아보기

What is (Relational) Data Model?Relational database를 위한 이론적인 개념이다.relation, attribute, tuble, key 등으로 구성되어 다음과 같은 특징을 가진다.Structure: DDL(Data definition language)를 사용하여 데이터 베이스 구조를 정의한다.(테이블 생성, 수정, 삭제를 수행하는 SQL언어 같은 거)CREATE TABLE Students(sid: CHAR(20),name: CHAR(20),login: CHAR(10),age: INTEGER, gpa: REAL)Operations: DML(Data Manipulation language)를 사용하여 데이터를 관리한다.(삽입, 수정, 삭제, 조회 등)INSERT INT..

Computing 2025.03.15

[빅데이터 및 지식관리시스템] DBMS와 level of abstraction에 대해 알아보기

DBMS(Database Management System)란?데이터베이스는 매우 크고 통합된 데이터 모음으로 이를 관리하고 저장하는 소프트웨어 패키지이다.real world의 개체 Entity와 그들 간의 관계 Relationship을 모델링하는 것이다.파일시스템과 다른 점은 다음과 같다.Data IndependenceConcurrency Control: 다수의 사용자가 동시에 데이터를 조작할 때, 데이터의 정합성을 유지하게 한다.Crash Recovery: 전원 장애, 디스크 오류등으로 인한 데이터 손실이 발생하는 경우, 복구를 할 수 있도록 한다.Security and access control: 데이터의 기밀성과 무결성을 보장하기 위해 다양한 보안 기능을 제공한다.(인증, 권한관리, 암호화 등)데이..

Computing 2025.03.14

[Machine learning] Classification? Logistic Regression? 에 대한 완전 정리

Classification?Classification은 입력 \(X\)에 대해 Qualitive response를 확률적으로 예측하는 것이다.앞서 공부한 linear regression은 feature space(predictor)에서 qualitive variable을 다뤘다면 classification에서는 response space에서 qualitive variable을 다루는 것이라 할 수 있다. Classification은 단순히 정확히 맞추고 분류하는 작업으로 해석하는 것보다도 좀 더 확률적으로 접근할 필요가 있다.다음과 같은 예시를 봐보자.파란색 원이 연체를 하지 않은 것(default=no)이고 빨간 십자가 연체를 한 것(default=yes)이다.Balance(잔액)이 많을수록 더 연체를..

[C++] C++ Standard Library part1. I/O streams

My First C++ Program#include int main(void) {std::cout C++ 소스 코드 파일을 하기 실행 가능한 파일로 변환하기 위해 다음과 같이 적는다.$ g++ helloC++.cpp –o helloC++ -std=c++20이 명령어를 분석해 보면 g++: C++컴파일러를 실행한다.helloC++. cpp -o helloC++: helloC++. cpp 소스코드를 helloC++로 출력파일을 지정한다.-std=c++20: C++20 표준을 사용하여 컴파일한다.#include int main(void){ printf("Hello C!\n"); return 0;}C++소스코드와 동일한 기능을 하는 C코드이다.둘을 비교해 보면header file: stdio.h vs..

Computing 2025.03.12

[Machine learning] ML 2주차 공부(Linear Regression의 모든 것 2)

Linear Regression의 모든 것 1에서는 scalar의 형태로 아주 기초적인 부분을 공부했다면 이번글은 Linear Regression에 대해 더 자세하게 공부한 내용이다. linear regression에서 우리가 구해야 할 것은 coefficient의 추정치인데, 이는 RSS가 최솟값이 되게 하는 값이다.scalar form이 아닌 벡터 form으로 보면 다음과 같다.$$ \mathrm{RSS} \;=\; (y - X\beta)^\top (y - X\beta) \;=\; y^\top y \;-\; \beta^\top X^\top y \;-\; y^\top X \beta \;+\; \beta^\top X^\top X \beta $$이후 \(\beta^\top\)에 대하여 미분하고 \(\bet..